Diff for /rpl/ChangeLog between versions 1.96 and 1.326

version 1.96, 2011/11/30 17:21:05 version 1.326, 2021/12/16 10:02:47
Line 1 Line 1
 * Mon Nov 21 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.5 (RPL/2)  * Thu Mar 11 2021 BERTRAND Joël <rpl@systella.fr> rpl-4.1.33 (RPL/2)
 - RESTART is added (execve() on main RPL/2 process);  - units is upgraded to 2.21;
   - file is upgraded to 5.41;
   - readline is upgraded to 8.1;
   - GnuPLOT is upgraded to 5.4.2;
   - openssl is upgraded to 1.1.1l;
   - sqlite is upgraded to 3.37.0;
   - ntl is upgraded to 11.5.1;
   - pari is upgraded to 2.13.3;
   - mpfr is upgraded to 4.1.0;
   - gmp is upgraded to 6.2.1:
   - GSL is upgraded to 2.7.1;
   - Giac is upgraded to 1.7.0.
   * Thu Mar 11 2021 BERTRAND Joël <rpl@systella.fr> rpl-4.1.32 (RPL/2)
   - major bug is fixed in EXIT intrinsic (when EXIT is followed by DO or
   WHILE);
   - SYSEVAL is fixed. Now, it is possible to write :
           "awk 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } "
           "{ if (I>0) print; } /<\\/comp>/ { I=I-1; }' " + FICHIER +
           syseval
   
   instead of
           "sh -c \"awk 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } "
           "{ if (I>0) print; } /<\\/comp>/ { I=I-1; }' " + FICHIER +
           syseval
   
   - src/rpl.h is modified as gcc 10.2 triggers an error on UNIX_MAX_PATH;
   - RPLCAS runs now in radian or degree like RPL/2 itself;
   - Lapack is upgraded to 3.9.0;
   - tools and rplcas are upgraded;
   - RAW option is added in STTY parameters;
   - speeds until 1Mbaud are added to serial line;
   - replace fwrite() by write() as fwrite() uses fseek() and triggers error on
   serial line;
   - flag 46 is used to simplify expression. When 46 is set, EVAL,
   ->NUM automatically simplify expressions. DER always simplificates
   expressions;
   - giac is patched to be built with builtin CoCoALib.
   * Thu Oct 31 2019 BERTRAND Joël <rpl@systella.fr> rpl-4.1.31 (RPL/2)
   - RPL/CAS is modified to be built without error by gcc 9.2;
   - /tools are upgraded;
   - OpenSSL is upgraded to 1.1.1d;
   - SYSEVAL now sends signal to child process when RPL/2 catches SIGINT;
   - multithreading support is improved (and some bugs have been fixed);
   - SYSEVAL now sends data to stdin in a slave thread.
   * Sat Feb 2 2019 BERTRAND Joël <rpl@systella.fr> rpl-4.1.30 (RPL/2)
   - major bug is fixed in software interrupts subsystem that tried to
   lock a cleared mutex;
   - deadlock is fixed in SYSEVAL. This intrinsic function entered in
   deadlock if stdout/stderr of spawned subprocess was longer than pipe buffer
   size;
   - segmentation fault is fixed in NEG (on integer matrices);
   - CoCoALib is upgraded to avoid a compilaton failure on 32 bits systems;
   - SST does not enter anymore in called subroutine.
   * Mon Dec 24 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.29 (RPL/2)
   - sqlite, openssl, ncurses, gsl and gnuplot are upgraded;
   - new record type is added. Record is a table extension. Data have been to be
   called by name and not by position:
   
   RPL/2> <[ "key" "value" ]> record
   
   1: |[ <[ "key"
            "value" ]>
         <[ { }
            { } ]> ]|
   
   - records can be used with GET and PUT.
   * Thu May 29 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.29 (RPL/2)
   - backslash can now be used in REGEX intrinsic;
   - LINE*(*) is added to format. Now, it is possible to read and write regular
   sequential files;
   - first table support is added to RPL/C;
   - unEscString() and escString() are added in RPL/C.
   * Thu May 29 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.28 (RPL/2)
   - mise à jour de Lapack en 3.8.0;
   - mise à jour générale de RPL/CAS et des utilitaires dans le répertoire tools;
   - memory corruption is fixed in SPLASH intrinsic;
   - remove multiple module rpl_complex from Fortran sources;
   - ncurses is upgraded;
   - NBRCPUS is added ;
   - splash screen is not centered on screen that contains pointer.
   * Thu Aug 03 2017 BERTRAND Joël <rpl@systella.fr> rpl-4.1.27 (RPL/2)
   - DETACH is fixed and now runs as expected;
   - motif$ is reborned;
   - '->' can now by used in external names;
   - sets$ library is done;
   - new types can be created in external libraries;
   - major bug is fixed in allocation(). When allocation size was null, there
   was a buffer overflow (8 bytes);
   - new types can be created and managed in modules (see modules/sets for
   example).
   * Wed Jun 28 2016 BERTRAND Joël <rpl@systella.fr> rpl-4.1.26 (RPL/2)
   - major bug is fixed in READ (FLOW sockets);
   - Lapack is upgraded to 3.7.0;
   - OpenSSL is upgraded;
   - GSL is upgraded to 2.4;
   - file is upgraded to 5.29;
   - some modifications are done to buld RPL/2 (and modules built with RPL/C) under
   Cygwin (Windows 10, 64 bits);
   - some symbols are removed from executable;
   - readline is upgraded to 7.0;
   - OpenSSL symbols are not exported anymore;
   - gnuplot is upgraded to 5.0.6.
   * Tue Sep 27 2016 BERTRAND Joël <rpl@systella.fr> rpl-4.1.25 (RPL/2)
   - ncurses, file, openssl and sqlite are upgraded;
   - major bug is fixed in DETACH (race condition and dead lock);
   - lot of minor bugs have been fixed in processus management;
   - (p)select() is replaced by poll() due to a strange bug in glibc. pselect()
   returns a erroneous number of readable devices when max file descriptor is
   greater than 1024;
   - tools/file-5.25.diff.gz is fixed (against file-5.25 and not 5.11);
   - OpenSSL is upgraded and new API is used.
   * Tue Mar 01 2016 BERTRAND Joël <rpl@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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  - 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  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  example), it is possible to lock mutex from a thread and unlock the same mutex
Line 1664  WHILE/REPEAT/END can now be used in an e Line 2039  WHILE/REPEAT/END can now be used in an e
 * Mon Sep  3 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1 (RPL/2)  * Mon Sep  3 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1 (RPL/2)
 - initial public release (GPL).  - initial public release (GPL).
 * Thu Apr  2 1998 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre0 (RPL/2)  * Thu Apr  2 1998 BERTRAND Joël <rpl2@systella.fr> 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)  #* 1992 BERTRAND Joël rpl-3.02 (RPL-387)
 #- minor bugfixes.  #- minor bugfixes.
 #* 1991 BERTRAND Joël rpl-3.01 (RPL-387)  #* 1991 BERTRAND Joël rpl-3.01 (RPL-387)

Removed from v.1.96  
changed lines
  Added in v.1.326


CVSweb interface <joel.bertrand@systella.fr>