newLISPtm v.8.3.1 Release Notes November 23rd, 2004


Highlights

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 fixes

Other improvements and bug fixes are listed in the following table:

new or changed functionality
description
version
semaphore
wait- and signal- semaphores can be created for synchronizing threads and processes.
8.2.1
share
shared memory regions can be declared for sharing variable contents between threads and processes.
8.2.1
symbol or sym
can now be used to overwrite symbols in MAIN.
8.2.1
write-buffer
now can be used to write/append to strings for fast in-place growing of strings
8.2.2
process
now can re-map std I/O on child processes. On Win32 process  now can take an additional parameter for hiding or iconizing windows.
8.2.2
match
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.
8.3.3
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'.
8.2.4
now
has an added flag for daylight savings time, but does not work on most OS's.
8.2.4
net-error
now returns error number and text separated in a list.
8.2.4
sys-error
for reporting underlying 'C' library OS errors after some I/O error situations
8.2.4
push
is now optimized when pushing as the last element using '-1'
8.2.4
new
by default will not overwrite existing symbols to make mixins possible. A 'true' flag can be used to still force overwrites.
8.2.4
replace
can now take an additional option bit 0x8000 for replacing only once in a string: (replace "a" "aaa" "A" 0x8000) => "Aaa"
8.2.5
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.
8.2.5
date
when given without any parameter now returns current date/time string
8.2.5
date-value
without an argument returns the time of seconds since 1970-1-1 0:00, is equivalent to (apply date-value (now))

8.2.5
delete
now can delete an entire context without removing contained  symbols first

8.2.6
save
now can be used to serialize context correctly, which overwrite symbols in MAIN
8.2.6
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.
8.2.6
def-new
works similar to 'new' but on single functions.
8.2.6
letn
works like let* in other LISPs allowing incremental/recursive definitions of local bindings in the 'letn' locals list.
8.2.6
address
(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.
8.2.7
int
abbreviated for 'integer' for quicker writing of casts in imported library functions.
8.3.0
pack
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".

8.3.0
pack, unpack
have a new format character 'b' for unsigned 8 bit bytes
8.3.0
flt
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.
8.3.0
bug fixes
description
match
had a memory leak when backtracking.
8.2.3
net-connect
failure did nit set net-error.
8.2.4
newlisp -e
with empty command string crashed.
8.2.4
symbol?
now can be used on dynamic context variables.
8.2.5
new
forward reference to a symbol in symbol did not work in mixin mode of 'new'.
8.2.5
encrypt
crashed on an empty key strings and now gives an error message.
8.2.7/9
array
skipped wrong typed indices instead of giving an error message.
8.3.0
set-nth, nth-set
did not work with constant multiple indices
8.3.1
other additions


newLISP-Excel-Import.xls
new example how to import newlisp.dll into the Excel spreadsheet program.
8.2.1


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.