RPL/2 Changelog

New in version 4.1.16

November 29th, 2013
  • OpenMotif is now patched to correctly detect fontconfig.
  • Sqlite and ncurses are updated. rpl.inc is fixed.
  • rpl() now sends arguments to RPL/2 subroutines.
  • The rpl() prototype is fixed (rpl_home is an unsigned char *, not an unsigned char **).
  • GSL is upgraded.
  • A major bug is fixed in the READ intrinsic (it only occurs on Unix devices).

New in version 4.1.15 (September 6th, 2013)

  • RGDL and RGDR (ragged left and ragged right) new intrinsic functions have been added since 4.1.14.
  • A major bug is fixed in the initialization sequence (segfault).
  • It only occurs when RPL/2 is built with a forced localization.
  • EXIT regression is fixed,

New in version 4.1.14 (June 24th, 2013)

  • The number of pipes between process was reduced.
  • Gnuplot was upgraded and patched so that it can be built without a texinfo error.
  • Libiconv was patched to support recent GLIBC (C11) versions.
  • Some race conditions were fixed. Sqlite was upgraded.
  • Major regressions were fixed in the IFERR/END structure and inin evaluation().
  • Local variables were exported to called definitions.
  • All users should upgrade to this release.

New in version 4.1.13 (April 2nd, 2013)

  • This version contains a lot of bugfixes and some minor improvements. All users should upgrade to 4.1.13.

New in version 4.1.12 (February 28th, 2013)

  • A minor bug inrecherche_type() was fixed. { "\"" } was not evaluated as expected as an inner quote was not escaped.
  • A new CIPHER intrinsic was added for performing key generation, decryption, and encryption.
  • CBC-CMAC and HMAC digests were added.
  • A DIGEST intrinsic was added.
  • Signal management on NetBSD was fixed.
  • RPL/CAS auto-configuration is upgraded.

New in version 4.1.11 (December 19th, 2012)

  • Shared and static variables are now stored in a tree.
  • Only giac/src is built in rplcas (giac/Makefile.am is modified).
  • Gnuplot, lapack, giac, units, and ncurses are upgraded.
  • Interprocess capabilities are removed when RPL/2 cannot run its initialization routine to keep operating system as clean as possible.
  • Signal management is rewritten to avoid a strange bug on NetBSD where a signal handler can be called within a special thread and not in the calling thread.
  • A major bug is fixed in STO intrinsic.
  • STO returns an error when it has to create a global variable if intrinsic none (default) is set.

New in version 4.1.10 (October 3rd, 2012)

  • FORALL intrinsic is added.
  • A major bug (deadlock) is fixed in CYCLE that only occurred when CYCLE is called to interrupt a loop from a subroutine within a compiled program.
  • There is a workaround to avoid strange bug on slow networks in READ intrinsic.
  • CRITICAL/END structure is added.
  • When a program enters in a critical section, all other threads of the same process sleep until the program leaves the critical section.

New in version 4.1.9 (August 23rd, 2012)

  • Tools are upgraded (giac, ncurses, sqlite, units, and lapack).
  • LENGTH*(...) format is fixed.
  • Some patches have been added to build RPL/2 on NetBSD.
  • Escaped characters are fixed in READ and WRITE operations.
  • A major bug is fixed in READ intrinsic (on socket) as End Of File condition was randomly caught on slow networks.
  • stdin can now handle espaced characters strings in SYSEVAL.
  • --with-gcc-version is added to the configure script to force the gcc version, as gfortran 4.7 is broken and crashes with a segmentation fault.

New in version 4.1.7 (April 17th, 2012)

  • Some minor bugs are fixed.
  • Double quotes are escaped in INPUT and PROMPT intrinsic functions.
  • An error is returned (instead of a warning) when an unavailable intrinsic function is called.
  • RPL/2 can now be cross compiled until Debian archive generation.
  • All table, vector, and matrix dimensions are now treated as unsigned long.
  • The recherche_type() function is modified to use cached memory.

New in version 4.1.6 (March 1st, 2012)

  • Serial line parameters have been added to OPEN intrinsic.
  • Multi-line input is now allowed.

New in version 4.1.5 (January 18th, 2012)

  • Many bugs have been fixed since the last stable release (**, signal management, and OPEN).
  • A new rule is added to the main Makefile (make debian) to build a deb package.
  • recherche_type() now converts huge integers into real numbers without error.
  • WFSOCK is modified to handle unconnected sockets.
  • REGEX is added. RESTART is added.
  • copie_objet() now returns the same MTX even if a caller waits for a real copy.
  • struct_mutex contains locks owner.

New in version 4.1.4 (November 23rd, 2011)

  • Many compilation warnings have been fixed. Lapack, blas, ncurses, sqlite, and giac have been upgraded.
  • LCASE, UCASE, POS, SIZE, CHR, NUM, and SUB now handle strings with special characters.
  • A major bug has been fixed in INT.
  • Many patches for Android and OS/2 have been committed.
  • configure.ac has been improved to remove operating systems special cases.
  • A major bug has been fixed in DRWS (SDAT was not used).
  • Lists and integer, real, and complex numbers can now be written in unformatted files.
  • The Rplawk makefile has been fixed to avoid a build process bug.

New in version 4.1.3 (September 21st, 2011)

  • All users should upgrade, as signal management is rewritten from scratch.
  • The same subsystem is now used in the Linux, MacOS X, and xBSD ports.
  • The author has only tested RPL/2 on NetBSD, but it should run fine on FreeBSD and OpenBSD.
  • This new signal management should fix all multitask issues on Cygwin.
  • As Lesstif is broken, RPL/2 is now shipped with a patched OpenMotif library.
  • The new intrinsic SREV has been added.

New in version 4.1.1 (July 25th, 2011)

  • This version contains many compilation bugfixes. The configure script is updated and new flags are available: --with-32bits-abi, --with-64bits-abi, and --with-rplcas.
  • Please note that RPL/CAS is not built by default. Lapack is upgraded to 3.3.1.

New in version 4.0.21 (April 6th, 2011)

  • Flag 34 is now used to enable or disable control character evaluation.
  • A major bug was fixed in the P->R intrinsic function when the argument type is complex and degree mode is set.
  • The new L->T and T->L intrinsic functions were added.
  • The OLD filetype was fixed.
  • FLOW socket support was added.
  • FLOW sequential files were added.
  • A new escape sequence was added to handle flow files (\x + hexadecimal code).
  • Known escape sequences are \", \b, \n, \t, \x?? and \\.

New in version 4.0.19 (September 24th, 2010)

  • ptmalloc3 was removed. gnuplot was upgraded to 4.4.1.
  • A deadlock was fixed in signal handlers.
  • A minor bug was fixed in the evaluation() subroutine.
  • AWK has been replaced by rplawk.
  • rplawk is an original awk written by Brian Kernighan, modified to remove yacc code and renamed.
  • Some workarounds have been written to avoid using buggy klibc SystemV IPCS and ABORT now works on eComStation.
  • sqlite was upgraded to 3.7.2.
  • A bug was fixed in software interrupts.
  • A minor bug was fixed in data injection (POKE), which did not work as expected when a child process is protected by NRPROC.

New in version 4.0.18 (August 27th, 2010)

  • New ports are added: OpenBSD and OS/2.
  • SWI now sends SIGCONT to an interrupted process to start it without delay.
  • The random generator is cloned by SPAWN.
  • getaddrinfo() is hard-coded when the host system does not provide getaddrinfo or freeaddrinfo.
  • A major bug is fixed in CHR intrinsic when an obtained character is not printable.
  • ATPOKE and CLRATPOKE new intrinsics are added.
  • A major bug is fixed in the variable creation subroutine.

New in version 4.0.17 (July 14th, 2010)

  • New BACKTRACE intrinsic is added.
  • A major bug is fixed in the SELECT/DEFAULT/END conditional structure.
  • A major bug is fixed in the analyse() subroutine.
  • When evaluation() returned an error in a compiled program, analyse() caught this error twice and randomly aborted with a segmentation error.
  • TRIM and TOKENIZE replace both '\n' and '\t' by regular spaces.
  • The ATEXIT subroutine begins with an implicit CSTOP to avoid multiple stop signals.
  • A memory leak is fixed in ROW+.
  • It only occurred when a row was added to an empty matrix.

New in version 4.0.16 (June 24th, 2010)

  • A minor bug was fixed in the evaluation() subroutine.
  • With this patch, the same program returns the same result with or without the -p flag. Interrupt stacks are now FIFO instead of LIFO.
  • The debug memory allocation subroutines were improved to run in multithreaded programs.
  • Some memory leaks were fixed in process management (SPAWN and DETACH).
  • Version verification was added to shared objects.
  • -D_GNU_SOURCE was added to the ptmalloc3 makefile to avoid a major bug on 64-bit Linux systems (false mremap() prototype).
  • A major bug was fixed in rpliconv.

New in version 4.0.6 (September 29th, 2009)

  • pipe() is overwritten by a macro to avoid a system error.
  • Communications between processes are done with pipes, and these pipes are managed by a specific asynchronous thread.
  • If a script tries to create more threads than the management thread can destroy, you can quickly achieve the maximum number of opened files, and pipe() will return a system error.
  • A major bug (deadlock) is fixed in process and thread management.
  • A major bug is fixed in DET intrinsic (determinant was computed without LU diagonalization).
  • A new SWAPCNTXT intrinsic is added.
  • A minor bug is fixed in Makefile.am (licenses rule).

New in version 4.0.5 (September 10th, 2009)

  • Some bugfixes have been made in process management.
  • CLRERR has been added to erase previous errors.
  • Matrix rank is computed before matrix inversion.
  • File locks have been added to stdin and stdout.
  • stderr is not locked because all messages written by signal handlers are sent to stderr.
  • SVL and SVD, COND and RANK, and DIAG-> and ->DIAG have been added.
  • A major bug has been fixed in DET intrinsic.
  • QR and LQ matrix decompositions have been added.
  • All mathematical exceptions are now signaled by exceptions instead of execution error.
  • A minor bug has been fixed in both CSTOP and RSTOP intrinsics.
  • Named semaphore support has been added.

New in version 4.00 Pre 9 (January 28th, 2009)

  • Many fixes and new features.
  • The tree for 4.0.0 is only open for regressions and the new memory allocator.