--- rpl/ChangeLog 2010/02/11 16:30:34 1.8 +++ rpl/ChangeLog 2012/06/25 09:57:49 1.124 @@ -1,4 +1,394 @@ -* Wed Feb 10 2010 BERTRAND Joël rpl-4.0.11 (RPL/2) +* Mon May 21 2012 BERTRAND Joël rpl-4.1.9 (RPL/2) +- escaped characters are fixed in READ and WRITE operations; +- major bug is fixed in READ intrinsic (on socket). End of file condition +was randomly caught on slow network; +- stdin can now handle espaced characters strings in SYSEVAL; +- --with-gcc-version is added to configure script to force gcc version as +gfortran 4.7 is broken and crashes with segmentation fault. +* Mon May 21 2012 BERTRAND Joël rpl-4.1.8 (RPL/2) +- POLL now accepts more than one descriptor and returns informations +about pollable descriptors; +- SMPHRTRYDECR now takes timeout value instead of returning when semaphore +cannot by decremented; +- signal handlers are fixed to avoid spurious and very rare deadlocks; +- pari is upgraded; +- force CFLAGS for tools/file (-O2 -g) to avoid mmap() error; +- giac, gmp and mpfr have been upgraded. +* Fri Apr 13 2012 BERTRAND Joël rpl-4.1.7 (RPL/2) +- double quote is escaped in INPUT and PROMPT intrinsic functions; +- error is returned (instead of warning) when unavailable intrinsic function +is called; +- lot of minor bugs have been fixed; +- ncurses and file are patched; +- RPL/2 can now be cross compiled (until .deb archive generation); +- all table, vector and matrix dimensions are now treated as unsigned long; +- recherche_type() function is modified to use cached memory; +- gnuplot is upgraded to 4.6.0. +* Wed Feb 29 2012 BERTRAND Joël rpl-4.1.6 (RPL/2) +- serial line support is added to OPEN (STTY options); +- multiline inputs are allowed: +schroedinger:[~/cvs/build/src] > rpl -is ++++RPL/2 (R) version 4.1.6 (Monday 01/30/12, 10:20:38 CET) ++++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël + ++++Ce logiciel est un logiciel libre sans aucune garantie de fonctionnement. ++++Pour plus de détails, utilisez la commande 'warranty'. + +RPL/2> [[ 1 2 3 ] ++ 001> [ 4 5 6 ] ++ 002> [ 7 8 9 ]] + +1: [[ 1 2 3 ] + [ 4 5 6 ] + [ 7 8 9 ]] +RPL/2> [[ 1 23 ] ++ 001> [ 4 5 6 ]] ++++Erreur : Erreur de syntaxe [19267] + +1: [[ 1 2 3 ] + [ 4 5 6 ] + [ 7 8 9 ]] +RPL/2> [ 1 2 3 ++ 001> annulation +RPL/2> abort + +'annulation' is done by pressing CTRL+g, and abort by CTRL+d on empty line. +* Tue Jan 17 2012 BERTRAND Joël rpl-4.1.5 (RPL/2) +- ncurses, sqlite and openssl have been upgraded; +- major bug is fixed in ** (integer integer **) when first argument is equal to +-1; +- major bug is fixed in signal management. With new signal management, thread or +process were not signalized anymore by POSIX signals. If a thread or a process +was sleeping, it was not interrupted; +- minor bug is fixed in OPEN intrinsic. Now, when a socket is open, its default +adress is set to 0.0.0.0; +- new rule is added to main makefile (make debian) to build deb package; +- new benchmark (Xeon W3520 @ 2.67GHz) : +schroedinger:[~/cvs/bench] > ./bench.rpl ++++RPL/2 (R) version 4.1.5 (Friday 12/02/11, 12:18:23 CET) ++++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël +Number of scalar operations per second and per core : 3809121.83444626 +schroedinger:[~/cvs/bench] > +- recherche_type() did not convert huge integer in real. Now, +18446744072742037448 is converted into real as value cannot be stored in +RPL/2 integer type; +- WFSOCK is modified to handle unconnected sockets; +- REGEX is added; +- RESTART is added (execvp() on main RPL/2 process); +- copie_objet() now returns same MTX (struct_mutex) even if caller wait for +a real copy. Now, struct_mutex contains locks owner. On Linux or Solaris (for +example), it is possible to lock mutex from a thread and unlock the same mutex +from another thread. On NetBSD, system crashes. +* Mon Nov 21 2011 BERTRAND Joël rpl-4.1.4 (RPL/2) +- rplcas/@GIAC@/src/config.h is removed to avoid compilation bug. config.h +written by configure script was overloaded by src/config.h; +- lot of compilation warnings have been fixed; +- lapack and blas have been upgraded; +- ncurses, sqlite and giac have been upgraded; +- LCASE, UCASE, POS and SUB now handle escape characters; +- major bug is fixed in INT (numerical integration was unusable as type +checking condition was always false); +- SIZE, CHR and NUM can handle strings with escape characters; +- lot of patches for Android and OS/2; +- configure.ac is improved to remove operating systems special cases. +- major bug is fixed in DRWS (SDAT was not used...); +- lists, and integer, real and complex numbers can now be written in +unformatted files; +- rplawk makefile is fixed to avoid build process bug. Warning, with these +modifications, sources tree has to be writable. +* Wed Sep 21 2011 BERTRAND Joël rpl-4.1.3 (RPL/2) +- Linux port, MacOS X port and xBSD ports are tested and fully fonctionnal; +- libsigsegv is added; +- OpenMotif is added; +- all internal signal handlers are rewritten to avoid POSIX signal usage +and to be async signal safe; +- SIGSEGV signal handler is rewritten; +- SREV intrinsic is added. +* Tue Aug 9 2011 BERTRAND Joël rpl-4.1.2 (RPL/2) +- I have fixed a lot of bugs in gpp preprocessor (and sent gpp 3.0 to official +gpp developer). Now, macros like + + #define foo foo bar + +is evaluated without recursion. gpp 2.24 crashed on stack overflow. +- LIMIT is added; +- Now, undefined values like 'infinity/infinity' are computed. Result is +undef constant; +- infinity constant is added. +* Sun Jul 24 2011 BERTRAND Joël rpl-4.1.1 (RPL/2) +- VERSION now returns OS type, architecture and ABI; +- configure script is updated. New flags : + --with-32bits-abi + --with-64bits-abi + --with-rplcas +Please not that RPL/CAS is not built by default; +- Lapack is upgraded to 3.3.1. +* Mon Jun 27 2011 BERTRAND Joël rpl-4.1.0 (RPL/2) +- New stable release. +* Fri Jun 22 2011 BERTRAND Joël rpl-4.1.0.prerelease.4 (RPL/2) +- some minor changes have been done in instruction_int() to accept new argument +types; +- interface_cas.cpp now catchs exceptions returned by giac. +* Fri Jun 24 2011 BERTRAND Joël rpl-4.1.0.prerelease.3 (RPL/2) +- INT intrinsic now uses RPLCAS to compute symbolic integration; +- minor bug is fixed in INTRINSIC function. Now, this function gives same +result with ou without -p switch. +* Wed Jun 22 2011 BERTRAND Joël rpl-4.1.0.prerelease.2 (RPL/2) +- memory caching is added to new variable tree. +* Tue Jun 21 2011 BERTRAND Joël rpl-4.1.0.prerelease.1 (RPL/2) +- SPAWN is now usable with new variable management; +- MEM is rewritten; +- PRUSR is rewritten; +- merge 4_0 branch into HEAD; +- CLUSR is rewritten; +- -p flag is now usable; +- New benchmark: +cauchy:[~/rpl/bench] > ./bench.rpl ++++RPL/2 (R) version 4.1.0.prerelease.1 (lundi 20/06/2011, 23:00:45 CEST) ++++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël +Number of scalar operations per second and per core : 2625369.22710792 +* Mon Jun 20 2011 BERTRAND Joël rpl-4.1.0.prerelease.0 (RPL/2) +- New variable management is written. Please note that -p flag does not work +and all multithread/multitask capabilities have been disabled until this +new subsystem shall be validated. +* Thu May 09 2011 BERTRAND Joël rpl-4.0.23 (RPL/2) +- major bug is fixed in STD format (1E7 sq prints 1); +- major bug is fixed in READ intrinsic (socket). This bug was introduced +by a new feature in glibc. +* Thu Apr 14 2011 BERTRAND Joël rpl-4.0.22 (RPL/2) +- by default, RPL/2 uses "NONE" IMPLICIT when it's started in batch mode and +"ALL" IMPLICIT when it runs in interactive mode; +- when "NONE" IMPLICIT is set, STO intrinsic raises an error when it is used +to create or modify a global variable. Now, with "NONE" IMPLICIT, you have +to use SAVE to manipulate global variables; +- replace erroneous TAB by TBL in evaluation() and formateur_fichier() +subroutines; +- fix major memory access violation in evaluation subroutine. Only occurs +when 'X(i,j)' is evaluated on a matrix and when (i,j) points out of bounds; +- fix major bug in evaluation subroutine. 'X(i)' returns execution error +when X was a vector or a table. +* Sun Apr 04 2011 BERTRAND Joël rpl-4.0.21 (RPL/2) +- Gnuplot is upgraded; +- flag 34 is now used to enable or disable control character evaluation; +- major bug is fixed in P->R intrinsic function when argument type is +complex and degree mode is set; +- L->T and T->L are added; +- OLD filetype is fixed; +- FLOW socket support is added; +- FLOW sequential files are added; +- new escape sequence is added to handle flow files (\x + hexadecimal code). +Known escape sequences are \", \b, \n, \t, \x?? and \\. +* Sun Mar 06 2011 BERTRAND Joël rpl-4.0.20 (RPL/2) +- Ncurses is upgraded to 5.8; +- ALARM is fixed by filling isdst field; +- catch ECONNRESET in write intrinsic to return an execution error instead of +system one; +- fix a typo in HELP intrinsic; +- Openssl is upgraded to 1.0.0d, sqlite to 3.7.5 and readline to 6.2; +- Lapack is upgraded to 3.3.0; +- libmtmalloc is now default Solaris allocator; +- ncurses is upgraded; +- regression introduced by 4.0.19 is fixed in signal management. +Interruption1() could be called from itself and raises bus error (on sparc) or +segmentation fault; +- sqlite is upgraded to 3.7.4; +- OpenSSL is upgraded to 1.0.0c; +- syntax error is correctly checked ( (2+,0) does not crash RPL/2 anymore); +- characters are tested in recherche_type() to avoid names like '12+'; +- gnuplot is upgraded to 4.4.2 due to major bugs. +* Thu Sep 23 2010 BERTRAND Joël rpl-4.0.19 (RPL/2) +- due to a very strange bug I've only seen on Solaris, ptmalloc3 is removed. +Solaris libresolv randomly uses ptmalloc3 and system allocator and makes heap +corruption. As internal memory management have been improved, a best fit +allocator like ptmalloc3 is not required anymore; +- gnuplot is upgraded to 4.4.1; +- deadlock is fixed in signal handlers: same mutex was used in standard +subroutines (without protected sections by sigprocmask() or pthread_sigmask()) +and signal handlers. A new signal handler specific mutex is added; +- minor bug is fixed in evaluation() subroutine. In { X 0 PI }, PI is a function +that has to be evaluated by ->NUM; +- rplfile build process is modify to be sure that rplfile is not modified +after rpl build stage (to be sure that rplfile checksum is not modified after +rpl compilation); +- AWK is replaced by rplawk. rplawk is original awk written by Brian Kernighan, +modified to remove yacc code and renamed; +- some workarounds have been written to not use buggy klibc SystemV IPCS. +ABORT now works on eComStation; +- sqlite is upgraded to 3.7.2; +- bug is fixed in software interrupts. When both process have different PID, +parent process was not interrupted if it is not group master process. To fix +this bug, SIGINJECT signal is not sent by child process but by control thread +in parent process; +- minor bug is fixed in data injection (POKE) that does not work as expected +when child process is protected by NRPROC. +* Thu Aug 26 2010 BERTRAND Joël rpl-4.0.18 (RPL/2) +- --enable-sysv-sems is added to configure script to use SystemV semaphores +functions instead of POSIX functions. This function is disabled or forced on +systems that does not provide correct POSIX or SysV semaphores subsystem; +- a dirty but not quick patch is written to workaround broken siginfo +structures. This patch has been successfully tested. It uses a segment of +shared memory (Posix or SysV) and some semaphores (Posix or SysV) by process +(Unix PID); +- some OpenBSD's hacks are added; +- broken siginfo->si_pid field is now checked by configure script; +- SWI now sends SIGCONT to interrupted process to start interrupt without delay; +- random generator is cloned by SPAWN; +- in transliteration subroutine : '\r' is added after all '\n' in OS/2 port; +- getaddrinfo is hardcoded when host system does not provide getaddrinfo +or freeaddrinfo; +- RPL/2 can now use SystemV semaphores when POSIX semaphores are unavailable; +- major bug is fixed in CHR intrinsic when obtained character is not printable; +- Lapack is upgraded to 3.2.2; +- OS/2 (eComStation 2.0 with EMX 0.9d) support is added; +- TOKENIZE is now able to convert escape sequences; +- ATPOKE and CLRATPOKE new intrinsics are added; +- --enable-full-static configure flag is added. With this flag, mysql and +postgresql libraries are statically linked in rpl executable; +- units Makefile is modified to avoid readline and ncurses usages; +- sqlite is upgraded to 3.7.0.1; +- units is upgraded to 1.88; +- another major bug is fixed in the same variable creation subroutine. +Level 0 and 1 variables adresses were swapped when a global variable masked +a name of RPL/2 routine; +- major bug is fixed in global variable creation subroutine. When a global +variable was created and when a local variable existed with the same name, +computed address of global variable was wrong; +- src/Makefile.am is modified to avoid a bug on several systems. libptmalloc3 +is forced in front of all libraries. +* Tue Jul 13 2010 BERTRAND Joël rpl-4.0.17 (RPL/2) +- BACKTRACE intrinsic is added; +- major bug is fixed in SELECT/DEFAULT/END conditional structure. Only occurs +when this structure is included in IFERR/THEN/END structure and when an error is +caught; +- major bug is fixed in analyse() subroutine. When evaluation() returned error +in a compiled program, analyse() caught this error twice and randomly aborted +with a segmentation error; +- TRIM and TOKENIZE replace both '\n' and '\t' by regular spaces; +- ATEXIT subroutine begins with an implicit CSTOP to avoid multiple stop +signals; +- memory leak is fixed in ROW+. It only occurs when a row is added to an empty +matrix. +* Thu Jun 24 2010 BERTRAND Joël rpl-4.0.16 (RPL/2) +- minor bug is fixed in evaluation() subroutine. With this patch, same program +returns same result with or without -p flag; +- ncurses 5.7 is upgraded to 20100619; +- openssl is upgraded to 1.0.0a; +- interrupt stacks are now FIFO instead of LIFO; +- debug memory allocation subroutines are improved to run in multithreaded +programs; +- some memory leaks are fixed in process management (SPAWN and DETACH); +- version verification is added to shared objects; +- -D_GNU_SOURCE is added to ptmalloc3 makefile to avoid a major bug on 64 bits +linux (false mremap() prototype); +- major bug is fixed in rpliconv. getc() returns an int, not a unsigned char. +* Sun May 23 2010 BERTRAND Joël rpl-4.0.15 (RPL/2) +- all '-' are replaced by '_' in random generator list; +- minor memory leak is fixed in OPEN intrinsic (socket); +- major bug is fixed in IFERR structure. Only occurs in compiled program; +- major bug is fixed in copie_objet() and liberation(). Only concerns +format in FCH (file descriptor) and SCK (socket descriptor); +- debug routines are improved; +- PROCID is added; +- MEMLOCK and MEMUNLOCK are added. MEMLOCK forces a process to remain in memory +and to not use swap; +- major bug is fixed in sql support. SQL connections were closed in all chield +process; +- standard allocator (malloc()/free()) is replaced by ptmalloc3 due to some bugs +discovered in Solaris thread safe allocators (libmalloc and libumem) that +are first fit class allocators. Solaris libmtmalloc works better and is +a best fit class allocator but its performance is poor than ptmalloc3 +performance; +- major bug is fixed in ROW+ intrinsic (new row was not added where it +should); +- minor bugs are fixed in interruptions.c (semaphores values when error is +caught); +- major bug is fixed in STOP intrinsic. STOP was unable to stop any process +created by SPAWN; +- SIGFABORT is added. When process receives SIGFSTOP, it tries to execute +ATEXIT. If it receives SIGFABORT, it does not; +- ONEXIT is renamed in ATEXIT; +- ONEXIT new intrinsic is added. +* Wed Apr 21 2010 BERTRAND Joël rpl-4.0.14 (RPL/2) +- major bug is fixed in static and shared variables initialization subroutine. +This bug only occurs when RPL/2 tries to create a shared or static variable +from an expression; +- major bug is fixed in copie_etat_processus(). A field that contains +information about shared variable was not copied to new processus structure; +- some little memory leaks are fixed in evaluation(), recherche_type() and +sequenceur(). They only occured when syntax error were caught; +- IMPLICIT causes execution error instead system error; +- Hurd support is improved but currently broken because Hurd does not support +SIG_INFO. Work in progress; +- OpenBSD specific support is removed from sources; +- support for Mac OS X and Windows/Cygwin is added. +* Wed Apr 07 2010 BERTRAND Joël rpl-4.0.13 (RPL/2) +- implicit names can now be disabled by new IMPLICIT intrinsic: +cauchy:[~/cvs/test] > cat implicit.rpl +#!/usr/local/bin/rpl -sp +TEST +<< + "none" implicit + + 1 -> Z + << + Z disp + 'Z' disp + >> + + 'Z' disp + Z disp // Undefined +>> + +cauchy:[~/cvs/test] > LANG=C ./implicit.rpl ++++RPL/2 (R) version 4.0.13 (Wednesday 04/07/10, 13:57:44 CEST) ++++Copyright (C) 1989 to 2009, 2010 BERTRAND Joel +1 +'Z' +'Z' ++++System : Invalid implicit name [6631] +cauchy:[~/cvs/test] > + +RPL/2 aborts because the last Z is undefined and not protected by ''. +By default, implicit is set to "ALL"; +- sqlite is upgraded to 3.6.23.1; +- openssl is upgraded to 1.0.0; +- major bug is fixed in RETURN intrinsic. It only occurs in evaluation +subroutine; +- table variable can now be sorted by SORT; +- some regressions between libtool 1.x and 2.x are fixed by workarouds in +Makefiles; +- -a command line option analyzes program (structure and syntax) and +sends preprocessor output to standard output. This option is used by +rplc (RPL/2 compiler). +* Tue Mar 09 2010 BERTRAND Joël rpl-4.0.12 (RPL/2) +- in formatted file, string format returned a variable length string even if +format was 'CHARACTER*(n)' (n characters string). Now, 'CHARACTER*(*)' returns +a variable length string and 'CHARACTER*(n)' a fixed length string; +- keyed access files support is added. Currently, only formatted files are +supported; +- direct access files support is added. Currenlty, these files can only be used +in formatted mode; +- virtual variables are now writte in UTF-8 and all special characters +in string are escaped; +- all formatted files are now converted into UTF-8; +- all file and unix socket names created by RPL/2 are now UTF-8 compliant; +- RPL/2 tools (rpliconv, rplfile, rplpp and rplconvert) are now checked before +each execution (md5 and sha1 sums) to enhance security. If one of these tools +have been modified between RPL/2 compilation and current execution, RPL/2 aborts +on a non recoverable system error; +- openssl and sqlite3 libraries are added; +- RPL_HOME env variable is added. When RPL/2 is called from librpl, this +variable indicates RPL/2 root directory. If it is not set, root path +is given by configure script (d_exec_path); +* Thu Mar 03 2010 BERTRAND Joël rpl-4.0.11 (RPL/2) +- configure.in and makefile.am's are modified to add Cygwin support. Interix +support is broken; +- memory leak is fixed in recherche_type(); +- TeX files are now written in UTF-8 even default locale differs; +- minor bug is fixed in ->STR (escaped characters); +- minor bug is fixed in ->Q intrinsic. Resultat is returned as integer +fraction intead real one; +- SIGN now returns (0,0) instead (nan,nan) when complex argument is null; - Makefile.am are modified to authorize parallel builds; - minor bug is fixed in CR intrinsic. CR sends a carriage return to printer and writes warning to standard output;