Diff for /rpl/ChangeLog between versions 1.55 and 1.239

version 1.55, 2010/12/09 09:27:41 version 1.239, 2015/11/26 10:02:07
Line 1 Line 1
 * Thu Dec 09 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.20 (RPL/2)  * Thu Nov 26 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.23 (RPL/2)
 - regression introduced bt 4.0.19 is fixed in signal management.  - Giac is upgraded to 1.2.2 and mpfi is added;
 Interruption1() can be called from itself and raises bus error (on sparc) or  - 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
   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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> rpl-4.1.0 (RPL/2)
   - New stable release.
   * Fri Jun 22 2011 BERTRAND Joël <rpl@systella.fr> 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@systella.fr> 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@systella.fr> rpl-4.1.0.prerelease.2 (RPL/2)
   - memory caching is added to new variable tree.
   * Tue Jun 21 2011 BERTRAND Joël <rpl@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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@systella.fr> 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;  segmentation fault;
 - sqlite is upgraded to 3.7.4;  - sqlite is upgraded to 3.7.4;
 - OpenSSL is upgraded to 1.0.0c;  - OpenSSL is upgraded to 1.0.0c;
 - syntax error is correctly checked ( (2+,0) does not crash RPL/2 anymore);  - syntax error is correctly checked ( (2+,0) does not crash RPL/2 anymore);
 - characters are tested in recherche_type() to avoid names like '12+';  - characters are tested in recherche_type() to avoid names like '12+';
 - sqlite is upgraded to 3.7.3;  
 - gnuplot is upgraded to 4.4.2 due to major bugs.  - gnuplot is upgraded to 4.4.2 due to major bugs.
 * Thu Sep 23 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.19 (RPL/2)  * Thu Sep 23 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.19 (RPL/2)
 - due to a very strange bug I've only seen on Solaris, ptmalloc3 is removed.  - due to a very strange bug I've only seen on Solaris, ptmalloc3 is removed.
Line 1551  WHILE/REPEAT/END can now be used in an e Line 1911  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.55  
changed lines
  Added in v.1.239


CVSweb interface <joel.bertrand@systella.fr>