--- rpl/ChangeLog 2010/08/22 16:38:34 1.43 +++ rpl/ChangeLog 2016/03/01 21:59:43 1.245 @@ -1,10 +1,421 @@ -* Tue Aug 17 2010 BERTRAND Joël rpl-4.0.18 (RPL/2) +* Tue Mar 01 2016 BERTRAND Joël rpl-4.1.24 (RPL/2) +- tools are upgraded (xpm, openssl, ncurses, sqlite, file); +- BSD sockets options are fixed; +- RPL/2 splash screen is upgraded; +- gmp is upgraded to 6.1.0; +- sys_realloc() is added in library to allow reallocation à la C in RPL/C +programs; +- reallocate function is added to rplexternals.h; +- GET, GETI, LIST-> and TABLE-> now evaluate symbolic constants instead of +return associated fonctions in stack; +- { e } 1 get now returns e and not E. Same fix with infinity and i symbolic +constants ; +- GET is fixed and now evaluates names when names are not protected: +4 'X' sto { X } 1 get returns 4 and not X. Same fix for tables; +- --enable-native flag is added to configure script; +- lapack is upgraded to 3.6.0. +* Thu Nov 26 2015 BERTRAND Joël rpl-4.1.23 (RPL/2) +- Giac is upgraded to 1.2.2 and mpfi is added; +- GSL is upgraded to 2.1; +- major bug is fixed in interruption (mutexes failure); +- minor bug is fixed in evaluation(): +<< 1 'X' sto { X } 'Y' sto 'Y(1)' eval >> returns 1 and +<< 1 'X' sto { 'X' } 'Y' sto 'Y(1)' eval >> only returns 'X'. +Same bugfix for tables; +- 4 'X' sto <[ X ]> returns <[ X ]> in both interpreted and compiled mode. +Before this bugfix, it returned <[ 4 ]> in interpreted mode and <[ X ]> +in compiled mode. +* Wed Sep 16 2015 BERTRAND Joël rpl-4.1.22 (RPL/2) +- socket options are now forced on socket created by WFSOCK to fix 'KEEP ALIVE' +bug; +- sqlite is upgraded; +- major regressions are fixed in compiler; +- gnuplot is upgraded from 5.0.0 to 5.0.1; +- ncurses is upgraded from 5.9 to 6.0 ; +- major bug is fixed in rpl_malloc(). rpl_malloc(0) crashed with segfault. +* Mon Jun 08 2015 BERTRAND Joël rpl-4.1.21 (RPL/2) +- nested function options() is removed from instruction_open() as +LLVM/CLANG does not support this kind of function; +- sqlite and ncurses are upgraded; +- all compilation errors are now printed; +- escaped characters are allowed in LOGGER intrinsic; +- 1 -> Y 'Z' now returns undefined implicit name error. +* Mon Feb 19 2015 BERTRAND Joël rpl-4.1.20 (RPL/2) +- minor bug is fixed in evaluation(). When analyse() is called from +evaluation(), RPL/2 always evaluates compiled expression; +- 1 -> X 'X' can be evaluated ('X' is a name and before last patch, only +algebraic expressions were able to be directly evaluated); +- major regression introduced in 4.1.19 is fixed in parser. +<< 1 -> X << exp >> >> returned syntax error; +- compilation() now returns an error if a definition name contains invalid +characters instead of BUG(); +- zlib is upgraded; +- sqlite and openssl are upgraded; +- new buffercached allocator is added; +- giac is upgraded to 1.1.4; +- Gnuplot is upgraded to 5.0.0. +* Mon Jan 5 2015 BERTRAND Joël rpl-4.1.19 (RPL/2) +- EQV is added in algebraic input and output subroutines; +- ncurses and sqlite have been upgraded with last patches; +- openssl is upgraded to 1.0.1j and Gnuplot is upgraded to 4.6.6; +- expression simplification subsystem is rewritten from scratch. Now, it does +not do anything. Only fonctions to convert algebraic expression to and from +q-tree have been written and successfuly tested; +- EQV intrinsic is added; +- major bug is fixed in XOR intrinsic (erroneous truth table with integer +or real arguments); +- parser is upgraded. Now, it is possible to write <[[[3]]]> or {{5}} (without +space) and [[ 3 4 ]]4 catches error; +- major regression is fixed in recherche_type() (complex type); +- shebang paths are modified to be computed by configure script (NetBSD issue); +- ncurses is upgraded. +* Thu Jul 17 2014 BERTRAND Joël rpl-4.1.18 (RPL/2) +- major regression is fixed in SysV semaphore emulation subsystem (segfault); +- gmp is upgraded; +- ncurses is upgraded; +- empilement_pile_last() is modified to delete argument from current stack if +it cannot save all arguments (to few arguments error _before_ first call +to depilement() by parent routine). +* Wed Apr 23 2014 BERTRAND Joël rpl-4.1.17 (RPL/2) +- semaphores have been removed from s_signaux as POSIX doesn't assure that +semaphores are synchronized between address spaces without msync(); +- sqlite is upgraded; +- OpenSSL is upgraded; +- lapack is upgraded to 3.5.0; +- use of uninitialized variables is avoided in FORALL; +- giac is upgraded; +- units is upgraded; +- OpenSSL, sqlite and gnuplot are upgraded; +- major bug is fixed in both FOR and FORALL (segmentation fault if both +instructions are not followed by a name). +* Fri Nov 28 2013 BERTRAND Joël rpl-4.1.16 (RPL/2) +- OpenMotif is patched to correctly detect fontconfig; +- sqlite and ncurses are patched; +- rpl.inc is fixed; +- rpl() now sends arguments to RPL/2 subroutine; +- rpl() prototype is fixed (rpl_home is an unsigned char * not an unsigned char +**); +- GSL is upgraded; +- major bug is fixed in READ intrinsic (Unix device). +* Fri Sep 6 2013 BERTRAND Joël rpl-4.1.15 (RPL/2) +- RGDL and RGDR (ragged left and ragged right) are added; +- major bug is fixed in initialization (segfault). It only occurs when RPL/2 +is built with a forced localization; +- EXIT regression is fixed. +* Fri Jun 21 2013 BERTRAND Joël rpl-4.1.14 (RPL/2) +- number of pipes between process is reduced; +- gnuplot is upgraded; +- libiconv is patched to be built with recent glibc (C11); +- some race conditions have been fixed; +- sqlite is upgraded; +- Major regression is fixed in IFERR/END structure; +- Major regression is fixed in evaluation(). Local variables were exported +to called definitions. +* Mon Apr 1 2013 BERTRAND Joël rpl-4.1.13 (RPL/2) +- integer overflows have been fixed (NEG, ABS, minus); +- global variables can now be recalled from ATEXIT procedure; +- ATEXIT registered procedure is now executed even if program is stopped by +SIGINT; +- minor bug is fixed in TOKENIZE intrinsic instruction. TOKENIZE did not work on +a copy of input string; +- major bug (segfault) is fixed in liste_variables(). It only occurs +when this function is called with shared variables; +- all internal data are now stored in 64 bits wide integers (even is 32 bits +ABI is selected); +- major bug is fixed in recherche_instruction_suivante(). In some +circumstances, this function can return a spurious error; +- new NATIVE*(*) data format is added. By default, native*(*) is used +to write data without precision loss. It can also be used to write +complex objects like expressions, lists or tables; +- major bug is fixed in formateur(). When INT64_MIN was pushed into stack, +internal value was good but RPL/2 was not able to correctly display +this value. This bug comes from ABS as ABS(INT64_MIN) cannot be represented +in integer. All abs(), fabs() and labs() present in source code have been +checked to avoid this kind of bug; +- unformatted sockets are now usable as unformatted files; +- BACKSPACE now runs on unformatted file; +- major bug is fixed in BACKSPACE that didn't check if '"' characters were +escaped; +- CHARACTER*(n) format now counts escaped characters; +- transliteration is avoid in rpl-core file generation to authorize core +creation even if a transliteration error is caught; +- major bug is fixed in evaluation(). System stack was not correctly +destacked when execution error occurs; +- major bug is fixed in READ (socket interface); +- minor bug is fixed in analyse_flux(). +* Wed Feb 27 2013 BERTRAND Joël rpl-4.1.12 (RPL/2) +- bug is fixed in recherche_type(). { "\"" } was not evaluated as expected +as inner quote was not escaped; +- CIPHER new intrinsic is added to perform key generation, decryption and +encryption; +- CBC-CMAC digest is added; +- HMAC digest is added; +- DIGEST intrinsic is added; +- signal management is fixed to be usable on NetBSD; +- RPL/CAS autoconfiguration is upgraded; +- sqlite, openssl, giac, gmp ave been upgraded; +- SQLITE support is added in SQLQUERY, SQLCONNECT and SQLDISCONNECT. +* Tue Dec 18 2012 BERTRAND Joël rpl-4.1.11 (RPL/2) +- shared variables are now stored in a tree; +- lapack is upgraded to 3.4.2; +- only giac/src is built in rplcas (giac/Makefile.am is modified); +- gnuplot is upgraded to 4.6.1; +- 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; +- sem_wait() has to catch EINTR in thread_surveillance_signaux(); +- signal management is rewritten to avoid a strange bug on NetBSD. On NetBSD, +a signal handler can be called within a special thread and not in the +calling thread; +- static variables are now written in a variables tree; +- 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. +* Mon Oct 1 2012 BERTRAND Joël rpl-4.1.10 (RPL/2) +- FORALL intrinsic is added; +- major bug (deadlock) is fixed in CYCLE. Only occurs when CYCLE is called to +interrupt a loop from a subroutine within a compiled programm; +- workaround to avoid strange bug on slow network is written in READ +intrinsic; +- CRITICAL/END structure is added. When program enters in a critical +section, all other threads of the same process sleep until program leaves +critical section. +* Wed Aug 22 2012 BERTRAND Joël rpl-4.1.9 (RPL/2) +- giac is upgraded to 0.9.8; +- ncurses is patched with last patches; +- Sqlite is upgraded to 3.7.13; +- Units is upgraded to 1.89e; +- Lapack is upgraded to 3.4.1; +- LENGTH*(...) format is fixed; +- some patches have been added to build RPL/2 on NetBSD; +- escaped characters are fixed in READ and WRITE operations; +- major bug is fixed in READ intrinsic (on socket). End of file condition +was randomly caught on slow network; +- stdin can now handle espaced characters strings in SYSEVAL; +- --with-gcc-version is added to configure script to force gcc version as +gfortran 4.7 is broken and crashes with segmentation fault. +* Mon May 21 2012 BERTRAND Joël rpl-4.1.8 (RPL/2) +- POLL now accepts more than one descriptor and returns informations +about pollable descriptors; +- SMPHRTRYDECR now takes timeout value instead of returning when semaphore +cannot by decremented; +- signal handlers are fixed to avoid spurious and very rare deadlocks; +- pari is upgraded; +- force CFLAGS for tools/file (-O2 -g) to avoid mmap() error; +- giac, gmp and mpfr have been upgraded. +* Fri Apr 13 2012 BERTRAND Joël rpl-4.1.7 (RPL/2) +- double quote is escaped in INPUT and PROMPT intrinsic functions; +- error is returned (instead of warning) when unavailable intrinsic function +is called; +- lot of minor bugs have been fixed; +- ncurses and file are patched; +- RPL/2 can now be cross compiled (until .deb archive generation); +- all table, vector and matrix dimensions are now treated as unsigned long; +- recherche_type() function is modified to use cached memory; +- gnuplot is upgraded to 4.6.0. +* Wed Feb 29 2012 BERTRAND Joël rpl-4.1.6 (RPL/2) +- serial line support is added to OPEN (STTY options); +- multiline inputs are allowed: +schroedinger:[~/cvs/build/src] > rpl -is ++++RPL/2 (R) version 4.1.6 (Monday 01/30/12, 10:20:38 CET) ++++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël + ++++Ce logiciel est un logiciel libre sans aucune garantie de fonctionnement. ++++Pour plus de détails, utilisez la commande 'warranty'. + +RPL/2> [[ 1 2 3 ] ++ 001> [ 4 5 6 ] ++ 002> [ 7 8 9 ]] + +1: [[ 1 2 3 ] + [ 4 5 6 ] + [ 7 8 9 ]] +RPL/2> [[ 1 23 ] ++ 001> [ 4 5 6 ]] ++++Erreur : Erreur de syntaxe [19267] + +1: [[ 1 2 3 ] + [ 4 5 6 ] + [ 7 8 9 ]] +RPL/2> [ 1 2 3 ++ 001> annulation +RPL/2> abort + +'annulation' is done by pressing CTRL+g, and abort by CTRL+d on empty line. +* Tue Jan 17 2012 BERTRAND Joël rpl-4.1.5 (RPL/2) +- ncurses, sqlite and openssl have been upgraded; +- major bug is fixed in ** (integer integer **) when first argument is equal to +-1; +- major bug is fixed in signal management. With new signal management, thread or +process were not signalized anymore by POSIX signals. If a thread or a process +was sleeping, it was not interrupted; +- minor bug is fixed in OPEN intrinsic. Now, when a socket is open, its default +adress is set to 0.0.0.0; +- new rule is added to main makefile (make debian) to build deb package; +- new benchmark (Xeon W3520 @ 2.67GHz) : +schroedinger:[~/cvs/bench] > ./bench.rpl ++++RPL/2 (R) version 4.1.5 (Friday 12/02/11, 12:18:23 CET) ++++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël +Number of scalar operations per second and per core : 3809121.83444626 +schroedinger:[~/cvs/bench] > +- recherche_type() did not convert huge integer in real. Now, +18446744072742037448 is converted into real as value cannot be stored in +RPL/2 integer type; +- WFSOCK is modified to handle unconnected sockets; +- REGEX is added; +- RESTART is added (execvp() on main RPL/2 process); +- copie_objet() now returns same MTX (struct_mutex) even if caller wait for +a real copy. Now, struct_mutex contains locks owner. On Linux or Solaris (for +example), it is possible to lock mutex from a thread and unlock the same mutex +from another thread. On NetBSD, system crashes. +* Mon Nov 21 2011 BERTRAND Joël rpl-4.1.4 (RPL/2) +- rplcas/@GIAC@/src/config.h is removed to avoid compilation bug. config.h +written by configure script was overloaded by src/config.h; +- lot of compilation warnings have been fixed; +- lapack and blas have been upgraded; +- ncurses, sqlite and giac have been upgraded; +- LCASE, UCASE, POS and SUB now handle escape characters; +- major bug is fixed in INT (numerical integration was unusable as type +checking condition was always false); +- SIZE, CHR and NUM can handle strings with escape characters; +- lot of patches for Android and OS/2; +- configure.ac is improved to remove operating systems special cases. +- major bug is fixed in DRWS (SDAT was not used...); +- lists, and integer, real and complex numbers can now be written in +unformatted files; +- rplawk makefile is fixed to avoid build process bug. Warning, with these +modifications, sources tree has to be writable. +* Wed Sep 21 2011 BERTRAND Joël rpl-4.1.3 (RPL/2) +- Linux port, MacOS X port and xBSD ports are tested and fully fonctionnal; +- libsigsegv is added; +- OpenMotif is added; +- all internal signal handlers are rewritten to avoid POSIX signal usage +and to be async signal safe; +- SIGSEGV signal handler is rewritten; +- SREV intrinsic is added. +* Tue Aug 9 2011 BERTRAND Joël rpl-4.1.2 (RPL/2) +- I have fixed a lot of bugs in gpp preprocessor (and sent gpp 3.0 to official +gpp developer). Now, macros like + + #define foo foo bar + +is evaluated without recursion. gpp 2.24 crashed on stack overflow. +- LIMIT is added; +- Now, undefined values like 'infinity/infinity' are computed. Result is +undef constant; +- infinity constant is added. +* Sun Jul 24 2011 BERTRAND Joël rpl-4.1.1 (RPL/2) +- VERSION now returns OS type, architecture and ABI; +- configure script is updated. New flags : + --with-32bits-abi + --with-64bits-abi + --with-rplcas +Please not that RPL/CAS is not built by default; +- Lapack is upgraded to 3.3.1. +* Mon Jun 27 2011 BERTRAND Joël rpl-4.1.0 (RPL/2) +- New stable release. +* Fri Jun 22 2011 BERTRAND Joël rpl-4.1.0.prerelease.4 (RPL/2) +- some minor changes have been done in instruction_int() to accept new argument +types; +- interface_cas.cpp now catchs exceptions returned by giac. +* Fri Jun 24 2011 BERTRAND Joël rpl-4.1.0.prerelease.3 (RPL/2) +- INT intrinsic now uses RPLCAS to compute symbolic integration; +- minor bug is fixed in INTRINSIC function. Now, this function gives same +result with ou without -p switch. +* Wed Jun 22 2011 BERTRAND Joël rpl-4.1.0.prerelease.2 (RPL/2) +- memory caching is added to new variable tree. +* Tue Jun 21 2011 BERTRAND Joël rpl-4.1.0.prerelease.1 (RPL/2) +- SPAWN is now usable with new variable management; +- MEM is rewritten; +- PRUSR is rewritten; +- merge 4_0 branch into HEAD; +- CLUSR is rewritten; +- -p flag is now usable; +- New benchmark: +cauchy:[~/rpl/bench] > ./bench.rpl ++++RPL/2 (R) version 4.1.0.prerelease.1 (lundi 20/06/2011, 23:00:45 CEST) ++++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël +Number of scalar operations per second and per core : 2625369.22710792 +* Mon Jun 20 2011 BERTRAND Joël rpl-4.1.0.prerelease.0 (RPL/2) +- New variable management is written. Please note that -p flag does not work +and all multithread/multitask capabilities have been disabled until this +new subsystem shall be validated. +* Thu May 09 2011 BERTRAND Joël rpl-4.0.23 (RPL/2) +- major bug is fixed in STD format (1E7 sq prints 1); +- major bug is fixed in READ intrinsic (socket). This bug was introduced +by a new feature in glibc. +* Thu Apr 14 2011 BERTRAND Joël rpl-4.0.22 (RPL/2) +- by default, RPL/2 uses "NONE" IMPLICIT when it's started in batch mode and +"ALL" IMPLICIT when it runs in interactive mode; +- when "NONE" IMPLICIT is set, STO intrinsic raises an error when it is used +to create or modify a global variable. Now, with "NONE" IMPLICIT, you have +to use SAVE to manipulate global variables; +- replace erroneous TAB by TBL in evaluation() and formateur_fichier() +subroutines; +- fix major memory access violation in evaluation subroutine. Only occurs +when 'X(i,j)' is evaluated on a matrix and when (i,j) points out of bounds; +- fix major bug in evaluation subroutine. 'X(i)' returns execution error +when X was a vector or a table. +* Sun Apr 04 2011 BERTRAND Joël rpl-4.0.21 (RPL/2) +- Gnuplot is upgraded; +- flag 34 is now used to enable or disable control character evaluation; +- major bug is fixed in P->R intrinsic function when argument type is +complex and degree mode is set; +- L->T and T->L are added; +- OLD filetype is fixed; +- FLOW socket support is added; +- FLOW sequential files are added; +- new escape sequence is added to handle flow files (\x + hexadecimal code). +Known escape sequences are \", \b, \n, \t, \x?? and \\. +* Sun Mar 06 2011 BERTRAND Joël rpl-4.0.20 (RPL/2) +- Ncurses is upgraded to 5.8; +- ALARM is fixed by filling isdst field; +- catch ECONNRESET in write intrinsic to return an execution error instead of +system one; +- fix a typo in HELP intrinsic; +- Openssl is upgraded to 1.0.0d, sqlite to 3.7.5 and readline to 6.2; +- Lapack is upgraded to 3.3.0; +- libmtmalloc is now default Solaris allocator; +- ncurses is upgraded; +- regression introduced by 4.0.19 is fixed in signal management. +Interruption1() could be called from itself and raises bus error (on sparc) or +segmentation fault; +- sqlite is upgraded to 3.7.4; +- OpenSSL is upgraded to 1.0.0c; +- syntax error is correctly checked ( (2+,0) does not crash RPL/2 anymore); +- characters are tested in recherche_type() to avoid names like '12+'; +- gnuplot is upgraded to 4.4.2 due to major bugs. +* Thu Sep 23 2010 BERTRAND Joël rpl-4.0.19 (RPL/2) +- due to a very strange bug I've only seen on Solaris, ptmalloc3 is removed. +Solaris libresolv randomly uses ptmalloc3 and system allocator and makes heap +corruption. As internal memory management have been improved, a best fit +allocator like ptmalloc3 is not required anymore; +- gnuplot is upgraded to 4.4.1; +- deadlock is fixed in signal handlers: same mutex was used in standard +subroutines (without protected sections by sigprocmask() or pthread_sigmask()) +and signal handlers. A new signal handler specific mutex is added; +- minor bug is fixed in evaluation() subroutine. In { X 0 PI }, PI is a function +that has to be evaluated by ->NUM; +- rplfile build process is modify to be sure that rplfile is not modified +after rpl build stage (to be sure that rplfile checksum is not modified after +rpl compilation); +- AWK is replaced by rplawk. rplawk is original awk written by Brian Kernighan, +modified to remove yacc code and renamed; +- some workarounds have been written to not use buggy klibc SystemV IPCS. +ABORT now works on eComStation; +- sqlite is upgraded to 3.7.2; +- bug is fixed in software interrupts. When both process have different PID, +parent process was not interrupted if it is not group master process. To fix +this bug, SIGINJECT signal is not sent by child process but by control thread +in parent process; +- minor bug is fixed in data injection (POKE) that does not work as expected +when child process is protected by NRPROC. +* Thu Aug 26 2010 BERTRAND Joël rpl-4.0.18 (RPL/2) - --enable-sysv-sems is added to configure script to use SystemV semaphores functions instead of POSIX functions. This function is disabled or forced on systems that does not provide correct POSIX or SysV semaphores subsystem; - a dirty but not quick patch is written to workaround broken siginfo structures. This patch has been successfully tested. It uses a segment of -shared memory (SysV) and eleven semaphores (Posix or SysV) by process +shared memory (Posix or SysV) and some semaphores (Posix or SysV) by process (Unix PID); - some OpenBSD's hacks are added; - broken siginfo->si_pid field is now checked by configure script; @@ -1516,7 +1927,7 @@ WHILE/REPEAT/END can now be used in an e * Mon Sep 3 2001 BERTRAND Joël rpl-4.00pre1 (RPL/2) - initial public release (GPL). * Thu Apr 2 1998 BERTRAND Joël rpl-4.00pre0 (RPL/2) -- RPL is rewritten from scratch and named RPL/2. +- RPL is rewritten from scratch and renamed RPL/2. #* 1992 BERTRAND Joël rpl-3.02 (RPL-387) #- minor bugfixes. #* 1991 BERTRAND Joël rpl-3.01 (RPL-387)