File:  [local] / rpl / ChangeLog
Revision 1.306: download - view: text, annotated - select for diffs - revision graph
Fri Nov 1 09:58:18 2019 UTC (4 years, 4 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Patches pour que giac puisse être compilé avec la version
embarquée de CoCoALib. Modification des makefiles pour forcer
la liaison statique de giac avec les différentes bibliothèques
statiques (le script configure de giac est fautif).

    1: * Thu Oct 31 2019 BERTRAND Joël <rpl@systella.fr> rpl-4.1.32 (RPL/2)
    2: - giac is patched to be built with builtin CoCoALib.
    3: * Thu Oct 31 2019 BERTRAND Joël <rpl@systella.fr> rpl-4.1.31 (RPL/2)
    4: - RPL/CAS is modified to be built without error by gcc 9.2;
    5: - /tools are upgraded;
    6: - OpenSSL is upgraded to 1.1.1d;
    7: - SYSEVAL now sends signal to child process when RPL/2 catches SIGINT;
    8: - multithreading support is improved (and some bugs have been fixed);
    9: - SYSEVAL now sends data to stdin in a slave thread.
   10: * Sat Feb 2 2019 BERTRAND Joël <rpl@systella.fr> rpl-4.1.30 (RPL/2)
   11: - major bug is fixed in software interrupts subsystem that tried to
   12: lock a cleared mutex;
   13: - deadlock is fixed in SYSEVAL. This intrinsic function entered in
   14: deadlock if stdout/stderr of spawned subprocess was longer than pipe buffer
   15: size;
   16: - segmentation fault is fixed in NEG (on integer matrices);
   17: - CoCoALib is upgraded to avoid a compilaton failure on 32 bits systems;
   18: - SST does not enter anymore in called subroutine.
   19: * Mon Dec 24 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.29 (RPL/2)
   20: - sqlite, openssl, ncurses, gsl and gnuplot are upgraded;
   21: - new record type is added. Record is a table extension. Data have been to be
   22: called by name and not by position:
   23: 
   24: RPL/2> <[ "key" "value" ]> record
   25: 
   26: 1: |[ <[ "key"
   27:          "value" ]>
   28:       <[ { }
   29:          { } ]> ]|
   30: 
   31: - records can be used with GET and PUT.
   32: * Thu May 29 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.29 (RPL/2)
   33: - backslash can now be used in REGEX intrinsic;
   34: - LINE*(*) is added to format. Now, it is possible to read and write regular
   35: sequential files;
   36: - first table support is added to RPL/C;
   37: - unEscString() and escString() are added in RPL/C.
   38: * Thu May 29 2018 BERTRAND Joël <rpl@systella.fr> rpl-4.1.28 (RPL/2)
   39: - mise à jour de Lapack en 3.8.0;
   40: - mise à jour générale de RPL/CAS et des utilitaires dans le répertoire tools;
   41: - memory corruption is fixed in SPLASH intrinsic;
   42: - remove multiple module rpl_complex from Fortran sources;
   43: - ncurses is upgraded;
   44: - NBRCPUS is added ;
   45: - splash screen is not centered on screen that contains pointer.
   46: * Thu Aug 03 2017 BERTRAND Joël <rpl@systella.fr> rpl-4.1.27 (RPL/2)
   47: - DETACH is fixed and now runs as expected;
   48: - motif$ is reborned;
   49: - '->' can now by used in external names;
   50: - sets$ library is done;
   51: - new types can be created in external libraries;
   52: - major bug is fixed in allocation(). When allocation size was null, there
   53: was a buffer overflow (8 bytes);
   54: - new types can be created and managed in modules (see modules/sets for
   55: example).
   56: * Wed Jun 28 2016 BERTRAND Joël <rpl@systella.fr> rpl-4.1.26 (RPL/2)
   57: - major bug is fixed in READ (FLOW sockets);
   58: - Lapack is upgraded to 3.7.0;
   59: - OpenSSL is upgraded;
   60: - GSL is upgraded to 2.4;
   61: - file is upgraded to 5.29;
   62: - some modifications are done to buld RPL/2 (and modules built with RPL/C) under
   63: Cygwin (Windows 10, 64 bits);
   64: - some symbols are removed from executable;
   65: - readline is upgraded to 7.0;
   66: - OpenSSL symbols are not exported anymore;
   67: - gnuplot is upgraded to 5.0.6.
   68: * Tue Sep 27 2016 BERTRAND Joël <rpl@systella.fr> rpl-4.1.25 (RPL/2)
   69: - ncurses, file, openssl and sqlite are upgraded;
   70: - major bug is fixed in DETACH (race condition and dead lock);
   71: - lot of minor bugs have been fixed in processus management;
   72: - (p)select() is replaced by poll() due to a strange bug in glibc. pselect()
   73: returns a erroneous number of readable devices when max file descriptor is
   74: greater than 1024;
   75: - tools/file-5.25.diff.gz is fixed (against file-5.25 and not 5.11);
   76: - OpenSSL is upgraded and new API is used.
   77: * Tue Mar 01 2016 BERTRAND Joël <rpl@systella.fr> rpl-4.1.24 (RPL/2)
   78: - tools are upgraded (xpm, openssl, ncurses, sqlite, file);
   79: - BSD sockets options are fixed;
   80: - RPL/2 splash screen is upgraded;
   81: - gmp is upgraded to 6.1.0;
   82: - sys_realloc() is added in library to allow reallocation à la C in RPL/C
   83: programs;
   84: - reallocate function is added to rplexternals.h;
   85: - GET, GETI, LIST-> and TABLE-> now evaluate symbolic constants instead of
   86: return associated fonctions in stack;
   87: - { e } 1 get now returns e and not E. Same fix with infinity and i symbolic
   88: constants ;
   89: - GET is fixed and now evaluates names when names are not protected:
   90: 4 'X' sto { X } 1 get returns 4 and not X. Same fix for tables;
   91: - --enable-native flag is added to configure script;
   92: - lapack is upgraded to 3.6.0.
   93: * Thu Nov 26 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.23 (RPL/2)
   94: - Giac is upgraded to 1.2.2 and mpfi is added;
   95: - GSL is upgraded to 2.1;
   96: - major bug is fixed in interruption (mutexes failure);
   97: - minor bug is fixed in evaluation():
   98: << 1 'X' sto { X } 'Y' sto 'Y(1)' eval >> returns 1 and
   99: << 1 'X' sto { 'X' } 'Y' sto 'Y(1)' eval >> only returns 'X'.
  100: Same bugfix for tables;
  101: - 4 'X' sto <[ X ]> returns <[ X ]> in both interpreted and compiled mode.
  102: Before this bugfix, it returned <[ 4 ]> in interpreted mode and <[ X ]>
  103: in compiled mode.
  104: * Wed Sep 16 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.22 (RPL/2)
  105: - socket options are now forced on socket created by WFSOCK to fix 'KEEP ALIVE'
  106: bug;
  107: - sqlite is upgraded;
  108: - major regressions are fixed in compiler;
  109: - gnuplot is upgraded from 5.0.0 to 5.0.1;
  110: - ncurses is upgraded from 5.9 to 6.0 ;
  111: - major bug is fixed in rpl_malloc(). rpl_malloc(0) crashed with segfault.
  112: * Mon Jun 08 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.21 (RPL/2)
  113: - nested function options() is removed from instruction_open() as
  114: LLVM/CLANG does not support this kind of function;
  115: - sqlite and ncurses are upgraded;
  116: - all compilation errors are now printed;
  117: - escaped characters are allowed in LOGGER intrinsic;
  118: - 1 -> Y 'Z' now returns undefined implicit name error.
  119: * Mon Feb 19 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.20 (RPL/2)
  120: - minor bug is fixed in evaluation(). When analyse() is called from
  121: evaluation(), RPL/2 always evaluates compiled expression;
  122: - 1 -> X 'X' can be evaluated ('X' is a name and before last patch, only
  123: algebraic expressions were able to be directly evaluated);
  124: - major regression introduced in 4.1.19 is fixed in parser.
  125: << 1 -> X << exp >> >> returned syntax error;
  126: - compilation() now returns an error if a definition name contains invalid
  127: characters instead of BUG();
  128: - zlib is upgraded;
  129: - sqlite and openssl are upgraded;
  130: - new buffercached allocator is added;
  131: - giac is upgraded to 1.1.4;
  132: - Gnuplot is upgraded to 5.0.0.
  133: * Mon Jan 5 2015 BERTRAND Joël <rpl@systella.fr> rpl-4.1.19 (RPL/2)
  134: - EQV is added in algebraic input and output subroutines;
  135: - ncurses and sqlite have been upgraded with last patches;
  136: - openssl is upgraded to 1.0.1j and Gnuplot is upgraded to 4.6.6;
  137: - expression simplification subsystem is rewritten from scratch. Now, it does
  138: not do anything. Only fonctions to convert algebraic expression to and from
  139: q-tree have been written and successfuly tested;
  140: - EQV intrinsic is added;
  141: - major bug is fixed in XOR intrinsic (erroneous truth table with integer
  142: or real arguments);
  143: - parser is upgraded. Now, it is possible to write <[[[3]]]> or {{5}} (without
  144: space) and [[ 3 4 ]]4 catches error;
  145: - major regression is fixed in recherche_type() (complex type);
  146: - shebang paths are modified to be computed by configure script (NetBSD issue);
  147: - ncurses is upgraded.
  148: * Thu Jul 17 2014 BERTRAND Joël <rpl@systella.fr> rpl-4.1.18 (RPL/2)
  149: - major regression is fixed in SysV semaphore emulation subsystem (segfault);
  150: - gmp is upgraded;
  151: - ncurses is upgraded;
  152: - empilement_pile_last() is modified to delete argument from current stack if
  153: it cannot save all arguments (to few arguments error _before_ first call
  154: to depilement() by parent routine).
  155: * Wed Apr 23 2014 BERTRAND Joël <rpl@systella.fr> rpl-4.1.17 (RPL/2)
  156: - semaphores have been removed from s_signaux as POSIX doesn't assure that
  157: semaphores are synchronized between address spaces without msync();
  158: - sqlite is upgraded;
  159: - OpenSSL is upgraded;
  160: - lapack is upgraded to 3.5.0;
  161: - use of uninitialized variables is avoided in FORALL;
  162: - giac is upgraded;
  163: - units is upgraded;
  164: - OpenSSL, sqlite and gnuplot are upgraded;
  165: - major bug is fixed in both FOR and FORALL (segmentation fault if both
  166: instructions are not followed by a name).
  167: * Fri Nov 28 2013 BERTRAND Joël <rpl@systella.fr> rpl-4.1.16 (RPL/2)
  168: - OpenMotif is patched to correctly detect fontconfig;
  169: - sqlite and ncurses are patched;
  170: - rpl.inc is fixed;
  171: - rpl() now sends arguments to RPL/2 subroutine;
  172: - rpl() prototype is fixed (rpl_home is an unsigned char * not an unsigned char
  173: **);
  174: - GSL is upgraded;
  175: - major bug is fixed in READ intrinsic (Unix device).
  176: * Fri Sep 6 2013 BERTRAND Joël <rpl@systella.fr> rpl-4.1.15 (RPL/2)
  177: - RGDL and RGDR (ragged left and ragged right) are added;
  178: - major bug is fixed in initialization (segfault). It only occurs when RPL/2
  179: is built with a forced localization;
  180: - EXIT regression is fixed.
  181: * Fri Jun 21 2013 BERTRAND Joël <rpl@systella.fr> rpl-4.1.14 (RPL/2)
  182: - number of pipes between process is reduced;
  183: - gnuplot is upgraded;
  184: - libiconv is patched to be built with recent glibc (C11);
  185: - some race conditions have been fixed;
  186: - sqlite is upgraded;
  187: - Major regression is fixed in IFERR/END structure;
  188: - Major regression is fixed in evaluation(). Local variables were exported
  189: to called definitions.
  190: * Mon Apr 1 2013 BERTRAND Joël <rpl@systella.fr> rpl-4.1.13 (RPL/2)
  191: - integer overflows have been fixed (NEG, ABS, minus);
  192: - global variables can now be recalled from ATEXIT procedure;
  193: - ATEXIT registered procedure is now executed even if program is stopped by
  194: SIGINT;
  195: - minor bug is fixed in TOKENIZE intrinsic instruction. TOKENIZE did not work on
  196: a copy of input string;
  197: - major bug (segfault) is fixed in liste_variables(). It only occurs
  198: when this function is called with shared variables;
  199: - all internal data are now stored in 64 bits wide integers (even is 32 bits
  200: ABI is selected);
  201: - major bug is fixed in recherche_instruction_suivante(). In some
  202: circumstances, this function can return a spurious error;
  203: - new NATIVE*(*) data format is added. By default, native*(*) is used
  204: to write data without precision loss. It can also be used to write
  205: complex objects like expressions, lists or tables;
  206: - major bug is fixed in formateur(). When INT64_MIN was pushed into stack,
  207: internal value was good but RPL/2 was not able to correctly display
  208: this value. This bug comes from ABS as ABS(INT64_MIN) cannot be represented
  209: in integer. All abs(), fabs() and labs() present in source code have been
  210: checked to avoid this kind of bug;
  211: - unformatted sockets are now usable as unformatted files;
  212: - BACKSPACE now runs on unformatted file;
  213: - major bug is fixed in BACKSPACE that didn't check if '"' characters were
  214: escaped;
  215: - CHARACTER*(n) format now counts escaped characters;
  216: - transliteration is avoid in rpl-core file generation to authorize core
  217: creation even if a transliteration error is caught;
  218: - major bug is fixed in evaluation(). System stack was not correctly
  219: destacked when execution error occurs;
  220: - major bug is fixed in READ (socket interface);
  221: - minor bug is fixed in analyse_flux().
  222: * Wed Feb 27 2013 BERTRAND Joël <rpl@systella.fr> rpl-4.1.12 (RPL/2)
  223: - bug is fixed in recherche_type(). { "\"" } was not evaluated as expected
  224: as inner quote was not escaped;
  225: - CIPHER new intrinsic is added to perform key generation, decryption and
  226: encryption;
  227: - CBC-CMAC digest is added;
  228: - HMAC digest is added;
  229: - DIGEST intrinsic is added;
  230: - signal management is fixed to be usable on NetBSD;
  231: - RPL/CAS autoconfiguration is upgraded;
  232: - sqlite, openssl, giac, gmp ave been upgraded;
  233: - SQLITE support is added in SQLQUERY, SQLCONNECT and SQLDISCONNECT.
  234: * Tue Dec 18 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.11 (RPL/2)
  235: - shared variables are now stored in a tree;
  236: - lapack is upgraded to 3.4.2;
  237: - only giac/src is built in rplcas (giac/Makefile.am is modified);
  238: - gnuplot is upgraded to 4.6.1;
  239: - giac, units and ncurses are upgraded;
  240: - interprocess capabilities are removed when RPL/2 cannot run its initialization
  241: routine to keep operating system as clean as possible;
  242: - sem_wait() has to catch EINTR in thread_surveillance_signaux();
  243: - signal management is rewritten to avoid a strange bug on NetBSD. On NetBSD,
  244: a signal handler can be called within a special thread and not in the
  245: calling thread;
  246: - static variables are now written in a variables tree;
  247: - major bug is fixed in STO intrinsic. STO returns an error when it has
  248: to create a global variable if intrinsic none (default) is set.
  249: * Mon Oct 1 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.10 (RPL/2)
  250: - FORALL intrinsic is added;
  251: - major bug (deadlock) is fixed in CYCLE. Only occurs when CYCLE is called to
  252: interrupt a loop from a subroutine within a compiled programm;
  253: - workaround to avoid strange bug on slow network is written in READ
  254: intrinsic;
  255: - CRITICAL/END structure is added. When program enters in a critical
  256: section, all other threads of the same process sleep until program leaves
  257: critical section.
  258: * Wed Aug 22 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.9 (RPL/2)
  259: - giac is upgraded to 0.9.8;
  260: - ncurses is patched with last patches;
  261: - Sqlite is upgraded to 3.7.13;
  262: - Units is upgraded to 1.89e;
  263: - Lapack is upgraded to 3.4.1;
  264: - LENGTH*(...) format is fixed;
  265: - some patches have been added to build RPL/2 on NetBSD;
  266: - escaped characters are fixed in READ and WRITE operations;
  267: - major bug is fixed in READ intrinsic (on socket). End of file condition
  268: was randomly caught on slow network;
  269: - stdin can now handle espaced characters strings in SYSEVAL;
  270: - --with-gcc-version is added to configure script to force gcc version as
  271: gfortran 4.7 is broken and crashes with segmentation fault.
  272: * Mon May 21 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.8 (RPL/2)
  273: - POLL now accepts more than one descriptor and returns informations
  274: about pollable descriptors;
  275: - SMPHRTRYDECR now takes timeout value instead of returning when semaphore
  276: cannot by decremented;
  277: - signal handlers are fixed to avoid spurious and very rare deadlocks;
  278: - pari is upgraded;
  279: - force CFLAGS for tools/file (-O2 -g) to avoid mmap() error;
  280: - giac, gmp and mpfr have been upgraded.
  281: * Fri Apr 13 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.7 (RPL/2)
  282: - double quote is escaped in INPUT and PROMPT intrinsic functions;
  283: - error is returned (instead of warning) when unavailable intrinsic function
  284: is called;
  285: - lot of minor bugs have been fixed;
  286: - ncurses and file are patched;
  287: - RPL/2 can now be cross compiled (until .deb archive generation);
  288: - all table, vector and matrix dimensions are now treated as unsigned long;
  289: - recherche_type() function is modified to use cached memory;
  290: - gnuplot is upgraded to 4.6.0.
  291: * Wed Feb 29 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.6 (RPL/2)
  292: - serial line support is added to OPEN (STTY options);
  293: - multiline inputs are allowed:
  294: schroedinger:[~/cvs/build/src] > rpl -is
  295: +++RPL/2 (R) version 4.1.6 (Monday 01/30/12, 10:20:38 CET)
  296: +++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël
  297: 
  298: +++Ce logiciel est un logiciel libre sans aucune garantie de fonctionnement.
  299: +++Pour plus de détails, utilisez la commande 'warranty'.
  300: 
  301: RPL/2> [[ 1 2 3 ]
  302: + 001> [ 4 5 6 ]
  303: + 002> [ 7 8 9 ]]
  304: 
  305: 1: [[ 1 2 3 ]
  306:     [ 4 5 6 ]
  307:     [ 7 8 9 ]]
  308: RPL/2> [[ 1 23 ]
  309: + 001> [ 4 5 6 ]]
  310: +++Erreur : Erreur de syntaxe [19267]
  311: 
  312: 1: [[ 1 2 3 ]
  313:     [ 4 5 6 ]
  314:     [ 7 8 9 ]]
  315: RPL/2> [ 1 2 3
  316: + 001> annulation
  317: RPL/2> abort
  318: 
  319: 'annulation' is done by pressing CTRL+g, and abort by CTRL+d on empty line.
  320: * Tue Jan 17 2012 BERTRAND Joël <rpl@systella.fr> rpl-4.1.5 (RPL/2)
  321: - ncurses, sqlite and openssl have been upgraded;
  322: - major bug is fixed in ** (integer integer **) when first argument is equal to
  323: -1;
  324: - major bug is fixed in signal management. With new signal management, thread or
  325: process were not signalized anymore by POSIX signals. If a thread or a process
  326: was sleeping, it was not interrupted;
  327: - minor bug is fixed in OPEN intrinsic. Now, when a socket is open, its default
  328: adress is set to 0.0.0.0;
  329: - new rule is added to main makefile (make debian) to build deb package;
  330: - new benchmark (Xeon W3520 @ 2.67GHz) :
  331: schroedinger:[~/cvs/bench] > ./bench.rpl 
  332: +++RPL/2 (R) version 4.1.5 (Friday 12/02/11, 12:18:23 CET)
  333: +++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël
  334: Number of scalar operations per second and per core : 3809121.83444626
  335: schroedinger:[~/cvs/bench] > 
  336: - recherche_type() did not convert huge integer in real. Now,
  337: 18446744072742037448 is converted into real as value cannot be stored in
  338: RPL/2 integer type;
  339: - WFSOCK is modified to handle unconnected sockets;
  340: - REGEX is added;
  341: - RESTART is added (execvp() on main RPL/2 process);
  342: - copie_objet() now returns same MTX (struct_mutex) even if caller wait for
  343: a real copy. Now, struct_mutex contains locks owner. On Linux or Solaris (for
  344: example), it is possible to lock mutex from a thread and unlock the same mutex
  345: from another thread. On NetBSD, system crashes.
  346: * Mon Nov 21 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.4 (RPL/2)
  347: - rplcas/@GIAC@/src/config.h is removed to avoid compilation bug. config.h
  348: written by configure script was overloaded by src/config.h;
  349: - lot of compilation warnings have been fixed;
  350: - lapack and blas have been upgraded;
  351: - ncurses, sqlite and giac have been upgraded;
  352: - LCASE, UCASE, POS and SUB now handle escape characters;
  353: - major bug is fixed in INT (numerical integration was unusable as type
  354: checking condition was always false);
  355: - SIZE, CHR and NUM can handle strings with escape characters;
  356: - lot of patches for Android and OS/2;
  357: - configure.ac is improved to remove operating systems special cases.
  358: - major bug is fixed in DRWS (SDAT was not used...);
  359: - lists, and integer, real and complex numbers can now be written in
  360: unformatted files;
  361: - rplawk makefile is fixed to avoid build process bug. Warning, with these
  362: modifications, sources tree has to be writable.
  363: * Wed Sep 21 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.3 (RPL/2)
  364: - Linux port, MacOS X port and xBSD ports are tested and fully fonctionnal;
  365: - libsigsegv is added;
  366: - OpenMotif is added;
  367: - all internal signal handlers are rewritten to avoid POSIX signal usage
  368: and to be async signal safe;
  369: - SIGSEGV signal handler is rewritten;
  370: - SREV intrinsic is added.
  371: * Tue Aug 9 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.2 (RPL/2)
  372: - I have fixed a lot of bugs in gpp preprocessor (and sent gpp 3.0 to official
  373: gpp developer). Now, macros like
  374: 
  375:     #define foo foo bar
  376: 
  377: is evaluated without recursion. gpp 2.24 crashed on stack overflow.
  378: - LIMIT is added;
  379: - Now, undefined values like 'infinity/infinity' are computed. Result is
  380: undef constant;
  381: - infinity constant is added.
  382: * Sun Jul 24 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.1 (RPL/2)
  383: - VERSION now returns OS type, architecture and ABI;
  384: - configure script is updated. New flags :
  385:     --with-32bits-abi
  386:     --with-64bits-abi
  387:     --with-rplcas
  388: Please not that RPL/CAS is not built by default;
  389: - Lapack is upgraded to 3.3.1.
  390: * Mon Jun 27 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0 (RPL/2)
  391: - New stable release.
  392: * Fri Jun 22 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0.prerelease.4 (RPL/2)
  393: - some minor changes have been done in instruction_int() to accept new argument
  394: types;
  395: - interface_cas.cpp now catchs exceptions returned by giac.
  396: * Fri Jun 24 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0.prerelease.3 (RPL/2)
  397: - INT intrinsic now uses RPLCAS to compute symbolic integration;
  398: - minor bug is fixed in INTRINSIC function. Now, this function gives same
  399: result with ou without -p switch.
  400: * Wed Jun 22 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0.prerelease.2 (RPL/2)
  401: - memory caching is added to new variable tree.
  402: * Tue Jun 21 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0.prerelease.1 (RPL/2)
  403: - SPAWN is now usable with new variable management;
  404: - MEM is rewritten;
  405: - PRUSR is rewritten;
  406: - merge 4_0 branch into HEAD;
  407: - CLUSR is rewritten;
  408: - -p flag is now usable;
  409: - New benchmark:
  410: cauchy:[~/rpl/bench] > ./bench.rpl 
  411: +++RPL/2 (R) version 4.1.0.prerelease.1 (lundi 20/06/2011, 23:00:45 CEST)
  412: +++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël
  413: Number of scalar operations per second and per core : 2625369.22710792
  414: * Mon Jun 20 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.1.0.prerelease.0 (RPL/2)
  415: - New variable management is written. Please note that -p flag does not work
  416: and all multithread/multitask capabilities have been disabled until this
  417: new subsystem shall be validated.
  418: * Thu May 09 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.0.23 (RPL/2)
  419: - major bug is fixed in STD format (1E7 sq prints 1);
  420: - major bug is fixed in READ intrinsic (socket). This bug was introduced
  421: by a new feature in glibc.
  422: * Thu Apr 14 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.0.22 (RPL/2)
  423: - by default, RPL/2 uses "NONE" IMPLICIT when it's started in batch mode and
  424: "ALL" IMPLICIT when it runs in interactive mode;
  425: - when "NONE" IMPLICIT is set, STO intrinsic raises an error when it is used
  426: to create or modify a global variable. Now, with "NONE" IMPLICIT, you have
  427: to use SAVE to manipulate global variables;
  428: - replace erroneous TAB by TBL in evaluation() and formateur_fichier()
  429: subroutines;
  430: - fix major memory access violation in evaluation subroutine. Only occurs
  431: when 'X(i,j)' is evaluated on a matrix and when (i,j) points out of bounds;
  432: - fix major bug in evaluation subroutine. 'X(i)' returns execution error
  433: when X was a vector or a table.
  434: * Sun Apr 04 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.0.21 (RPL/2)
  435: - Gnuplot is upgraded;
  436: - flag 34 is now used to enable or disable control character evaluation;
  437: - major bug is fixed in P->R intrinsic function when argument type is
  438: complex and degree mode is set;
  439: - L->T and T->L are added;
  440: - OLD filetype is fixed;
  441: - FLOW socket support is added;
  442: - FLOW sequential files are added;
  443: - new escape sequence is added to handle flow files (\x + hexadecimal code).
  444: Known escape sequences are \", \b, \n, \t, \x?? and \\.
  445: * Sun Mar 06 2011 BERTRAND Joël <rpl@systella.fr> rpl-4.0.20 (RPL/2)
  446: - Ncurses is upgraded to 5.8;
  447: - ALARM is fixed by filling isdst field;
  448: - catch ECONNRESET in write intrinsic to return an execution error instead of
  449: system one;
  450: - fix a typo in HELP intrinsic;
  451: - Openssl is upgraded to 1.0.0d, sqlite to 3.7.5 and readline to 6.2;
  452: - Lapack is upgraded to 3.3.0;
  453: - libmtmalloc is now default Solaris allocator;
  454: - ncurses is upgraded;
  455: - regression introduced by 4.0.19 is fixed in signal management.
  456: Interruption1() could be called from itself and raises bus error (on sparc) or
  457: segmentation fault;
  458: - sqlite is upgraded to 3.7.4;
  459: - OpenSSL is upgraded to 1.0.0c;
  460: - syntax error is correctly checked ( (2+,0) does not crash RPL/2 anymore);
  461: - characters are tested in recherche_type() to avoid names like '12+';
  462: - gnuplot is upgraded to 4.4.2 due to major bugs.
  463: * Thu Sep 23 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.19 (RPL/2)
  464: - due to a very strange bug I've only seen on Solaris, ptmalloc3 is removed.
  465: Solaris libresolv randomly uses ptmalloc3 and system allocator and makes heap
  466: corruption. As internal memory management have been improved, a best fit
  467: allocator like ptmalloc3 is not required anymore;
  468: - gnuplot is upgraded to 4.4.1;
  469: - deadlock is fixed in signal handlers: same mutex was used in standard
  470: subroutines (without protected sections by sigprocmask() or pthread_sigmask())
  471: and signal handlers. A new signal handler specific mutex is added;
  472: - minor bug is fixed in evaluation() subroutine. In { X 0 PI }, PI is a function
  473: that has to be evaluated by ->NUM;
  474: - rplfile build process is modify to be sure that rplfile is not modified
  475: after rpl build stage (to be sure that rplfile checksum is not modified after
  476: rpl compilation);
  477: - AWK is replaced by rplawk. rplawk is original awk written by Brian Kernighan,
  478: modified to remove yacc code and renamed;
  479: - some workarounds have been written to not use buggy klibc SystemV IPCS.
  480: ABORT now works on eComStation;
  481: - sqlite is upgraded to 3.7.2;
  482: - bug is fixed in software interrupts. When both process have different PID,
  483: parent process was not interrupted if it is not group master process. To fix
  484: this bug, SIGINJECT signal is not sent by child process but by control thread
  485: in parent process;
  486: - minor bug is fixed in data injection (POKE) that does not work as expected
  487: when child process is protected by NRPROC.
  488: * Thu Aug 26 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.18 (RPL/2)
  489: - --enable-sysv-sems is added to configure script to use SystemV semaphores
  490: functions instead of POSIX functions. This function is disabled or forced on
  491: systems that does not provide correct POSIX or SysV semaphores subsystem;
  492: - a dirty but not quick patch is written to workaround broken siginfo
  493: structures. This patch has been successfully tested. It uses a segment of
  494: shared memory (Posix or SysV) and some semaphores (Posix or SysV) by process
  495: (Unix PID);
  496: - some OpenBSD's hacks are added;
  497: - broken siginfo->si_pid field is now checked by configure script;
  498: - SWI now sends SIGCONT to interrupted process to start interrupt without delay;
  499: - random generator is cloned by SPAWN;
  500: - in transliteration subroutine : '\r' is added after all '\n' in OS/2 port;
  501: - getaddrinfo is hardcoded when host system does not provide getaddrinfo
  502: or freeaddrinfo;
  503: - RPL/2 can now use SystemV semaphores when POSIX semaphores are unavailable;
  504: - major bug is fixed in CHR intrinsic when obtained character is not printable;
  505: - Lapack is upgraded to 3.2.2;
  506: - OS/2 (eComStation 2.0 with EMX 0.9d) support is added;
  507: - TOKENIZE is now able to convert escape sequences;
  508: - ATPOKE and CLRATPOKE new intrinsics are added;
  509: - --enable-full-static configure flag is added. With this flag, mysql and
  510: postgresql libraries are statically linked in rpl executable;
  511: - units Makefile is modified to avoid readline and ncurses usages;
  512: - sqlite is upgraded to 3.7.0.1;
  513: - units is upgraded to 1.88;
  514: - another major bug is fixed in the same variable creation subroutine.
  515: Level 0 and 1 variables adresses were swapped when a global variable masked
  516: a name of RPL/2 routine;
  517: - major bug is fixed in global variable creation subroutine. When a global
  518: variable was created and when a local variable existed with the same name,
  519: computed address of global variable was wrong;
  520: - src/Makefile.am is modified to avoid a bug on several systems. libptmalloc3
  521: is forced in front of all libraries.
  522: * Tue Jul 13 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.17 (RPL/2)
  523: - BACKTRACE intrinsic is added;
  524: - major bug is fixed in SELECT/DEFAULT/END conditional structure. Only occurs
  525: when this structure is included in IFERR/THEN/END structure and when an error is
  526: caught;
  527: - major bug is fixed in analyse() subroutine. When evaluation() returned error
  528: in a compiled program, analyse() caught this error twice and randomly aborted
  529: with a segmentation error;
  530: - TRIM and TOKENIZE replace both '\n' and '\t' by regular spaces;
  531: - ATEXIT subroutine begins with an implicit CSTOP to avoid multiple stop
  532: signals;
  533: - memory leak is fixed in ROW+. It only occurs when a row is added to an empty
  534: matrix.
  535: * Thu Jun 24 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.16 (RPL/2)
  536: - minor bug is fixed in evaluation() subroutine. With this patch, same program
  537: returns same result with or without -p flag;
  538: - ncurses 5.7 is upgraded to 20100619;
  539: - openssl is upgraded to 1.0.0a;
  540: - interrupt stacks are now FIFO instead of LIFO;
  541: - debug memory allocation subroutines are improved to run in multithreaded
  542: programs;
  543: - some memory leaks are fixed in process management (SPAWN and DETACH);
  544: - version verification is added to shared objects;
  545: - -D_GNU_SOURCE is added to ptmalloc3 makefile to avoid a major bug on 64 bits
  546: linux (false mremap() prototype);
  547: - major bug is fixed in rpliconv. getc() returns an int, not a unsigned char.
  548: * Sun May 23 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.15 (RPL/2)
  549: - all '-' are replaced by '_' in random generator list;
  550: - minor memory leak is fixed in OPEN intrinsic (socket);
  551: - major bug is fixed in IFERR structure. Only occurs in compiled program;
  552: - major bug is fixed in copie_objet() and liberation(). Only concerns
  553: format in FCH (file descriptor) and SCK (socket descriptor);
  554: - debug routines are improved;
  555: - PROCID is added;
  556: - MEMLOCK and MEMUNLOCK are added. MEMLOCK forces a process to remain in memory
  557: and to not use swap;
  558: - major bug is fixed in sql support. SQL connections were closed in all chield
  559: process;
  560: - standard allocator (malloc()/free()) is replaced by ptmalloc3 due to some bugs
  561: discovered in Solaris thread safe allocators (libmalloc and libumem) that
  562: are first fit class allocators. Solaris libmtmalloc works better and is
  563: a best fit class allocator but its performance is poor than ptmalloc3
  564: performance;
  565: - major bug is fixed in ROW+ intrinsic (new row was not added where it
  566: should);
  567: - minor bugs are fixed in interruptions.c (semaphores values when error is
  568: caught);
  569: - major bug is fixed in STOP intrinsic. STOP was unable to stop any process
  570: created by SPAWN;
  571: - SIGFABORT is added. When process receives SIGFSTOP, it tries to execute
  572: ATEXIT. If it receives SIGFABORT, it does not;
  573: - ONEXIT is renamed in ATEXIT;
  574: - ONEXIT new intrinsic is added.
  575: * Wed Apr 21 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.14 (RPL/2)
  576: - major bug is fixed in static and shared variables initialization subroutine.
  577: This bug only occurs when RPL/2 tries to create a shared or static variable
  578: from an expression;
  579: - major bug is fixed in copie_etat_processus(). A field that contains
  580: information about shared variable was not copied to new processus structure;
  581: - some little memory leaks are fixed in evaluation(), recherche_type() and
  582: sequenceur(). They only occured when syntax error were caught;
  583: - IMPLICIT causes execution error instead system error;
  584: - Hurd support is improved but currently broken because Hurd does not support
  585: SIG_INFO. Work in progress;
  586: - OpenBSD specific support is removed from sources;
  587: - support for Mac OS X and Windows/Cygwin is added.
  588: * Wed Apr 07 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.13 (RPL/2)
  589: - implicit names can now be disabled by new IMPLICIT intrinsic:
  590: cauchy:[~/cvs/test] > cat implicit.rpl
  591: #!/usr/local/bin/rpl -sp
  592: TEST
  593: <<
  594:     "none" implicit
  595: 
  596:     1 -> Z
  597:     <<
  598:         Z disp
  599:         'Z' disp
  600:     >>
  601: 
  602:     'Z' disp
  603:     Z disp // Undefined
  604: >>
  605: 
  606: cauchy:[~/cvs/test] > LANG=C ./implicit.rpl
  607: +++RPL/2 (R) version 4.0.13 (Wednesday 04/07/10, 13:57:44 CEST)
  608: +++Copyright (C) 1989 to 2009, 2010 BERTRAND Joel
  609: 1
  610: 'Z'
  611: 'Z'
  612: +++System : Invalid implicit name [6631]
  613: cauchy:[~/cvs/test] > 
  614: 
  615: RPL/2 aborts because the last Z is undefined and not protected by ''.
  616: By default, implicit is set to "ALL";
  617: - sqlite is upgraded to 3.6.23.1;
  618: - openssl is upgraded to 1.0.0;
  619: - major bug is fixed in RETURN intrinsic. It only occurs in evaluation
  620: subroutine;
  621: - table variable can now be sorted by SORT;
  622: - some regressions between libtool 1.x and 2.x are fixed by workarouds in
  623: Makefiles;
  624: - -a command line option analyzes program (structure and syntax) and
  625: sends preprocessor output to standard output. This option is used by
  626: rplc (RPL/2 compiler).
  627: * Tue Mar 09 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.12 (RPL/2)
  628: - in formatted file, string format returned a variable length string even if
  629: format was 'CHARACTER*(n)' (n characters string). Now, 'CHARACTER*(*)' returns
  630: a variable length string and 'CHARACTER*(n)' a fixed length string;
  631: - keyed access files support is added. Currently, only formatted files are
  632: supported;
  633: - direct access files support is added. Currenlty, these files can only be used
  634: in formatted mode;
  635: - virtual variables are now writte in UTF-8 and all special characters
  636: in string are escaped;
  637: - all formatted files are now converted into UTF-8;
  638: - all file and unix socket names created by RPL/2 are now UTF-8 compliant;
  639: - RPL/2 tools (rpliconv, rplfile, rplpp and rplconvert) are now checked before
  640: each execution (md5 and sha1 sums) to enhance security. If one of these tools
  641: have been modified between RPL/2 compilation and current execution, RPL/2 aborts
  642: on a non recoverable system error;
  643: - openssl and sqlite3 libraries are added;
  644: - RPL_HOME env variable is added. When RPL/2 is called from librpl, this
  645: variable indicates RPL/2 root directory. If it is not set, root path
  646: is given by configure script (d_exec_path);
  647: * Thu Mar 03 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.11 (RPL/2)
  648: - configure.in and makefile.am's are modified to add Cygwin support. Interix
  649: support is broken;
  650: - memory leak is fixed in recherche_type();
  651: - TeX files are now written in UTF-8 even default locale differs;
  652: - minor bug is fixed in ->STR (escaped characters);
  653: - minor bug is fixed in ->Q intrinsic. Resultat is returned as integer
  654: fraction intead real one;
  655: - SIGN now returns (0,0) instead (nan,nan) when complex argument is null;
  656: - Makefile.am are modified to authorize parallel builds;
  657: - minor bug is fixed in CR intrinsic. CR sends a carriage return to printer
  658: and writes warning to standard output;
  659: * Wed Feb 10 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.10 (RPL/2)
  660: - escape codes are now converted in formateur(), not in recherche_type() to
  661: avoid a minor bug in EDIT and VISIT intrinsics;
  662: - minor bug is fixed in formateur_reel();
  663: - file-5.03 is patched to avoid bus error on systems that require memory
  664: alignment;
  665: - minor bug is fixed in evaluation(). Error returned by RPL/C external functions
  666: were able to be avoided by evaluation routine.
  667: * Tue Jan 26 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.9 (RPL/2)
  668: - New benchmark on same hardware than old one :
  669: cauchy:[~/rpl/bench] > ./bench.rpl 
  670: +++RPL/2 (R) version 4.0.9 (samedi 23/01/2010, 18:06:08 CET)
  671: +++Copyright (C) 1989 à 2009, 2010 BERTRAND Joël
  672: Number of scalar operations per second and per core : 2383016
  673: 
  674: - PULPRFL does not abort on BUG() but on execution error;
  675: - TRIM, REPL and TOKENIZE are added;
  676: - sockets options are now set before bind();
  677: - shutdown() is added to all connected sockets;
  678: - minor bug is fixed in SUB intrinsic (segfault when SUB is called with
  679: list argument and inexistant elements).
  680: * Fri Jan 08 2010 BERTRAND Joël <rpl@systella.fr> rpl-4.0.8 (RPL/2)
  681: - minor bug is fixed in DAEMON intrinsic. When a program was daemonized, all
  682: signals sent to main process were not caught because DAEMON did not replace
  683: old pid by new one;
  684: - major bug is fixed in IFERR/THEN/ELSE/END. Only occurs in expression
  685: evaluation when an error is reported from a subroutine in another subroutine.
  686: For example, error was not caught in following program when it is executed with
  687: -p option :
  688:     TEST << iferr TEST2 then end >>
  689:     TEST2 << 0 inv >>
  690: - major bug is fixed in variable management. Some local variables were
  691: seen as global ones;
  692: - major bug is fixed in rplcore. Rplcore entered in dead lock when
  693: script file contains a multibyte character;
  694: - IN intrinsic is added;
  695: - major bug is fixed in SAME intrinsic : << 1 >> DUP SAME and 'E' DUP SAME
  696: returned false ;
  697: - major bug is fixed in RETURN intrinsic. It only occurs in compiled
  698: programs;
  699: - major bug is fixed in NEG intrinsic. NEG did not make a copy of its arguments;
  700: - regression is fixed in compilation(). "\\" was analysed as '"' '\' '\"' and
  701: strings were never closed;
  702: - some bugs have been fixed in file management;
  703: - RPL/2 can now be run on EBCDIC systems (OS/390);
  704: - major bug is fixed in -A command line option (NULL character is missing);
  705: - minor bug is fixed in rpliconv and RECODE intrinsic. All transliterations are
  706: made by blocks (1024 bytes). When an incomplete multibyte sequence is
  707: encountered at end of block, subroutine aborts with an execution error;
  708: - major bug is fixed in OPEN (TCP/IPv4 sockets).
  709: * Mon Nov 30 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.7 (RPL/2)
  710: - DISP now locks stdout;
  711: - rpliconv is added to replace standard iconv provided by operating system.
  712: Indeed, conversion between different encodages requires transliteration
  713: that is not offered by some iconv utility;
  714: - CURRENC and RECODE intrinsics have been written to allow strings conversions;
  715: - bug is fixed in SYSEVAL. When execvp() returns (for example when arg[0] can
  716: not be found), SYSEVAL enters in a dead lock;
  717: - fprintf is replaced by some functions that allow transliterations between
  718: locales;
  719: - '"' can now be used in strings ("\"");
  720: - iconv is called with -c in preprocessor stage. It is done to write
  721: CGI scripts with RPL/2 because locale charset is set to ANSI_X3.4-1968;
  722: - double free is fixed in liberation() (type SQL, only occurs when locale is
  723: set);
  724: - LOCALIZATION, UCASE and LCASE are added;
  725: - major bug is fixed in EXIT intrinsic that was able to return a false
  726: execution error in compiled scripts (only in DO/UNTIL and REPEAT/WHILE loops);
  727: - major bug is fixed in wrapper_instruction_intrinseque(). When intrinsic() was
  728: used in onLoading from shared library, USE was pushed on stack as algebraic
  729: expression;
  730: - libiconv is upgraded to 1.13.1;
  731: - gnuplot is upgraded to 4.2.6;
  732: - gsl is upgraded to 1.13.
  733: * Mon Sep 28 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.6 (RPL/2)
  734: - pipe() is overwritten by a macro to avoid a system error. Communication
  735: between process are done with pipes and these pipes are managed by a
  736: specific asynchrone thread. If a script try to create more threads than
  737: management thread can destroy, you can quickly achieve maximum number of
  738: opened files and pipe() shall return a system error. This macro tries to create
  739: pipes. If pipe() function returns an error, macro waits and retries. If
  740: number of retries is greater than a hardcoded value, macro returns an error;
  741: - major bug (deadlock) is fixed in process and thread management. I hope
  742: this bug shall be the last one;
  743: - major bug is fixed in DET intrinsic (determinant was computed without LU
  744: diagonalization);
  745: - SWAPCNTXT is added;
  746: - minor bug is fixed in Makefile.am (licences rule).
  747: * Wed Sep 09 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.5 (RPL/2)
  748: - some bugfixes are added in process management;
  749: - all process management is rewritten to avoid usage of defunct process
  750: or thread number;
  751: - new major bug is fixed in interruptions.c. Sometimes, when retrait_thread()
  752: was called before a pending interruption5 (SIGFSTOP), signal handler uses
  753: a freed semaphore and corrupts heap;
  754: - CLRERR is added to erase previous errors;
  755: - ERRN and ERRM return exception message and number;
  756: - major bug is fixed in interruptions.c. All signal are now bufferised
  757: when semaphore_liste_threads is null to avoid deadlock. This bug only
  758: occured when STOP was sent to a dying thread or process (when this thread or
  759: process was running retrait_thread());
  760: - matrix rank is computed before matrix inversion;
  761: - file locks are added to stdin and stdout. stderr is not locked because
  762: all messages written by signal handlers are sent to stderr;
  763: - configure.in script is modified to test gcc version and avoid a bug in
  764: gcc older than 4.4;
  765: - some benchmarks have been done :
  766: 
  767: cauchy:[~/rpl/bench] > ./bench.rpl 
  768: +++RPL/2 (R) version 4.0.5 (mardi 04/08/2009, 18:23:07 CEST)
  769: +++Copyright (C) 1989 à 2008, 2009 BERTRAND Joël
  770: Number of scalar operations per second and per core : 2109867
  771: 
  772: Workstation :
  773: cauchy:[~/rpl/build] > uname -a
  774: Linux cauchy 2.6.30.1 #1 SMP PREEMPT Thu Jul 16 09:49:46 2009 x86_64 GNU/Linux
  775: cauchy:[~/rpl/build] > cat /proc/cpuinfo | grep "model name"
  776: model name      : Intel(R) Core(TM)2 Duo CPU     T7500  @ 2.20GHz
  777: model name      : Intel(R) Core(TM)2 Duo CPU     T7500  @ 2.20GHz
  778: cauchy:[~/rpl/build] > gfortran -v 2>&1 | grep "gcc version"
  779: gcc version 4.3.3 (Debian 4.3.3-14) 
  780: cauchy:[~/rpl/build] >
  781: 
  782: - SVL and SVD are added;
  783: - COND and RANK are added;
  784: - DIAG-> and ->DIAG are added;
  785: - major bug is fixed in DET intrinsic. DET is rewritten to avoid usage of
  786: eigenvalues. In a first time, matrix rank is estimated to force determinant
  787: to zero if matrix is rank deficient. If not, a PLU decomposition is done to
  788: compute determinant;
  789: - QR matrix decomposition is added;
  790: - LQ matrix decomposition is added;
  791: - Fortran90 files are rewritten to use Fortran2003 bind(C) statement and
  792: Fortran preprocessor;
  793: - default compilation options are now -Wall -Wextra -Wno-pointer-sign
  794: -Wno-unused-parameter;
  795: - all mathematical exceptions are now signaled by exceptions instead of
  796: execution error;
  797: - minor bug is fixed in both CSTOP and RSTOP intrinsics. Without this fix, you
  798: can call twice CSTOP without RSTOP;
  799: - named semaphore support is added (CRSMPHR, CLRSMPHR, SMHRDECR, SMPHRINCR,
  800: SMPHRTRYDECR, SMPHGETV).
  801: * Fri Jul 24 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.4 (RPL/2)
  802: - semaphore is added in interruptions.c to avoid segmentation fault when STOP
  803: signal is sent to a dying thread. Some mutexes are replaced by semaphores too
  804: to be used in signal handlers;
  805: - major bug (memory corruption) is fixed in COL- intrinsic;
  806: - minor bug is fixed in ALARM and WAIT. These temporisations stopped when a
  807: software interrupt was caught;
  808: - rplpp man page is added.
  809: * Fri Jul 17 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.3 (RPL/2)
  810: - minor bug is fixed in WRITE (SIGPIPE is ignored to catch error without
  811: process termination);
  812: - major bug is fixed in FUSE intrinsic (FUSE kills itself and do not kill
  813: its parent);
  814: - a mutex to protect fork() syscall is added;
  815: - all mutexes are unlocked after fork() in DETACH;
  816: - minor bug (double free corruption) is fixed in CLOSE intrinsic;
  817: - major bug is fixed in lecture_pipe when a nullified list is sent into a pipe;
  818: - WORKDIR intrinsic is added;
  819: - Level 0 variables are shared between all threads without copy. Indeed,
  820: there variables are not modifiable and only contains static user definitions;
  821: - branches prediction is added in THEN, ELSE, ELSEIF and REPEAT intrinsics;
  822: - FORTRAN 77 file management subroutines are rewritten in pure C due to
  823: FORTRAN string management. C/FORTRAN 77 string interfaces are broken
  824: in some cases (gcc/gfortran/libc/OS and arch conjonction);
  825: - a memory leak is fixed in REMOVE intrinsic;
  826: - major bug is fixed in MySQL driver (segfault due to a bug in mysql_init()
  827: and due to a libmysqlclient that is not thread safe).
  828: * Wen Jun 10 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.2 (RPL/2)
  829: - new enhanced allocator is written for regular variables, static variables and
  830: shared variables;
  831: - major bug is fixed in src/interruptions.c. This file did not compile
  832: when SQL support was not enabled;
  833: - new allocator is written for system stack and last stack;
  834: - --enable-profile flag is added to configure script. When this flag is
  835: enabled, rpl is built with -pg option;
  836: - SIGFSTP (from Solaris'TERMIO) is caught. On Solaris 10, all process receive
  837: SIGFSTP (with a nullified siginfo structure) instead of SIGHUP when control
  838: process is killed;
  839: - abs() macro is modified to avoid multiple evaluation. Your C compiler has to
  840: know typeof() intrinsic function. This function is not standard but exists
  841: under Sun Studio, gcc, and maybe some others compilers. If this function does
  842: not exist on your compiler, you can change its definition by old one in
  843: src/rpl.h;
  844: - fflush() can now be interrupted by signal (SunOS);
  845: - fflush(NULL) is called before all fork() occurrences;
  846: - generators returned by RDGN help are sorted;
  847: - Lapack is now 3.2.1.
  848: * Mon May 18 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.1 (RPL/2)
  849: - bug is fixed in src/generateurs_aleatoires.awk. It only occurs when RPL/2 is
  850: built under Solaris.
  851: * Wed May 5 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0 (RPL/2)
  852: - major bug is fixed in matrix inversion (due to an inversion between pointer
  853: and object copies);
  854: - RDGN is added to use some different random number generators. See HELP RDGN;
  855: - code analysis is rewritten from scratch to be more efficient and mode
  856: expandable;
  857: - minor bug (segfault in interruption1) is fixed. It only occurs on Solaris
  858: that can returns a nullified siginfo pointer when SIGINT is sent by kernel
  859: keyboard driver;
  860: - gnuplot is now 4.2.5;
  861: - readline is upgraded to 6.0;
  862: - file is upgraded to 5.0;
  863: - Signal handlers are rewritten to send signal to main thread when a signal
  864: is send from an external process;
  865: - configure.in is modified to avoid a libc bug on Solaris (free() can enter in
  866: deadlock when a huge amount of threads is launched);
  867: - minor bug is fixed in boath START and FOR intrinsic. Only occurs when
  868: arguments types are unsupported;
  869: - PLOT instrinsic is added (usage: LINE and MARK do not draw anything. All
  870: data are buffered. PLOT is used to draw these objects.);
  871: - MARK instrinsic is added;
  872: - new allocator mechanism is written;
  873: - some regression bugs have been fixed, some memory leaks too.
  874: * Wed Jan 28 2009 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.9 (RPL/2)
  875: - an estimation of future stack elements is added to avoid some costly memory
  876: allocations. This function has a positive impact on execution speed;
  877: - PSHPRFL and PULPRFL have been added;
  878: - RPL/2 can be built on Solaris 64 bits with some minor scripts alterations.
  879: See README for more explanations;
  880: - MTXSTATUS intrinsic is added;
  881: - YIELD intrinsic is added;
  882: - ERRM is fixed. In some cases, ERRM uses some uninitialized pointers;
  883: - SHARED and PRIVATE intrinsics have been added. A shared variable is a
  884: static variable that is shared by multiple threads;
  885: - '->' intrinsic is improved. All object copies have been avoided;
  886: - -n flag is added to catch HUP signal. stderr and stdout are redirected
  887: to a file, stdin is redirected to /dev/null when control process is killed;
  888: - a mutex is added to each object (before this modification,
  889: RPL/2 used a global mutex and performances in multithreaded programs were very
  890: poor.);
  891: - ALARM is now interruptible;
  892: - both PUT and PUTI intrinsics are improved and do not copy list and table
  893: when nombre_occurrences == 1;
  894: - COPY intrinsic is added. Argument (that can be pointed from some objects)
  895: is replaced by a new copy of itself;
  896: - memory leak is fixed in sequenceur(). It only occurs when an execution error
  897: is caught from interactive mode;
  898: - mutexes have been added (CRMTX, CLRMTX, MTXLOCK, MTXUNLOCK);
  899: - new mutex type is added;
  900: - profile statistics have been added. See -P option;
  901: - major bug is fixed in analyse_syntaxique();
  902: - new SQL type is added;
  903: - due to a trouble in libpq in multithreaded context, SQL intrinsic is split
  904: in three new intrinsics : SQLCONNECT, SQLQUERY and SQLDISCONNECT. Please note
  905: that all programs that worked with old SQL intrinsic can now work with
  906: SQLQUERY. With all new programs, you can open a real connection to databases;
  907: - NRPROC is added. This new intrinsic is used to catch error from child
  908: process. Without NRPROC, any errors returned by child process cause
  909: main process to abort;
  910: - SPAWN is added. This new intrinsic is used to launch a new thread (DETACH
  911: starts a new process). There are no mutexes in RPL/2 because all spawned process
  912: use specific context. Nevertheless, shared variables and associated mutexes
  913: should be added;
  914: - -D flag and DAEMONIZE intrinsic have been added;
  915: - REPEAT, THEN, ELSE and ELSEIF intrinsics are rewritten to be more efficient;
  916: - autoconf script is modified to handle mysql and postgresql on non standard
  917: directories;
  918: - -t flag is fixed ('\0' is missing...);
  919: - SWI and SEND pipes have been modified to be more robust on systems where
  920: getpid() can return (pid_t) -1 or (pid_t) -2 value;
  921: - major bug is fixed in REPEAT intrinsic. Only occurs in compiled mode;
  922: - all but jump variables are removed from source. All signal handlers now
  923: use encapsulated variables and signals are caught by thread;
  924: - major bug is discovered in ->LCD. Both LCD-> and ->LCD have been fixed;
  925: - NEWPLANE is added;
  926: - LINE is added;
  927: - DGTIZ is added;
  928: - major bug is fixed in ROW-> intrinsic (comes from new garbage collector);
  929: - lot of multiprocessing related bugs have been fixed; That was a huge work but
  930: it's done. Data integrity is now respected during transmission (POKE, SEND and
  931: SWI);
  932: - ITRACE is added. This intrinsic is only used to debug internal structures and
  933: should not be used in regular programs;
  934: - SWISTATUS is written;
  935: - WFACK is written;
  936: - rplcore files are now able to handle compilation errors;
  937: - rplcore files are now able to handle evaluation and interruption errors;
  938: - SORT can now be used on table;
  939: - tables can now be sent by POKE and SEND instrinsics;
  940: - software interrupts do not inherit IFERR controls;
  941: - LOGGER intrinsic is added;
  942: - All WF* intrinsics but WFSOCK are made interruptible;
  943: - ISWI intrinsic is added. Current interrupt is marked as 'interruptible';
  944: - tables can be used with SAME intrinsic;
  945: - minor bug is fixed in recherche_variable(). Only occurs when an error
  946: is caught;
  947: - external functions can now be used in expressions;
  948: - major bug (deadlock) is fixed in WFPOKE intrinsic;
  949: - some mistakes have been fixed under Solaris;
  950: - major bug is fixed in RETURN intrinsic (only occurs when evaluation and
  951: program modes are mixed);
  952: - major bug (dead lock) is fixed in gestion_processus.c;
  953: - major bug is fixed in WFPROC;
  954: - rplc, rpllink and mkrplso manpages are added;
  955: - rpltags tool and manpage are added;
  956: - WFLOCK is fixed;
  957: - RPL/2 kills now all process on error;
  958: - major bug (segfault) is fixed in REMOVE intrinsic.
  959: * Mon Jul 28 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.8 (RPL/2)
  960: - configure script is modified to check mysql and postgresql libraries
  961: on all standard locations. Tested and works on FreeBSD, Solaris and Linux
  962: Debian;
  963: - Tables are allowed in eval ( <[ 1 ]> 't' sto 't(1)' eval );
  964: - ->TABLE and TABLE-> intrinsics are added;
  965: - major bug is fixed in recherche_type(). Only occurs when rpl executes
  966: precompiled scripts;
  967: - new type is added: table with <[ ]> delimiters:
  968: RPL/2> { 2 3 2 } crtab
  969: 
  970: 1: <[ <[ <[ { }
  971:             { } ]>
  972:          <[ { }
  973:             { } ]>
  974:          <[ { }
  975:             { } ]> ]>
  976:       <[ <[ { }
  977:             { } ]>
  978:          <[ { }
  979:             { } ]>
  980:          <[ { }
  981:             { } ]> ]> ]>
  982: 
  983: CRTAB new intrinsic creates a regular table. By default, all elements are
  984: nullified lists;
  985: - rplexternals.h is modified and improved;
  986: - GNU File (renamed as rplfile) cannot be built due to a bug in libtoolize and
  987: configure script.
  988: * Mon Jun 23 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.7 (RPL/2)
  989: - libiconv is added (iconv library exists on some systems but implemantations
  990: differ and RPL/2 can crash);
  991: - --enable-encoding is added to configure script to force system encoding.
  992: Enconding detection does not work on OpenBSD;
  993: - internal file utility is shipped and used to avoid xBSD file mistakes;
  994: - GSL 1.11 and gnuplot 4.2.3 are now used;
  995: - src/Makefile.am is modified to built RPL/2 ons Solaris 10/sparc;
  996: - all but user's messages are written on stderr;
  997: - DUPCNTXT and DROPCNTXT are added to handle more efficiently contexts;
  998: - SCHED is added. Whit SCHED, you can limit CPU ressource by RPL/2 process;
  999: - FUSE, RFUSE and CLRFUSE have been added;
 1000: - new bug discovered on NetBSD. sigpending() does not return any signal, thus
 1001: DETACH intrinsic enters in a definitive dead lock. I have no idea to write a
 1002: workaround for this major bug. Nevertheless, all others capabilities seems to
 1003: work fine;
 1004: - '->' is modified to return error when program tries to initialiaze two
 1005: variables with the same name like
 1006: 1 0 -> I I << ... >>;
 1007: - CSTOP and RSTOP have been added (catch and release stop signal);
 1008: - CONTINUE is added to continue a pending process halted by SUSPEND;
 1009: - SUSPEND is modified to be stopped by SIGFSTOP;
 1010: - src/Makefile.am is modified to avoid //TRANSLIT flag on systems that don't
 1011: support GNU iconv;
 1012: - configure.in script is modified to avoid bugs when --with-postgresql and
 1013: --with-mysql are specified;
 1014: - TRNC is written;
 1015: - minor bug is fixed in both IFT and IFTE. Returned expression has to be
 1016: evaluated.
 1017: * Fri Apr 11 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.6 (RPL/2)
 1018: - SIGPIPE signal handler is modified to avoid abort process when POKE tries
 1019: to write data into a pipe without reader;
 1020: - major bug is fixed in RETURN intrinsic. When RETURN was called from a detached
 1021: process without -p modifier, it can send an ABORT signal instead a KILL one;
 1022: - PEEK, POKE and WFPOKE new intrinsics are written;
 1023: - major bug due to new garbage collector is fixed in rplexternals.h (double free
 1024: corruption);
 1025: - CLRCNTXT is added (clear contexts);
 1026: - VERIFY intrinsic is written;
 1027: - PSHCNTXT and PULCNTXT are added (PSHCNTXT pushes context on an
 1028: internal contexts stack, PULCNTXT pulls contexts from this internal stack).
 1029: Main usages of these intrinsics are in conjonction with IFERR or with
 1030: software interrupts;
 1031: - HEAD, TAIL and REVLIST intrinsics are added;
 1032: - function pointers have been added to function description;
 1033: - new analyse() routine is written. All instrinsics are now in a N-tree;
 1034: - software interrupts have been fixed;
 1035: - multitasking capabilities have been modified to be usable on NetBSD. All real
 1036: time signals have been removed;
 1037: - major bugs are fixed in multitasking (mutex trouble _and_ segmentation fault);
 1038: - minor bug is fixed in STR->. STR-> could return a system error instead an
 1039: execution one;
 1040: - first bug due to new garbage collector is fixed in '+' ({ } { } +) and in
 1041: '-' intrinsics;
 1042: - PostgreSQL support is written.
 1043: * Mon Mar 17 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.5 (RPL/2)
 1044: - locale can now be specified in SQL intrinsic :
 1045: { "mysql:iso-8859-1" "server" "database" ... };
 1046: - major bug is fixed un analyse_algebrique(). When DISP printed an algebraic
 1047: object, 'DISP()' was pushed in stack;
 1048: - same major bug is fixed in <, >, <=, >= and <>;
 1049: - major bug fixed in formateur() (segfault when a symbol is used without "'");
 1050: - major bug is fixed in DUPN intrinsic;
 1051: - when software interrupt (SWI) is evaluated, SWI pushs process id on stack
 1052: before starting interrupt evaluation;
 1053: - -f parameter is added when iconv is called;
 1054: - as old file program was bugged, a new option is added to configure script.
 1055: When configure is called with --disable-encoding-autodetection, make does not
 1056: try to detect source encoding. Please, do not use if RPL/2 can be built
 1057: without this option !
 1058: - new garbage collector (and more efficient) is written;
 1059: - configure script is modified to be usable on NetBSD 4.0, but as NetBSD does
 1060: not support real time signals, RPL/2 cannot use multitasking functions;
 1061: - error returned by preprocessor are now catched by RPL/2;
 1062: - -p option is added. With this option, all scripts are compiled before
 1063: RPL/2 starts evaluation. HALT cannot be used with -p, but all programs run
 1064: 40% faster;
 1065: - read and write operations in pipe() are rewritten to be sure that such
 1066: operations are atomic;
 1067: - minor bug is fixed in LOGSCALE. With {} LOGSCALE, all scales have to be
 1068: linear;
 1069: - major bug is fixed in gestion_processus.c (some pipes were not closed).
 1070: * Sat Jan 5 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.4 (RPL/2)
 1071: - major bugs have been fixed in software interrupt management.
 1072: * Fri Jan 4 2008 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.3 (RPL/2)
 1073: - JDATE and RDATE are written;
 1074: - minor bug (segfault) is fixed in EXSUB. It only occurs when EXSUB is executed
 1075: with wrong arguments;
 1076: - KILL now kills current process, ABORT kills program;
 1077: - software interrupts support is added (SWI, WFSWI, SWILOCK, SWIUNLOCK,
 1078: SWIQUEUE, STOSWI, RCLSWI, CLRSWI);
 1079: - major bug is fixed in SQL intrinsic (argument types);
 1080: - system stack is now written in core file;
 1081: - ALARM is added;
 1082: - nanosleep() now replaces sleep() and usleep() system calls;
 1083: - _GNU_SOURCE is added to rpl.h.
 1084: * Fri Nov 30 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.2 (RPL/2)
 1085: - License is changed. Now RPL/2 license is CeCILL (GPL compliant);
 1086: - EXGET adn EXSUB are added;
 1087: - minor bug is fixed in recherche_type(). { << } has to return an error.
 1088: '<<' and '>>' are both functions _and_ delimiters. Thus { IF } is
 1089: acceptable, but { >> } isn't;
 1090: - GSL is now 1.10, gnuplot 4.2.2 and units 1.87;
 1091: - OBGET and OBSUB intrinsics are added;
 1092: - src/Makefile.am minor bug is fixed (make clean deleted src/rpl.xpm);
 1093: - WAIT intrinsic is modified to use sleep() and usleep() if delay is
 1094: greater than one second. On some systems, usleep argument must be lower
 1095: than 1E6;
 1096: - numeric and character formats are now tested;
 1097: - -A flag is added. -A is used to give command line parameters to main
 1098: routine. Example:
 1099: rayleigh:[~/rpl-4.0.0.prerelease.2/examples] > ./test3.rpl -A "<< X sin >>"
 1100: +++RPL/2 version 4.0.0.prerelease.2 (vendredi 05.10.2007, 19:03:01 CEST)
 1101: +++Copyright (C) 1989 à 2006, 2007 BERTRAND Joël
 1102: << 'X' SIN >>
 1103: rayleigh:[~/rpl-4.0.0.prerelease.2/examples] > cat test3.rpl 
 1104: #!/usr/local/bin/rpl -s
 1105: 
 1106: TEST
 1107: <<
 1108:     disp
 1109: >>
 1110: - minor bug (segfault) is fixed in encart() routine (splash screen). Child
 1111: process ended with segfault due to a mistake in Motif widget cleaning
 1112: process;
 1113: - major bug is fixed in DETACH intrinsic. Child process were locked when
 1114: they were started with a locked mutex that comes from its father;
 1115: - ctrl+C can now kill all child process;
 1116: - WFPROC and WFDATA are rewritten;
 1117: - RETURN is fixed to be usable in detached process;
 1118: - HALT is not exported to child process;
 1119: - FLOW filetype is added;
 1120: - Makefiles are modified to support gcc-4.2 and gfortran-4.2;
 1121: - socket support (Unix, IPv4, IPv6, STREAM, DATAGRAM, ROBUST DATAGRAM,
 1122: SEQUENTIAL DATAGRAM, RAW) is added. Warning: IPv6 sockets have not been tested
 1123: because I don't have any IPv6 compliant server, but they should work.
 1124: * Mon Sep 10 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.1 (RPL/2)
 1125: - library management is rewritten from scratch. EXTERNAL is removed and
 1126: EXTERNALS is added. Now, all exported symbols are sent to RPL/2 when
 1127: library is loaded;
 1128: - OPEN arguments are changed;
 1129: - EXTERNAL now checks availability of external functions;
 1130: - number of arguments is verified in analyse_algebrique().
 1131: 'SIN(A+X,2)' is now refused because SIN requires only one argument;
 1132: - all but lapack symbols are exported from librpl with librpl, f77 or f90
 1133: prefix;
 1134: - minor bug is fixed in formateur() (AND and OR requires parenthesis);
 1135: - rplexternals.h header file is added; Now, it is very easy to write
 1136: external functions;
 1137: - memory leak is fixed in analyse_algebrique();
 1138: - minor bug (symbole flag) is fixed in sequenceur.c and types.c;
 1139: - temp file was not removed when an error occurs in EDIT or VISIT;
 1140: - 'name' should not returned a function ("FCT" object);
 1141: - -rdynamic is added to src/Makefile.am.
 1142: * Mon Jul 23 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.0.0.prerelease.0 (RPL/2)
 1143: - Major bug is fixed in interface_tex.c. When there are errors in latex
 1144: file, latex command waits for input on its command line;
 1145: - major bug is fixed in tex.h (multiline strings);
 1146: - examples subdir is added;
 1147: - major bug is fixed in recherche_variable(). When an expression is evaluated
 1148: in a function, all variables set in this function must be visible in
 1149: expression. Thus, << I -> 3 << << I >> eval >> must return 3, not 'I';
 1150: - LAST stack is saved in rplcore;
 1151: - major bug is fixed in ->HMS. It only occurs when argument type is not
 1152: integer or real;
 1153: - major bug (segfault) is fixed when rpl is called with empty file;
 1154: - libtool support is removed. Two new scripts (rplc and rpllink) are provided
 1155: to use librpl.a;
 1156: - automake scripts are rewritten to avoid a misconfiguration of librpl.a
 1157: when -j make option is used;
 1158: - trace output now contains PID;
 1159: - rpl-core is renamed in rpl-code-$PID;
 1160: - rplc and rpllink scripts can now sompile and build C and Fortran
 1161: executables with librpl.a;
 1162: - New classification, only a working simplification() routine is
 1163: required to announce 4.0.0.final;
 1164: - librpl entry point is modified to return results as strings array;
 1165: - -S option is added;
 1166: - due to a major bug in libtool, libtool is removed from autoconf/automake
 1167: scripts;
 1168: - VERSION is modified to return a list.
 1169: * Tue Jul 17 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8x (RPL/2)
 1170: - major regression bug is fixed in PRINT due to mistake in latex pathes;
 1171: - gnuplot does not have to be built if --disable-embedded-gnuplot is set;
 1172: - new prompt ("RPL/2> ") is used for interactive mode;
 1173: - ARCCOS, ARCSIN, ARCTG, ARGCH, ARGSH, ARGTH, CH, SH, TH and TG intrinsics
 1174: are removed, because all of these intrinsics have two forms. ARCCOS is
 1175: the same than ACOS, TAN=TG, COSH=CH. Please adapt your scripts;
 1176: - gnuplot compilation does not have to be done when disable-gnuplot is set;
 1177: - major bug is fixed in RECV that avoid usage of multitasking.
 1178: * Tue Jul 10 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8w (RPL/2)
 1179: - False error (system error) was reported by recherche_type();
 1180: - recherche_type() returns syntax error if a list is included in
 1181: an algebraic expression;
 1182: - --enable-debug is modified. Now, return can be defined to print
 1183: on stdout its position in source code (line and function);
 1184: - minor bug is fixed in recherche_type(). Don't forget that space
 1185: are not significant in algebraic expression:
 1186: '12 3+ 12    X' is the same expression than '123+12X';
 1187: - src/Makefile.am is modified to avoid double compilation process;
 1188: - --enable-final-run-path is added to configure.in script;
 1189: - STATIC is modified to declare static variables in expression. Warning: static
 1190: variables used in expressions are deleted when evaluation of this expression
 1191: ends;
 1192: - MEM does not report static variable sizes;
 1193: - minor bug is fixed in HELP intrinsic. When the last instruction was not
 1194: known, HELP function was pushed in operational stack. HELP did not work
 1195: when there were space on input line.
 1196: * Mon May 28 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8v (RPL/2)
 1197: - DATE is modified: reduced julian days is replaced by fraction part
 1198: of julian days. Old field used by julian days is now integer part of julian
 1199: days;
 1200: - CONVERT intrinsic is rewritten to accept absolute path in popen;
 1201: - automake scripts are modified to delete src/lock file if build process aborts;
 1202: - rplargs.h directly includes rpl.h;
 1203: - absolute pathes are added to all external program files (rplplot, rplpp...);
 1204: - intrinsic functions are case sensitive. External functions are case
 1205: unsensitive. A minor bug is fixed in recherche_type() because all external
 1206: functions were case unsensitive when they were evaluated from RPN expressions;
 1207: - HELP function is rewritten to be more friendly (a la OpenVMS);
 1208: - external wrapper (rplplot) is written to force usage of gnuplot provided
 1209: by RPL/2 if it is built during build process. If this build does not exist,
 1210: it tries to launch regular gnuplot;
 1211: - gnuplot is added to source tree to avoid some trouble between preinstalled
 1212: gnuplot and release used by RPL/2. This addition to source tree is
 1213: required by some incompatibility between gnuplot releases;
 1214: - Lapack is upgraded to 3.1.1 release;
 1215: - GSL is upgraded to 1.9 revision;
 1216: - RPL_TMP_PATH env variable is added to specify the path of tempfiles. If
 1217: it is not set, /tmp is used. If /tmp is not writable, /var/tmp is used. If
 1218: not, ./ but RPL/2 can hang with a fatal error if this last location is
 1219: not writable;
 1220: - major regression is fixed in SYSEVAL intrinsic due to introduction of
 1221: error scrutation.
 1222: * Sat Mar 24 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8u (RPL/2)
 1223: - SYSEVAL is modified to return an error when execvp() syscall cannot
 1224: execute its arguments;
 1225: - -hard-float sparc option is remove from mkrplso;
 1226: - major bug is fixed in SQL intrinsic that hangs when query did not return
 1227: any values (for exemple INSERT);
 1228: - escape sequences can be used in SYSEVAL argument like "echo \"string\""
 1229: SYSEVAL;
 1230: - graphic and PostScript outputs are now cleared in child process;
 1231: - locales are now used by preprocessor;
 1232: - major bug is fixed in impression_tex(). PRINT did not work due to a bug
 1233: introduced by multitasking code;
 1234: - SORT can now use name as its argument.
 1235: * Sun Jan 21 2007 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8t (RPL/2)
 1236: - Variable management has been rewritten and some tests have been done. Now,
 1237: it is possible to execute:
 1238: 
 1239: #!/usr/local/bin/rpl -sc
 1240: 
 1241: TEST
 1242: <<
 1243:     1 1000 start VAR_S VAR_S2 next
 1244: >>
 1245: 
 1246: VAR_S
 1247: <<
 1248:     static 3 -> C << C disp 'C' incr if C 10 > then 'C' volatile end >>
 1249: >>
 1250: 
 1251: VAR_S2
 1252: <<
 1253:     static 3 -> C << C disp 'C' decr >>
 1254: >>
 1255: 
 1256: - configure.in script is added in lapack subtree;
 1257: - VARS is modified to display variables status (LOCKED/UNLOCKED and
 1258: STATIC/VOLATILE/PARAMETER/VARIABLE);
 1259: - STATIC and VOLATILE intrinsics are added to specify static variables. A
 1260: static variable can be transformed into volatile with VOLATILE.
 1261: With STATIC, next variables created by '->' are static;
 1262: - PROTECT and UNPROTECT are added to protect variables against write
 1263: or purge actions. New PARAMETER and VARIABLE intrinsics are modified
 1264: versions of PROTECT and UNPROTECT that only deal with global variables
 1265: (see RCL/SAVE);
 1266: - variable management routines have been rewritten. The new ones are
 1267: uncompatible with the old ones. Before these changes, a local variable
 1268: was exported to a child subroutine, but cannot be modified into this
 1269: child subroutine. Now, a local variable is accessible only in its subroutine;
 1270: - SAVE intrinsic is added to manipulate global variables;
 1271: - SUSPEND is written. RPL/2 waits for a SIGCONT signal;
 1272: - SORT, COL->, ->COL, ROW->, ROW-> intrinsics are written;
 1273: - Makefile.am are improved;
 1274: - minor bug is fixed in ->list and ->array. Without any argument, these
 1275: intrinsic only send a SIGSEGV;
 1276: - ncurses is updated to release 5.6;
 1277: - lapack is updated to 3.1.0.
 1278: * Sun Dec 31 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8s (RPL/2)
 1279: - default CFLAGS/FFLAGS/FCFLAGS are modified due to a bug in gcc-sparc64
 1280: that avoid a complete build;
 1281: - CTRL+Z and CTRL+C signals only perform actions on main process;
 1282: - major bugs are fixed in multitasking capabilities (some mistakes with
 1283: mutexes and several terminated child process cannot be closed by the
 1284: operating system);
 1285: - minor bug fixed in SCLS (mistake between main and auxiliary axes);
 1286: - variables are now written in rpl-core file;
 1287: - NEG is modified to return 0 instead -0 when its argument is real or complex
 1288: number;
 1289: - ROW+ intrinsic can now be used on empty matrix without dimension error:
 1290: [[]] 1 [[ 1 2 ]] row+;
 1291: - major bug is fixed in SUB intrinsic. It only occurs with lists when
 1292: it tries to returns invalid elements like { } 1 2 sub;
 1293: - major bug is fixed in ROW- intrinsic;
 1294: - major bug is fixed in ROW+ intrinsic.
 1295: * Sat Dec 02 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8r (RPL/2)
 1296: - creation_nom_fichier() is rewritten to force all process to create
 1297: different file names;
 1298: - RANLUX is removed to use GSL library and avoid a bug in gfortran-4.1;
 1299: - readline-5.2 and units-1.86 are now used;
 1300: - SEQUENCE statement is added in fonctions_speciales.f90 to fix a build
 1301: failure.
 1302: * Mon Oct 23 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8q (RPL/2)
 1303: - wfproc is rewritten to avoid a dead lock;
 1304: - major mistake is fixed in both sommation_vecteur_reel() and
 1305: sommation_vecteur_complexe();
 1306: - multitasking is rewritten from scratch to fix some mistakes with
 1307: multithreading. DETACH, SEND and RECV now use four real time signals to
 1308: perform a better task synchronization;
 1309: - some bugs introduced by locales specific compilations are fixed;
 1310: - major memory corruption is fixed in DEPND;
 1311: - HELP intrinsic is modified to print a classified output.
 1312: * Mon Aug 12 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8p (RPL/2)
 1313: - major memory leak is fixed in DETACH intrinsic. Files were closed by
 1314: both childs and parent;
 1315: - bug that avoids usage of Motif is fixed in configure.in;
 1316: - makefile's are modified to build RPL/2 with other locale than ISO-8859;
 1317: - db is removed from source tree due to some compilation troubles (db's
 1318: autoconf script is broken);
 1319: - sdb is removed from source tree due to some memory leaks and some troubles
 1320: with its configure script. New SQL routines are written, but only MYSQL
 1321: subsystem is available. Now, SQL can be used without memory leak;
 1322: - major bug is fixed in evaluation() subroutine. Value of error flag
 1323: was not returned in some cases;
 1324: - FACT intrinsic does not accept real arguments anymore due to the new intrinsic
 1325: GAMMA;
 1326: - GAMMA intrinsic is added (complex function) ;
 1327: - autoconf/automake scripts are modified to compile F90 sources;
 1328: - src/distributions.f is replaced by src/distributions.f90. All Numerical
 1329: Recipes references are avoided to use GSL;
 1330: - GSL is upgraded to 1.8 release;
 1331: - -lz is added in src/Makefile.am to fix a mistake in sparc32.
 1332: * Mon Apr 10 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8o (RPL/2)
 1333: - fft.f is removed. Now FFT intrinsic uses dft subroutine;
 1334: - Sparc64 optimizations are modified. Now gcc-4.0 can be used to build RPL/2 on
 1335: Sparc64. Same modifications are done on sparc32;
 1336: - major bug are fixed in both PLOTTER and HISTOGRAM intrinsics
 1337: (interface with GNUplot).
 1338: - major bugs are fixed in USE/REMOVE intrinsics (system stack corruption);
 1339: - corruption of last stack is fixed in mclrin (only occurs when an error is
 1340: caught);
 1341: - major bug (in a malloc condition) is fixed in derivation().
 1342: * Tue Jan 07 2006 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8n (RPL/2)
 1343: - configure script and makefiles are modified to be usable with automake
 1344: 1.9.6 (GNU), libtool 1.5.20 (GNU) and autoconf 2.59 (GNU).
 1345: - gestion_fichiers() prototype is modified to be built by gfortran. Now,
 1346: gfortran is the default compiler for FORTRAN code included in RPL/2;
 1347: - libdb is added to perform indexed file access;
 1348: - SQL interfaces are added (SQL intrinsic). Only mysql is supported;
 1349: - minor bug is discovered and fixed in matrix multiplication (precision);
 1350: - rpl.spec.in and debian directory are deleted due to some mistakes in the
 1351: scripts required to build packages.
 1352: * Tue Nov 15 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8m (RPL/2)
 1353: - major bug is fixed in IFERR/THEN/(ELSE)/END structure. It occured when an
 1354: error is caught before a regular IF/THEN/(ELSE)/END structure in
 1355: IFERR/THEN/(ELSE)/END structure;
 1356: - chmod 755 debian/rules is done by makefile;
 1357: - major bug is fixed in recherche_instruction_suivante():
 1358: +++"123 " str->
 1359: +++Erreur : Argument invalide pour la commande << "123 " str-> >>
 1360: Before this fix, it was impossible to use a command line that ends with spaces.
 1361: * Sat Oct 29 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8l (RPL/2)
 1362: - SELECT/CASE/DEFAULT/END is modified. Now, it is impossible to write:
 1363: SELECT
 1364:     <case>
 1365:     CASE <test> THEN <expr> END
 1366:     ...
 1367:     DEFAULT
 1368:     DEFAULT <- two DEFAULT's
 1369: END
 1370: 
 1371: or
 1372: 
 1373: SELECT
 1374:     <case>
 1375:     CASE <test> THEN <expr> END
 1376:     ...
 1377:     DEFAULT
 1378:     ...
 1379:     CASE <test> THEN <expr> END <- CASE statement after DEFAULT
 1380: END
 1381: - major bug is fixed (in (unsigned char) getc()). It only occurs when RPL/2 is
 1382: built with gcc-4.0.
 1383: - configure.in is modified to be usable with gcc-4.0.
 1384: * Mon Oct 3 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8k (RPL/2)
 1385: - segmentation fault occurs in both PROMPT and INPUT when readline returns
 1386: NULL (ctrl^D). This trouble is now fixed;
 1387: - major bug is fixed in DATE intrinsic (julian days and reduced julian days);
 1388: - stderr of rplpp is now caught;
 1389: - SYSEVAL is modified to use stdin, stdout and stderr:
 1390: ESSAI
 1391: <<
 1392:     // Only stdout and stderr
 1393:     "ls" dup disp syseval
 1394:     clmf
 1395:     // Now with stdin ("zer\naze\n")
 1396:     { "cat" "zer" "aze" } dup disp syseval
 1397:     clmf
 1398: >>
 1399: - GSL is upgraded to 1.7.
 1400: * Thu Sep 29 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8j (RPL/2)
 1401: - SYSEVAL is modified. It now returns stdout and stderr in a list;
 1402: - minor memory leak is fixed in recherche_instruction_suivante() subroutine.
 1403: * Thu Aug 4 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8i (RPL/2)
 1404: - internal file descriptors are modified to be usable with DUMP intrinsic;
 1405: - VARS intrinsic is modified and now prints value of variables.
 1406: * Thu Jul 21 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8h (RPL/2)
 1407: - units is upgraded to 1.85 release;
 1408: - -d flag is added in command line. Don't use this flag if you don't know
 1409: what you do! It is only used to debug internal memory allocations;
 1410: - internal pointers (ADR objects) are printed as 64 bits pointers to be usable
 1411: on 64 bits wide architectures.
 1412: * Sat apr 16 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8g (RPL/2)
 1413: - DUMP is rewritten to be portable. It works, but without shared libraries,
 1414: printer file, graphic files and last error. Support for this kind of objects
 1415: shall be available as soon as possible. Warning: DUMP cannot be used in
 1416: multiprocessing;
 1417: - configure.in script is modified to return an error when g77 is not found;
 1418: - a new internal type is used to handle shared libraries;
 1419: - a major bug is discovered and fixed in recherche_type(). It only occurs
 1420: in interactive mode ([[ 1 ]] returns a syntax error);
 1421: - a major bug is found in simplification_arbre(). Subroutine is disabled.
 1422: * Thu mar 17 2005 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8f (RPL/2)
 1423: - option -r is added to restart a process from a dump file;
 1424: - DUMP intrinsic is added. It performs synchronous checkpointing;
 1425: - GSL is upgraded to release 1.6.
 1426: * Wed dec 22 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8e (RPL/2)
 1427: - Result types of PERM and COMB instrinsic are fixed;
 1428: - RPL/2 now uses a new preprocessor due to a new 'feature' in gcc/cpp;
 1429: - RPL/2 can now use all processors on multiprocessor workstations with
 1430: DETACH, SEND, RECV and WFPROC new intrinsics. The first test program was:
 1431: 
 1432: #!/usr/local/bin/rpl -cs
 1433: 
 1434: MULTIPROCESSUS
 1435: <<
 1436:     'FONCTION' detach
 1437:     do "B" disp until false end
 1438: >>
 1439: 
 1440: FONCTION
 1441: <<
 1442:     do "A" disp until false end
 1443: >>
 1444: 
 1445: * Sun dec 12 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8d (RPL/2)
 1446: - major bug is discovered and fixed in analyse_notation_algebrique :
 1447: +++'A-B-C' returned
 1448: 1: 'A-(B-C)' instead of 1: 'A-B-C'. It is now fixed;
 1449: - recherche_type() routine is improved to cast in name 1E5E-6 or 1.23.4.5.
 1450: * Fri dec 7 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8c (RPL/2)
 1451: - major bug is fixed in formateur_fichier(). Now, it is possible to use
 1452: lists in a file record. Note that only sequential and formatted files
 1453: are supported;
 1454: - major bug is fixed in BACKSPACE intrinsic. It only occurs on large
 1455: records.
 1456: * Fri nov 26 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8b (RPL/2)
 1457: - minor bug is fixed in IP intrinsic: when argument was real without
 1458: fraction part, IP returned a real, not an integer;
 1459: - minor bug is fixed in recherche_type(): it is now possible
 1460: to enter +++<NB3 + return. RPL/2 returns a syntax error, not a acces
 1461: violation;
 1462: - MCLRIN (MacLaurin series) intrinsic is added;
 1463: - TAYLR (Taylor series) instrinsic is added;
 1464: - very minor bug is fixed in evaluation(). Sometimes, when evaluation()
 1465: is stopped by ^C, EXIT intrinsic did not work due to a mistake in
 1466: the internal system stack;
 1467: - minor bug is fixed in encart.c. System error messages returned by
 1468: this subroutine were only available in french;
 1469: - internal RPL/2 system stack corruption is fixed. This bug only affects
 1470: interactive and debug modes when evaluation routine returns an error;
 1471: - symbolic derivation subroutine is now able to derivate functions;
 1472: - minor bug is fixed in instruction_multiplication: now 'X' 1. * returns
 1473: 'X' and not 'X*1'.
 1474: * Thu nov 18 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8a (RPL/2)
 1475: - ctags in src/Makefile.am is fixed;
 1476: - first derivation subroutines are written;
 1477: - major bug is fixed in analyse_algebrique() :
 1478: before this patch, '3-5+4' was understand as '3-(5+4)' !
 1479: - instruction_division() is improved and returns 0 when it evaluates
 1480: '0/X';
 1481: - instruction_moins() is improved and returns 'NEG(X)' when it evaluates
 1482: '0-X'.
 1483: * Fri nov 5 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre8 (RPL/2)
 1484: - interface_gnuplot is modified and do not use any deprecated gnuplot
 1485: commands. Warning, you must use gnuplot 4.0;
 1486: - graphic output is improved. Now, it is possible to use two separated
 1487: scales on the same 2D graph (with "main" and "auxiliary" option of SCALE
 1488: intrinsic). For example:
 1489: 
 1490: #!/usr/local/bin/rpl -c
 1491: 
 1492: TEST
 1493: <<
 1494:     'X' indep
 1495:     { X Y } autoscale
 1496:     'SIN(X)' steq draw
 1497:     { "auxiliary" } axes
 1498:     { X Y } autoscale
 1499:     'COS(X)+2' steq draw
 1500:     { { "ticsonly" "automatic" } { "ticsonly" "automatic" } } axes
 1501:     drax persist
 1502: >>
 1503: 
 1504: - a major bug is fixed in encart.c;
 1505: - ncurses is patched.
 1506: * Mon nov 1 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre7o (RPL/2)
 1507: - configure script is updated;
 1508: - splash screen is added;
 1509: - minor bug is fixed in SYSEVAL (only occurs with SIGINT signal).
 1510: * Sun oct 24 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre7n (RPL/2)
 1511: - stack overflows are caught.
 1512: * Fri oct 8 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre7m (RPL/2)
 1513: - minor bug is fixed in both << and >> intrinsics. It only occurs when
 1514: "<<" HELP or ">>" help is called;
 1515: - DFT and IDFT are added;
 1516: - minor bug is fixed in FFT (explicit length has to be positive);
 1517: - MOD can be used with vectors and matrices arguments;
 1518: - major bugs are fixed in FFT and IFFT (trouble in the computation of the
 1519: default length of FFT). Only occur with matrices.
 1520: * Sat aug 14 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre7l (RPL/2)
 1521: - readline is upgraded to 5.0;
 1522: - gsl is upgraded to 1.5;
 1523: - corrections in HELP functions.
 1524: * Fri aug 7 2004 BERTRAND Joël <rpl@systella.fr> rpl-4.00pre7k (RPL/2)
 1525: - HELP is added;
 1526: - statistic matrix SIGMA is renamed as SDAT;
 1527: - rpl.h is modified to workaround a bug in Cygwin environment
 1528: (SA_NOMASK is not defined in include files);
 1529: - overflows are tested in HMS+ and HMS-;
 1530: - CEIL, FLOOR and IP are modified to return a correct result with huge
 1531: arguments that cannot be stored as integers;
 1532: - fix a minor bug in ->LIST. The LAST stack now contains all arguments
 1533: of this intrinsic;
 1534: - flag 32 is used with DISP;
 1535: - major bug is fixed in ->Q intrinsic (type of argument and memory leak).
 1536: * Fri may 21 2004 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7j (RPL/2)
 1537: - major bug is fixed in analyse(). CHR intrinsic cannot be called because
 1538: I have erased a 'break' in a case statement;
 1539: - major bug is fixed in AXES intrinsic. It only occurs when AXES is used
 1540: with "main" or "auxiliary" option;
 1541: - major bug is fixed in recherche_types(). With this patch, 'sin(X)' is
 1542: now well analysed as 'SIN(X)'.
 1543: * Thu apr 22 2004 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7i (RPL/2)
 1544: - major bug is discovered and fixed in formateur(). It only occurs when
 1545: an algebraic expression is displayed with '='. In some cases, parenthesis
 1546: are missing. Same fix in formateur_fichier();
 1547: - a minor bug is fixed in evaluation.c that does not return any error when
 1548: it tries to execute 'a=z' e = ;
 1549: - new code is written in each intrinsic functions to return their required
 1550: arguments.
 1551: * Sun apr 14 2004 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7h (RPL/2)
 1552: - a minor bug is fixed in recherche_type: 1.E90 is now a real;
 1553: - minor bug is fixed in formateur_reel(). It only occurs in STD mode:
 1554: 1E90 was printed as 1.00000000000000E90;
 1555: - HELP is added;
 1556: - formateur() is fixed to properly print matrices and lists;
 1557: - a lot of warnings due to deprecated syntax are fixed;
 1558: - DFT is modified but not usable;
 1559: - cosmetic bug is fixed in formateur_tex.c;
 1560: - minor bug is fixed in FFT intrinsic (segfault when FFT is called without
 1561: any argument).
 1562: * Sun Jan 25 2004 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7g (RPL/2)
 1563: - included ncurses is updated to 5.4;
 1564: - included units is updated to 1.83c;
 1565: - major bug is fixed in recherche_type() function. With this bug, RPL/2
 1566: prints 'A/INV(Z+E)+R' when you enter A Z E + inv R + /;
 1567: - DFT intrinsic is added. It returns the discrete Fourier transform of an
 1568: array. When the length of each line is 2**n, the result is the same as
 1569: the result of FFT;
 1570: - minor bug is discovered and fixed in PUT and PUTI intrinsics when these
 1571: instructions verify arguments types. It does not affect the result when
 1572: all arguments are correct.
 1573: * Sun Oct 19 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7f (RPL/2)
 1574: - major bug is fixed in evaluation of both EXIT and CYCLE intrinsics. Now,
 1575: EXIT can be used (as ABORT and KILL) to quit interactive mode of RPL/2;
 1576: - units is updated to 1.83a release;
 1577: - formateur_fichier.c is modified to handle unformatted files. This task
 1578: is not completed.
 1579: * Mon Aug 25 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7e (RPL/2)
 1580: - CLUSR is written. It purges all global variables;
 1581: - BESSEL intrinsic is fixed to allow the use of expressions as arguments;
 1582: - a major bug was introduced with rpl-4.00pre7d in formateur.c. It appears
 1583: when an algebraic expression is displayed or printed but does not affect
 1584: computations. It is now fixed;
 1585: - gsl is upgraded to 1.4.
 1586: * Mon Aug 18 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7d (RPL/2)
 1587: - algebraic expressions are now more readable when they are displayed
 1588: (less parenthesis);
 1589: - rplpp is modified to workaround a mistake in 'which' function (seems to appear
 1590: on Debian distribution, but since cpp is in the default path, RPL/2 works
 1591: fine...);
 1592: - NOT is not correctly formatted in formateur.c:
 1593: Z NOT -> 'NOT Z' but 'A+Z' NOT -> 'NOT A+Z' and 'NOT Z+A' -> 'NOTZ+A'
 1594: with a NOTZ function !
 1595: * Sun Aug 10 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7c (RPL/2)
 1596: - CYCLE is fixed. Now, it is possible to use CYCLE in an expression even
 1597: if the main loop is in a program;
 1598: - RPL/2 is tested with efence and valgrind;
 1599: - configure.in script is modified;
 1600: - units.c is modified to be built by gcc-3.3. I only have removed a #if 0/#endif
 1601: structure. I don't know why this code was compiled by gcc-3.3... Maybe
 1602: another gcc bug...
 1603: * Fri Jul 25 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7b (RPL/2)
 1604: - EXIT is fixed. Now, it is possible to use EXIT in an expression when the
 1605: main loop is in a program;
 1606: - RPL/2 can take its arguments (and command) on the standard input. Try
 1607: echo "1 2 3 + *" | rpl -i | grep "^1:" | cut -d ':' -f2
 1608: - a minor bug in vim syntax file is fixed (CYCLE and EXIT intrinsics);
 1609: - a minor bug is discovered in analyse_algebrique(). Now, expression
 1610: such as 'A+Z AND 2' or '(A+Z) AND 2' are correctly parsed.
 1611: * Mon Jun 16 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7a (RPL/2)
 1612: - Major bug is fixed in evaluation subroutine. This one only occurs
 1613: when an error in a user definition called by an expression is caught
 1614: by an IFERR structure;
 1615: - EXIT intrinsic can now be used in DO/UNTIL/END or WHILE/REPEAT/END loops;
 1616: - sequenceur() is now uninterruptible with STOP signal in recherche_type()
 1617: subroutine;
 1618: - major bug is fixed in types.c (# xxxxxb) and recherche_instruction_suivante();
 1619: - GSL exception (underflow) is now caught;
 1620: - tools/Makefile.am is fixed;
 1621: - Debian buildpackage script is fixed.
 1622: * Tue Jun 10 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre7 (RPL/2)
 1623: All memory leaks issued from the pre6 beta releases seem to be fixed.
 1624: Build process is improved and vim syntax file and manual pages are updated.
 1625: * Mon Jun 9 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6l (RPL/2)
 1626: - RCI and RCIJ intrinsic are added;
 1627: - BESSEL intrinsic is added. Syntax:
 1628: 3: type ("J", "K", "I", "Y", "j", "k", "i", "y")
 1629: 2: order (integer or real)
 1630: 1: x;
 1631: - ->Q intrinsic is added;
 1632: - major bug is fixed in C->R intrinsic;
 1633: - ROW+ and ROW- are added and tested;
 1634: - COL+ and COL- are added and tested. Syntax:
 1635: 3: matrix
 1636: 2: integer (number of column to be inserted)
 1637: 1: column matrix to be inserted;
 1638: - major bug was discovered in interface_gnuplot(). It only occurs when
 1639: the subroutine reduces the graphical depth. It is now fixed;
 1640: - Some mistakes are been fixed in vim syntax file;
 1641: - SX2, SY2 and SXY are added;
 1642: - SX and SY statistical intrinsics are added;
 1643: - DEBIAN control file is fixed;
 1644: - PAPER intrinsic is added. Supported paper formats are now : a4, a5, b5,
 1645: letter, legal, executive;
 1646: - PPAR is modified to include current graphic type.
 1647: * Sun Jun 1 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6k (RPL/2)
 1648: - SLICESCALE intrinsic is added. Its syntax is
 1649: { "automatic" nb_of_levels }
 1650: { "discrete" l1 l2 l3 ... }
 1651: { "incremental" start incr }
 1652: { "incremental" start incr end }
 1653: { "automatic" } (default);
 1654: - a minor bug (in last stack) is fixed in AXES intrinsic
 1655: - flag 52 is used to automatically update graphics;
 1656: - man pages are updated;
 1657: - evaluation() is modified to perform evaluation of expressions that contain
 1658: '=';
 1659: - a minor bug is fixed in AXES intrinsic;
 1660: - a minor bug is fixed in DRAW intrinsic (2D and 3D graphics were able to
 1661: appear on the same figure). The same mistake is fixed in DRWS intrinsic;
 1662: - LAST is disabled in evaluation subroutine (EVAL and ->NUM intrinsics).
 1663: * Sun May 18 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6j (RPL/2)
 1664: - SLICE intrinsic is added. It is used to draw 3D graphics as contour lines;
 1665: - PLOTTER is added to draw statistical clouds with lines;
 1666: - C and H source files now include vim parameters;
 1667: - vim syntax file is modified to include new intrinsics;
 1668: - static archive is modified to include all required libraries needed by
 1669: RPL/2.
 1670: * Sun May 4 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6i (RPL/2)
 1671: - '=' is added and tested;
 1672: - XCOL and YCOL are added;
 1673: - a minor bug in analyse_syntaxique() is fixed;
 1674: - THEN is modified to return an error when ELSE appears in a CASE/THEN/END
 1675: structure. ELSE is modified to return an error when ELSE appears in
 1676: an ELSE/END structure;
 1677: - a major bug is fixed in CYCLE;
 1678: - EXIT is written. When EXIT appears in a defined loop (FOR or START), the
 1679: sequencer continues after the end of this loop;
 1680: - SCLS is added;
 1681: - DRWS now uses COLS to draw 2D graphics;
 1682: - PPAR and SPAR are written. SPAR returns a list that contains the
 1683: size of the statistical matrix (or "UNAVALAIBLE" if there is any
 1684: statistical variable, or "DISABLED" if its type is not one of the type of
 1685: a statistical matrix.) and XCOL and YCOL parameters. Warning: [[]] SIZE
 1686: returns { 1 0 } and it is not a bug, because a null matrix contains _one_
 1687: null line ! Thus, [[]] STOS SPAR returns { { 1 0 } 1 2 };
 1688: - EXTERNAL intrinsic is added. Warning: by default, extern functions are
 1689: disabled. Arguments of EXTERNAL are case sensitive because the external
 1690: interface is written in C. { ext_sinus } EXTERNAL does not replace the list
 1691: of known external functions but add the new list to the last. { "all" }
 1692: EXTERNAL allows all external functions and { "none" } EXTERNAL removes all
 1693: external names of the known functions;
 1694: - mkrplso.in is modified.
 1695: * Sun Apr 20 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6h (RPL/2)
 1696: - vim syntax file is upgraded;
 1697: - a minor mistake is fixed in recherche_instruction_suivante();
 1698: - some minor memory leaks are fixed in recherche_type() function. They only
 1699: occurs when a syntax error is detected;
 1700: - #error and #warning preprocessor macros are added;
 1701: - INCR and DECR are written (with integer or variable argument);
 1702: - CSWP and RSWP are added and tested;
 1703: - a minor bug is fixed in analyse.c;
 1704: - DEBIAN/control is added to build debian package;
 1705: - SCALE is fixed and improved ("automatic" keyword);
 1706: - PUTC and PUTR new intrinsics are added.
 1707: * Sun Apr 13 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6g (RPL/2)
 1708: - a very minor bug is fixed in VISIT intrinsic. It only occurs when
 1709: VISIT does not find a name in level 1;
 1710: - configure.in script is modified to add a new test (--enable-debug
 1711: flag). Configured with this fleg, RPL/2 will be built with electric-fences;
 1712: - GETR (get row[s]) and GETC (get column[s]) are added. These new instructions
 1713: extract a part of a matrix. Syntax: [[ 1 2 3 ][ 2 3 4 ]] { 1 } GETR or
 1714: 'MATRIX' { 2 2 3 } GETR;
 1715: - LOGSCALE intrinsic is improved and now, it can be used as
 1716: { "main" "auxiliary" X Y } LOGSCALE;
 1717: - SCALE intrinsic is used to fix the limits of a graphic. Its syntax is the
 1718: same than AXES:
 1719: { { 60 "ticsonly" 2 } { "automatic" "ticsonly" 10 } } axes
 1720: { "auxiliary" { 60 "ticsonly" "default" } { "automatic" } } axes
 1721: { { -10 10 } "automatic" } SCALE.
 1722: Warning, it is not possible to ask a logarithmic scale with this intrinsic
 1723: because it changes only the dimension of the screen. To have a logarithmic
 1724: scale, you must use LOGSCALE intrinsic:
 1725: { X } LOGSCALE gives a semi-log screen, { "auxiliary" X Y } gives a log-log
 1726: screen on second scale;
 1727: - { X X } autoscale and { Y Y } logscale are now invalid;
 1728: - *D is added (depth multiplication, for 3D graphics);
 1729: - a new intrinsic (*S) is added. It changes the scale of a graphic (X, Y
 1730: and Z axes). The result of *S is the same than DUP DUP *H *W *D;
 1731: - a major bug is fixed in GETI instrinsic when it is used with a name
 1732: that contains a matrix or a vector (bad upper bounds conditions in
 1733: incrementation);
 1734: - DISP intrinsic now uses the 33-th flag. When it is not set
 1735: (default), a final carriage return is sent to the terminal;
 1736: - AXES intrinsic only takes a list that can contains the keywork
 1737: "main" or "auxiliary". Before this modification, this keyword was in
 1738: the first stack level;
 1739: - vim syntax file is upgraded;
 1740: - in appel_gnuplot(), stdin is closed when gnuplot is called with -raise
 1741: option;
 1742: - LAST is now disabled in the main loop of INT intrinsic;
 1743: - expm1 and lnp1 are rewritten to use expm1 and log1p from math.h.
 1744: * Sun Apr 6 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6f (RPL/2)
 1745: - a major bug is fixed in evaluation() subroutine. It occurs with DRAW
 1746: intrinsic when the equation cannot be evaluated (for example 'SIN(X)/X'
 1747: in 0);
 1748: - LAST is disabled in the main loop of DRAW intrinsic;
 1749: - a major bug is fixed in DRAW intrinsic. When an error occurs in the
 1750: evaluation of an equation, the system stack is returned corrupted to the
 1751: sequencer;
 1752: - the same minor bug is fixed in FOR and START. It only occurs when the limits
 1753: of a loop are not integer or real.
 1754: * Sun Mar 31 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6e (RPL/2)
 1755: - the compilation stage aborts with an error message when two definitions
 1756: have the same name. To improve the compilation() subroutine, I have to
 1757: add some tests in gestion_variables.c;
 1758: - recherche_type() subroutine ad some other connex subroutines are improved.
 1759: Now, some syntax errors about object are caught and do not perform sequencer
 1760: hangup;
 1761: - readline is upgraded (minor compilation bug with recent gcc);
 1762: - Makefile.am's and configure.in scripts are improved.
 1763: * Fri Mar 14 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6d (RPL/2)
 1764: - DRWS intrinsic is written. Two datastyles are associated: SCATTER (2D
 1765: and 3D) and HISTOGRAM (only 2D, but 3 columns are accepted, the third shown
 1766: the boxwidth, 1 by default);
 1767: - recherche_type() is rewritten to be faster;
 1768: - gsl is upgraded (release 1.3);
 1769: - ncurses is upgraded and patched (release 5.3);
 1770: - recherche_instruction_suivante() is fixed (string research with included
 1771: '"') and rewritten to be faster;
 1772: - appel_gnuplot() is fixed. When no graphic was available, it returned a
 1773: segfault.
 1774: * Sun Mar 9 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6c (RPL/2)
 1775: - RPL/2 is compiled by gcc-3.2.2 and seems to work;
 1776: - the same minor bug is fixed in REDRAW and DRAX functions;
 1777: - a minor fix is written in DRAW function (2D and 3D);
 1778: - AXES intrinsic is improved. Now { { pi "ticsonly" 4 } "automatic" } DRAX
 1779: is accepted;
 1780: - a minor bug is fixed in VISIT intrinsic.
 1781: * Sun Jan 26 2003 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6b (RPL/2)
 1782: - a minor bug is fixed in evaluation subroutine;
 1783: - vim syntax file is improved;
 1784: - DRAW (wireframe section) is fixed. When an error occurs in the evaluation
 1785: of a 3D-graphic (for example 'SIN(R)/R' with 'R=SQRT(X**2+Y**2)' in X=0 and
 1786: Y=0), no graph was procuced (it results from a bug in gnuplot, and this fix
 1787: is a quick and dirty workaround...);
 1788: - RETURN intrinsic is modified to fix a trouble in interactive mode;
 1789: - rplconvert is improved.
 1790: * Sun Dec 22 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6a (RPL/2)
 1791: - a memory leak is fixed in formateur.c that only occurs when RPL/2 try
 1792: to print a list that contains a name;
 1793: - a major bug is fixed in -> intrinsic that only occurs in evaluation case with
 1794: a algebraic expression (<< 1 -> X 'X+1' >> eval);
 1795: - vim syntax file is improved;
 1796: - RPL/2 can now be built by gcc 3.2.1;
 1797: - "**" can be used in algebraic expression;
 1798: - DRAW can now plot wireframe (3D) graphics.
 1799: * Sun Dec 8 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre6 (RPL/2)
 1800: - ncurses is patched to be compiled by gcc 3.2;
 1801: - purification_chaine is rewritten to fix a major bug (when 'chaine' is empty);
 1802: - a major bug is fixed in recherche_instruction_suivante();
 1803: - minor bug is fixed in rpl-core file. The error message is now correctly
 1804: written;
 1805: - minor bug is fixed in analyse_notation_algebrique.c and types.c.
 1806: Now, an expression such as 'A+' returns an error when it is analyzed;
 1807: - VISIT intrinsic is added;
 1808: - a major memory leak is fixed in evaluation.c. This bug rarely occurs in
 1809: normal mode.
 1810: * Sun Aug 25 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5e (RPL/2)
 1811: - an EDIT intrinsic is added;
 1812: - PRMD intrinsic returns french or english messages;
 1813: - rpl-core now call LAST intrinsic if the last stack is avalaible. It
 1814: contains the error message too;
 1815: - new syntax, ftplugin and indent files are written for vim text editor;
 1816: - major bug is found and fixed in RCL intrinsic;
 1817: - major bug is found and fixed in OR intrinsic.
 1818: * Mon Jul 29 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5d (RPL/2)
 1819: - ncurses is updated;
 1820: - minor bug is fixed on PURGE instruction (an error no caught was
 1821: returned in interactive mode).
 1822: * Mon Jul 21 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5c (RPL/2)
 1823: - ASL (arithm. shift left) is added.
 1824: * Thu Jul 11 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5b (RPL/2)
 1825: - ncurses is patched;
 1826: - gsl is added to perform arithmetic operations;
 1827: - units is patched;
 1828: - some very minor bugs have been fixed.
 1829: * Wed May 15 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5a (RPL/2)
 1830: - ncurses is patched;
 1831: - RPL/2 can now be built by gcc 3.1;
 1832: - RDZ is fixed (minor bug).
 1833: * Sun Apr 21 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre5 (RPL/2)
 1834: - RPL/2 can now be called from other languages (librpl libraries).
 1835: * Sun Mar 24 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4h (RPL/2)
 1836: - ERRN and ERRM can now be used with errors returned by external functions;
 1837: - readline and ncurses have been updated;
 1838: - no more bugs have been reported since the rpl-4.00pre4g release.
 1839: * Wed Feb 20 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4g (RPL/2)
 1840: - ERRN and ERRM intrinsic functions are written. They return the last
 1841: error number or message even if errors are caught by an IFERR structure;
 1842: - a minor bug is fixed in EPSILON intrinsic. Now, 'EPSILON(0)' returns
 1843: a non null value;
 1844: - Ncurses is updated.
 1845: * Mon Feb 18 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4f (RPL/2)
 1846: Arithmetic intrinsic instructions (- +, -, *, / and **) are improved :
 1847: 'X' 0 + and 0 'X' + return 'X';
 1848: 'X' 0 - returns 'X';
 1849: 'X' 1 * and 1 'X' * return 'X';
 1850: 'X' 0 * and 0 'X' * returns 0; 
 1851: 'X' 1 / returns 'X';
 1852: 'X' 1 ** returns 'X';
 1853: 'NEG(X)' NEG returns 'X';
 1854: - autoconf/automake scripts are improved: now, the size of the different types
 1855: found by configure are used in rpltypes.h (rplconfig.h is written by configure);
 1856: - rdynamic flag is added in src/Makefile.am. This flag is used in the first
 1857: makefile, but forgotten in the new process;
 1858: - Flag 31 is tested before saving any arguments in bibliotheques_externes.c;
 1859: - POS can now be used on lists;
 1860: - ELSILON is written. This function returns the smallest real e(x) such as
 1861: e+abs(x) != abs(x).
 1862: * Mon Feb 11 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4e (RPL/2)
 1863: - now, INT intrinsic function can be interrupted;
 1864: - precision of sommation_vecteur_xxx() subroutines is improved;
 1865: - new vim syntax file written for vim 6.0.
 1866: * Mon Feb 04 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4d (RPL/2)
 1867: - explicit error messages are now printed when the RPL/2 is used in
 1868: interactive mode;
 1869: - major bug is fixed in OPEN intrinsic: with 'REPLACE' status, file lock was
 1870: tested after the file is opened, thus, when the file was locked, it was
 1871: deleted too!;
 1872: - configure script is improved (and it seems to be good ;-) );
 1873: - An --disable-experimental flag is added to the configure script. Thus, even
 1874: if you compile a beta release, you can compile a stable RPL/2;
 1875: - new syntax and ftplugin written for vim 6.0.
 1876: * Wed Jan 30 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4c (RPL/2)
 1877: - configure script is improved.
 1878: * Sun Jan 27 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4b (RPL/2)
 1879: - ncurses now replaces termcap;
 1880: - Côme DESPLATS has written a configure script.
 1881: * Fri Jan 18 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4a (RPL/2)
 1882: - KIND is added and returns the type of the numerical argument ;
 1883: - history file is added.
 1884: * Tue Jan 15 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre4 (RPL/2)
 1885: - Stable release. Unformatted files are disabled in this release.
 1886: * Mon Jan 14 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3h (RPL/2)
 1887: - SIGTSTP (CTRL+Z) is added. In a script, a SIGTSTP signal signifies
 1888: that the RPL/2 seqencer must stop and must give a prompt. This
 1889: signal is an asynchonous "HALT" command;
 1890: - SIGINT (CTRL+C) variables stack corruption is fixed;
 1891: - IFERR seems to be fixed (in equation evaluation routine);
 1892: - Memory leak is fixed (ADR object type);
 1893: - DATE returns both date and hours;
 1894: - TIME now returns user and system CPU times;
 1895: - MEM is added.
 1896: * Thu Jan 10 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3g (RPL/2)
 1897: - Makefile is improved to support sparc v7 (sun4c), sparc v8 (sun4m) and
 1898: sparc v9 (sun4u). Now, RPL/2 can be built on i386 (i486 is known as i386),
 1899: i586, i686, K6, K7, alpha ev4, alpha ev5, alpha ev56, alpha ev6, sparc v7,
 1900: sparc v8 and sparc v9. Compilation of RPL/2 on my Sun Sparc 2 (sun4c,
 1901: CPU 4/75, 64 MB, 40 MHz with FPU) is a very great mission :
 1902: 
 1903: Newton:[~/rpl/rpl] > time make install
 1904: ...
 1905: real    338m39.623s
 1906: user    324m32.290s
 1907: sys     10m47.380s
 1908: Newton:[~/rpl/rpl] >
 1909: 
 1910: I don't know if you will compile this language on old worstations, but
 1911: it is usable ;-) ;
 1912: - SYSEVAL is improved. An external program can be called without any shell.
 1913: Thus, even if the sticky bit is set, RPL/2 can not give a shell root when
 1914: a SYSEVAL command crashes;
 1915: - minor bug is fixed in recherche_type() (# xxxxb parsing);
 1916: - presence of bootstrap entry point is verified before launching the
 1917: sequencer;
 1918: - minor bug is fixed in formateur_tex() (underscore in mathematical
 1919: expression);
 1920: - Lapack is updated.
 1921: * Thu Jan 3 2002 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3f (RPL/2)
 1922: - IFERR is now known in an expression, but not usable.
 1923: * Mon Dec 31 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3e (RPL/2)
 1924: - several bugs are fixed.
 1925: * Mon Dec 17 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3d (RPL/2)
 1926: - major bugfix in file locking.
 1927: * Fri Dec 14 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3c (RPL/2)
 1928: - minor fixes is system() call.
 1929: * Fri Nov 30 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3b (RPL/2)
 1930: - automatic limitation of the graphical depth due to a limitation (bug ?)
 1931: of gnuplot.
 1932: * Mon Nov 19 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3a (RPL/2)
 1933: - new file temp management.
 1934: * Sun Nov 18 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre3 (RPL/2)
 1935: - memory leak is fixed in STO instruction;
 1936: - minor bug in file management is fixed;
 1937: - BACKSPACE is added;
 1938: - VARS is added;
 1939: - file locks are improved.
 1940: * Wed Nov 14 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2l (RPL/2)
 1941: - major bug is fixed (on sparc architecture) and RPL/2 can now run
 1942: on sparc stations;
 1943: - INDEP and DEPND are improved;
 1944: - AXES is added;
 1945: - WRITE, APPEND and REWIND are added.
 1946: * Sun Nov 11 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2k (RPL/2)
 1947: - write is improved ;
 1948: - major bug is found and fixed in copie_objet() with struct_fichier;
 1949: - minor bug is fixed in OPEN function;
 1950: - minor bug is fixed in analyse_syntaxique() subroutine. All commands
 1951: are analysed before starting their executions.
 1952: * Thu Nov 8 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2j (RPL/2)
 1953: - minor bug is fixed in appel_gnuplot();
 1954: - RPL/2 can work without LANG variable.
 1955: * Wed Oct 31 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2i (RPL/2)
 1956: - WAIT function is improved (removing the polling function);
 1957: - LAST stack is not active (default) when rpl is called without the option -i.
 1958: In all other cases, LAST stack is active;
 1959: - Labels can be added on a gnuplot output (function LABEL);
 1960: - LCD-> and ->LCD are added.
 1961: * Sun Oct 21 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2h (RPL/2)
 1962: - minor bug is fixed in TeX output (pi);
 1963: - new english manual is added.
 1964: * Wed Oct 16 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2g (RPL/2)
 1965: - LOCK, WFLOCK and UNLOCK are added. A file is locked when it is opened;
 1966: - VERSION function is added. It returns the version number of the interpreter;
 1967: - minor bug is fixed in evaluation subroutine;
 1968: - english error messages are been fixed.
 1969: * Tue Oct 09 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2f (RPL/2)
 1970: - interrupt subroutine is added;
 1971: - formatted files support is continued.
 1972: * Sun Sep 30 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2e (RPL/2)
 1973: - formateur_fichier.c is added to perform formatted files write.
 1974: * Thu Sep 27 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2d (RPL/2)
 1975: - minors bugfixes in FIX format in formateur_reel() subroutine;
 1976: - new manual page in english;
 1977: - FORMAT intrinsic is added and can read any format for "formatted" file.
 1978: * Sun Sep 23 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2c (RPL/2)
 1979: - OPEN, CLOSE, SYNC, INQUIRE, CREATE and DELETE are tested;
 1980: - a man page in the first manual section is written.
 1981: * Thu Sep 20 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2b (RPL/2)
 1982: - major bugfixes in recherche_type() subroutine: sometimes in interactive mode,
 1983: this routine was be able to forget the last element of a list, a vector or
 1984: a matrix.
 1985: * Mon Sep 17 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2a (RPL/2)
 1986: - OPEN, CLOSE and DELETE are known by the language but not very usable;
 1987: - minor bugfixes in evaluation routine.
 1988: * Sun Sep 16 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre2 (RPL/2)
 1989: - major bugfixes in evaluation routine.
 1990: * Sat Sep 15 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1d (RPL/2)
 1991: - conditional structures can be used in equations.
 1992: * Fri Sep 14 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1c (RPL/2)
 1993: - Minor bugfixes in makefile.
 1994: * Sat Sep  8 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1b (RPL/2)
 1995: - CONVERT is written;
 1996: - CYCLE, FOR/NEXT, FOR/STEP, START/NEXT, START/STEP, DO/UNTIL/END and
 1997: WHILE/REPEAT/END can now be used in an equation;
 1998: - I fix some troubles with evaluation subroutine;
 1999: - db3 library is added.
 2000: * Thu Sep  6 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1a (RPL/2)
 2001: - add rplconvert and rplunits sources;
 2002: - add CONVERT definition (but it does not work).
 2003: * Mon Sep  3 2001 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre1 (RPL/2)
 2004: - initial public release (GPL).
 2005: * Thu Apr  2 1998 BERTRAND Joël <rpl2@systella.fr> rpl-4.00pre0 (RPL/2)
 2006: - RPL is rewritten from scratch and renamed RPL/2.
 2007: #* 1992 BERTRAND Joël rpl-3.02 (RPL-387)
 2008: #- minor bugfixes.
 2009: #* 1991 BERTRAND Joël rpl-3.01 (RPL-387)
 2010: #- arithmetic processor support is added to improve global performances.
 2011: #* 1991 BERTRAND Joël rpl-3.00 (RPL-386)
 2012: #- idem... but on an i386DX...
 2013: #* 1990 BERTRAND Joël rpl-2 (RPL-6809)
 2014: #- a new release on a more powerfull processor and with new functions and an
 2015: #built-in editor. It has been written on a SMT-Goupil G3-6809 running
 2016: #Flex9 (320 KB of RAM and a graphic card used to draw 512*256 graphics in
 2017: #8 colors)
 2018: #* 1989 BERTRAND Joël rpl-1 (RPL-6502)
 2019: #- initial release (only an historic interest) written on an ORIC Atmos 48K.
 2020: #No graphic was provided.

CVSweb interface <joel.bertrand@systella.fr>