mirror of
https://github.com/louisrubet/rpn
synced 2024-11-17 07:47:50 +01:00
3 KiB
3 KiB
Changelog
- Better parser (now called lexer)
- Use of mpreal instead of raw mpfr for calc on reals
- Use of C++ complex class
- Removing old memory management, efficient but poorly maintainable
- Enhanced code quality and memory usage checks
- Added CircleCI checks: passing functional tests and valgrind mem checks at each pull request
- SonarCloud integration, Sonar way profile
- clang-format now based on google style
- google c++ style guide applied
- c++17
- define guard
- name and order of inclusions
- static and global variables
- common patterns (ex: no static maps or vectors)
- classes (explicit)
- naming:
- file names (.cc .h), types (PascalCase), variables (snake_case), members (trailing _), static const (camelCase begining with k), enum (enum class, values like static const
- consistent comments (//), class comments, functions comments
- cpplint used with a CPPLINT.cfg removing some warnings
- Test files are now markdown (.md) files, tests result are slightly changed
- Delivery as flatpak and snap
- error string are slightly different, althought error codes are still the same
New
«
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
Compatibility is broken on these points
<< <<
input doesn't lead to««»»
but to«<< »
, preventing to eval the real program content1 2+
not allowed anymore, keep1 2 +
, this corrects bad behaviors like3b114
pushing3b11
and4
- complexes are written in the form
(1,2)
instead of(1, 2)
(space is removed) - removed useless
unti
,repea
,whil
(prev.existing for HP28S compatibility) - removed
sqr
function, please usesq
instead (prev.existing for HP28S compatibility) - the binary prefix is always 0b on display, but still can be 0b, 0B, 2b or 2B at input
- the hex prefix is always 0x on display, but still can be 0x, 0X or 16B at input
mant
andxpon
now give binary (and not decimal) significand and exponent, as it is the norm in standard libs (libC, standard C++, mpfr, gmp)dupn
,roll
,rolld
are not leaving anymore their argument in front of the stack in case of errorsto+
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 - signed zero is the sign of zero is subject to change compared to previous version, for example
-3 sqrt
now equals(0.000000,1.732051)
instead of(-0.000000,1.732051)
- removed CtrlC for interrupting a program (considered useless)
Debug
sub
now only accepts boundaries between 1 and the string lengthsto/
behavior: sto/ now correctly stores variable / constant and not constant / variablecosh
now returns the hyp cosinus instead of the hyp sinus (!)