mirror of
https://github.com/louisrubet/rpn
synced 2024-11-16 07:47:26 +01:00
4.6 KiB
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 of1 2 +
), this corrects bad behaviors like3b114
pushing3b11
and4
. - 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 be0b
,0B
,2b
or2B
. - The hex prefix is always
0x
on display, but the input still can be0x
,0X
or16B
at input. mant
andxpon
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 onlyvalue '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 usesq
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.