newLISPtm v.8.3.1 Release Notes November 23rd, 2004
This release improves on communication between and synchronization of threads, which where introduced in version 8.2.0 by introducing semaphores and shared memory access. Processes now can re-map their standard I/O to pipes for communicating with the parent process.
Various improvements and fixes in the area of contexts and programming with contexts. Contexts can be deleted easier and mix-ins are possible when margin contexts in prototype oriented programming. Single functions can be moved/mixed between contexts. Contexts with overwritten MAIN symbols can correctly be serialized.
Various improvements for importing shared libraries and DLLs into newLISP and for passing parameters.
Improvements and bug fixesOther improvements and bug fixes are listed in the following table:
new or changed functionality
wait- and signal- semaphores can be created for synchronizing threads and processes.
shared memory regions can be declared for sharing variable contents between threads and processes.
symbol or sym
can now be used to overwrite symbols in MAIN.
now can be used to write/append to strings for fast in-place growing of strings
now can re-map std I/O on child processes. On Win32 process now can take an additional parameter for hiding or iconizing windows.
in list mode (string mode is deprecated) now only returns the matched portions for easier interfacing with other functions and writing of unifying functions. New wildcard operator '+' for matching one or more elements.
collect, getenv, putenv and environ
these deprecated functions are now completely eliminated from code and documentation. All have functional equivalent replacements with 'select' and 'env'.
has an added flag for daylight savings time, but does not work on most OS's.
now returns error number and text separated in a list.
for reporting underlying 'C' library OS errors after some I/O error situations
is now optimized when pushing as the last element using '-1'
by default will not overwrite existing symbols to make mixins possible. A 'true' flag can be used to still force overwrites.
can now take an additional option bit 0x8000 for replacing only once in a string: (replace "a" "aaa" "A" 0x8000) => "Aaa"
command line options
the space between option characters (-s,-m,-p,-d,-e) and option value can now be omitted, i.e. -s 10000 and -s10000, both work.
when given without any parameter now returns current date/time string
without an argument returns the time of seconds since 1970-1-1 0:00, is equivalent to (apply date-value (now))
now can delete an entire context without removing contained symbols first
now can be used to serialize context correctly, which overwrite symbols in MAIN
symbol or sym
now can create symbols from numbers and character sequences not legal as symbols in newLISP source code. This makes it possible to use 'symbol' or the abbreviated 'sym' for hash-table like associative memory lookup. 'symbol' / 'sym' is also faster than before.
works similar to 'new' but on single functions.
works like let* in other LISPs allowing incremental/recursive definitions of local bindings in the 'letn' locals list.
(previously only documented in 'hacking_newlisp.html') now also returns addresses to integer and double float data type, useful when passing int * or double * to imported functions, now documented in main manual.
abbreviated for 'integer' for quicker writing of casts in imported library functions.
now converts all types as needed, i.e. (unpack "b" (pack "b" -1.0)) => 255 from-to integer-floats, did it before only for "f" and "lf".
have a new format character 'b' for unsigned 8 bit bytes
converts a number into a 32 bit float represented as a newLISP 32 bit integer, this enables easier, quicker passing of 32 bit float to imported library functions without using 'pack' first.
had a memory leak when backtracking.
failure did nit set net-error.
with empty command string crashed.
now can be used on dynamic context variables.
forward reference to a symbol in symbol did not work in mixin mode of 'new'.
crashed on an empty key strings and now gives an error message.
skipped wrong typed indices instead of giving an error message.
did not work with constant multiple indices
new example how to import newlisp.dll into the Excel spreadsheet program.
The versions newLISP 8.2.1 to 8.2.7 were released as development versions.
WinCE is still untested and in alpha/development status. The last compiling and linking version of newLISP for the Arm based pocket PV is 8.2.0, the source for 8.3.0 has not been cleaned up yet to compile with the WinCE makefiles.