Skip to content

Releases: louisrubet/rpn

rpn v2.5

22 Sep 14:10
Compare
Choose a tag to compare

Added

  • A new command endl, meaning end-line was added for line formatting sake. #269
  • Clang compilation is now warning-free (tested with clang 14.0). #274
  • 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. #267
  • Contrary to what was said in version 2.4, some rpm and deb packages are attached to this delivery, thanks to multi-distro-packager 🤩

Changed

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

Fixed

  • Syntax errors (and other errors) are now shown after the stack, which is much more convenient. #273
  • Warnings shown by clang and C++20 (braces initializers, some bad types, removed dangerous #pragma). #268, #274
  • 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. #277

Full Changelog: v2.4.2...v2.5

rpn v2.4.2

03 Mar 14:15
cd16651
Compare
Choose a tag to compare

Fixed

  • Version string were not correctly shown using flatpak generation. #261

rpn v2.4.1

03 Mar 11:11
d416db3
Compare
Choose a tag to compare

Added

  • A welcome message has been added in interactive mode. #252

Changed

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

Removed

  • The useless function nop has been removed. #255
  • 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. #254

rpn v2.4

01 Mar 09:18
bafc48a
Compare
Choose a tag to compare

rpn v2.4 is a major delivery as it holds a big code refactoring, mainly for maintainance reasons.

Despite significant changes to the code as well as some compatibility losses with version 2.3.2, the major version of the software has not changed, as no major new features have been added.

Here is the extract of the newly added CHANGELOG.md about this version.

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.

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.

rpn v2.3.2

15 Aug 18:15
Compare
Choose a tag to compare

rpn v2.3.2 corrects some bugs of v2.3.1

  • numbers as loop variables: could wrongly exclude boundaries: #112
  • negating a hex number causes a crash: #201

It also add some commands which were planned in v2.3 but were forgotten

  • stack depth is no more marked on each line if rpn is used with arguments: #209
  • Ctrl-C with text already entered should only clear this text and go back to prompt: #146
  • New REAL commands expm and lnp1: #192
  • New commands: date, time, ticks: #8
  • Multiline editing: #147, #154

A quite big code refactoring has also be done: #210, #211, #212, #213, #214

Implemented milestones are Delivery v2.3.2, Enhancements for v2.3.2, Non compliance and debug for v2.3.2 and New commands TIME

A complete test report is provided here: #216

rpn v2.3.1

28 Jul 11:34
Compare
Choose a tag to compare

rpn v2.3.1 corrects some bugs of v2.3

Implemented github milestone is Delivery v2.3.1

A complete test report is provided here: #208

rpn v2.3

10 Feb 13:29
Compare
Choose a tag to compare

rpn v2.3 provides a lot of new functionalities

  • arbitrary bases and reals display

    • user can enter a number in an arbitrary base between 2 and 62, ex 4b123220
    • the new command base displays reals with arbitrary base, ex 4 base
    • the new command bin displays a number in base 2, ex 0b1100101
    • the command hex displays reals in a more convenient way, ex 0xdeadbeefcafe
    • and last, command prec now auto-calculates the number of decimal digits matching to the precision bits
  • commands history

    • commands history is saved in the file $HOME/.rpn_history and has a max of 100 lines
    • the new command history is added
  • a (very light) man page is added in deb, rpm and tgz packages

  • all commands are now case insensitive

  • these LOG, TRIG and TEST commands now apply to complexes too

    • ln log exp log2 alog2 log10 alog10 sinh asinh cosh acosh tanh atanh
    • sin cos tan asin acos atan
    • != == same
  • the commands sqrt, ^ (alias power) apply to negative reals

  • the command log disappeared in v2.2 is re-introduced as an alias of ln

  • del command is now an alias of erase to match HP48 syntax

  • a bug occuring on long outputs has been fixed

rpn is now dynamically linked to mpfr and gmp which are installed in main linux distributions

Implemented github milestones are Enhancements for v2.3, Commands history, Non compliance and debug for v2.3, Delivery v2.3

A complete test report is provided here: #163

rpn v2.2

19 Jun 19:45
Compare
Choose a tag to compare

rpn v2.2 main functionality is complex numbers with

  • entries like rpn> (1,-2.33)
  • and keywords + - * / re im abs arg conj chs neg inv sign sq sqr sqrt ^ r->c c->r r->p p->r

Some evolutions

  • type keyword now
    • consumes stack level 1
    • returns a string result and not a symbol anymore
  • former log keyword is renamed as log10
  • ln log10 log2 keywords now accept negative reals as arguments
  • ip fp floor ceil keywords are added
  • Ctrl-C is caught to go out a running program

Some bug corrections

  • Ctrl-C is caught to go out rpn (regression)

Implemented github milestones are New REAL keywords for v2.2, New object COMPLEX, Enhancements for v2.2, Non compliance and debug for v2.2, Delivery v2.2

A complete test report is provided here: #136

rpn v2.1

12 Jun 21:04
Compare
Choose a tag to compare

rpn v2.1 provides a lot of new keywords

  • New STORE keywords: sto+, sto-, sto*, sto/, sneg, sinv
  • New REAL keywords: fact, minr, maxr, sign, mant, xpon, ip, fp, floor, ceil, min, max
  • New STRING keywords: chr, num, pos, sub, size, +
  • New TEST keywords: >, >=, <, <=, ==, same, != for strings
  • New MEMORY keyword: clusr
  • New BRANCH keywords: iferr, ift, ifte, do, until, while, repeat

rpn now uses CMake for its generation and is provided as RPM, DEB and TGZ packages

A complete test report is provided here: #121

rpn v2.0

28 May 20:57
Compare
Choose a tag to compare

This major release

  • now uses GNU-MPFR (Multiple Precision Floating-point computations) for arbitrary precision calcs
  • adds a bunch of new keywords:
    • general: type
    • stack: roll, rolld, over, dupn, dropn
    • real: chs, prec, round (associated to MPFR), abs, log2, alog2 and aliases exp2, exp10, pow, sqr
  • makes programs correctly inherit from parent programs variables
  • implements stack allocations more efficiently, even very large
  • removes binary type and binary functions 'r->b' and 'b->r'
  • removes useless keyword 'verbose'

Now under LGPL v3