rpn/CHANGELOG.md
Louis Rubet c4bad49c59 v2.5
2022-09-22 16:04:59 +02:00

4.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.5] - 2022-09-22

Added

  • A new command endl, meaning end-line was added for line formatting sake.
  • Clang compilation is now warning-free (tested with clang 14.0).
  • Program run now optimized. Programs were parsed then linked at each run ; now the parsing and linking phases are done only once at entry time, avoiding terrible performance loss.

Changed

  • C++20 standard is used instead of C++17. This detected some warnings (now corrected).

Fixed

  • Syntax errors (and other errors) are now shown after the stack, which is much more convenient.
  • Warnings shown by clang and C++20 (braces initializers, some bad types, removed dangerous #pragma).
  • The linenoise-ng submodule version was well set in CMakeLists.txt but not in the submodule, which showed a permanent linenoise-ng modification in git although the version was the good one.

[2.4.2] - 2022-03-03

Fixed

  • Version string were not correctly shown using flatpak generation

[2.4.1] - 2022-03-02

Added

  • A welcome message has been added in interactive mode.

Changed

  • The function date return format is now a string "YYY-MM-DD" (local ISO 8601).
  • The function time return format is now a string "HH:MM:SS" (local ISO 8601).

Removed

  • The useless function nop has been removed.
  • GENERATION.md file has been removed, the generation instructions are in README.md.
  • The useless file TODO.md has been removed.

Fixed

  • The function ticks now returns correctly the current date in µs

[2.4.0] - 2022-02-28

Added

  • Better parser (in fact just a lexer, because that's all it takes).
  • Use of mpreal instead of raw mpfr for calc on reals.
  • Use of the standard C++ complex class.
  • Enhanced code quality and memory usage checks.
  • Added github actions to pass functional tests and valgrind mem checks at each pull request.
  • Applied google c++ style guide
    • points covered are very numerous: c++17, define guard, name and order of inclusions, static and global variables, common patterns, classes, naming conventions etc.
    • cpplint used with a CPPLINT.cfg removing some warnings.
    • clang-format is now based on google style.
  • Test files are now markdown (.md) files, tests result are slightly changed.
  • Delived as flatpak, not as rpm and deb anymore.
  • Automatic version string from git.
  • hex and bin numbers accept floating point input and C99 standard output.
  • « and » are now valid as program delimiters. << and >> are still valid.
  • Entering the sign after the base (ex: 0x-1e2) is allowed.
  • rpn is delivered as flatpak and snap packages to be compatible with a maximum of Linux distribs. rpm and deb are no longer generated.

Changed

Be carefull, compatibility is broken on these points compared to last version 2.3.2:

  • << << input doesn't lead to ««»» but to «<< », preventing to eval the real program content.
  • Making an operation stick to the previous entry is not possible anymore (ex: 1 2+ instead of 1 2 +), this corrects bad behaviors like 3b114 pushing 3b11 and 4.
  • Complexes are written in the form (1,2) instead of (1, 2) (space is removed).
  • The binary prefix is always 0b on display, but the input can be 0b, 0B, 2b or 2B.
  • The hex prefix is always 0x on display, but the input still can be 0x, 0X or 16B at input.
  • mant and xpon now give binary (and not decimal) significand and exponent, as it is the norm in the standard libs (libC, standard C++, mpfr, gmp).
  • dupn, roll, rolld are not leaving anymore their argument in front of the stack in case of error.
  • sto+ sto- sto* sto/ don't accept anymore the syntax 'varname' value stoX, but only value 'varname' stoX, ex: 3 'a' sto*.
  • Incomplete entry (1, is not available anymore.

Removed

  • Removed useless unti, repea, whil (prev. existing for HP28S compatibility).
  • Removed sqr function, please use sq instead (prev. existing for HP28S compatibility).
  • Removed CtrlC for interrupting a program (considered useless).
  • Removed old memory management, efficient but poorly maintainable.
  • Removed man page generation.

Fixed

  • sub now only accepts boundaries between 1 and the string length.
  • sto/ behavior: sto/ now correctly stores variable divided by constant and not constant divided by variable.
  • cosh now returns the hyp cosinus instead of the hyp sinus.