newLISPtm v.9.4.5 Release Notes August 5th, 2008
Versions 9.4.1 to 9.4.5 are corrective updates to the 9.4.0 release with minor additions in functionality in version 9.4.4. These additions are marked: (v9.4.4) in the following text.
New API for hash-like dictionary access
newLISP has always used names-paces to build dictionaries for associative memory access, but the API (application programming interface) was lengthy and the created dictionaries where not always safe for saving and reloading, because of overwritten system symbols.
The new API is short and safe. Dictionaries created with the bayes-count function can be used as dictionaries with hash-like access and vice-versa. The new API allows for easy transformation of association lists into namespaces for hash-like access and and vice-versa converting association lists into namespaces.
For details on this new API see the chapter Dictionaries and hash tables in the users manual.
New Cilk API for multi processing
The new Cilk API works with only three new functions:
- spawn for starting the evaluation of a function in a child process.
- sync for synchronizing data transfer from finished child processes.
- abort for aborting s specific or all child processes.
The new Cilk API takes advantage of todays multi-core CPUs as the operating system will distribute different processes on to different cores inside the processor. Even on single core processors the new API is useful wherever multiple processes in a program have to be coordinated and with data transfer in between them. An inlet function for event driven syncronization is also supported. The new API encapsulates exisiting functionality from the fork, wait-pid and share functions.
This new API works on Mac OS X and Linux/UNIX, on Win32 it is only simulated to make source code portable.
A general mechanism for reference passing
Namespaces in newLISP always haven been passed by reference to user-defined functions, but only few bult-in newLISP primitives could handle data packaged in namespaces with default functors. Now any function in newLISP can handle strings and lists packaged this way. See the chapters default functor and Passing data by reference in the users manual for more information.
More access to newLISP internals
- read-expr hooks into the internal source reader to access expressions before evaluation.
- prompt-event can fully customize the prompt in the interactive newLISP console.
- command-line enables pre-processing of the command line and HTTP requests.
One of newLISP's strengths is working with it interactively in a terminal. prompt-event and command-event allow a full integration of a OS shell and newLISP interactive mode. See the reference of the command-event function for an example.
Improved newLISP-GS with MIDI support
- Several bugfixes in the newLISP-GS editor.
- MIDI support for internal sound synthesizer and external sound-banks.
Other API changes and additions
- The $idx system variable is now updated by all non-counting iterating functions including map. (v.9.4.4)
- bind has a new optional flag to force evaluation of bound parameters.
- env now removes an environment variable when set to an empty string (except Solaris, where it stays as an empty string).
- if-not works like unless which will lose the else clause in a future version to be symmetrical to when. (v.9.4.4)
- inc and dec now can operate on symbols containing nil assuming they contain 0 (zero). (v.9.4.4)
- lookup can take an optional default expression to return when lookup failed.
- randomize has been rewritten using a better algorithm.
- new regex-comp allows pre-compilation of regular expressions.
- Deprecated replace-assoc has been removed. Use set-assoc and pop-assoc instead. (v.9.4.4)
- search has a new parameter to put the file pointer to either the beginning or end of the searched string.
- series can take a lambda function instead of a multiplication factor.
- sys-info now also returns the process id on Mac OS X and UNIX.
- wait-pid has changed parameters for better control of child processes.
Added and removed files
- mysql.lsp The original MySQL v.4.0 module has been removed. Use either the mysql5.lsp or mysql51.lsp module for MySQL versions 5.0 and 5.1.
- nanorc A configuration file for newLISP syntax highlighting in the GNU nano editor has been added to util directory in the source distribution and install directories. The file support syntaxhighlighting for newLISP .lsp, C .c and .h files and for HTML .html files. This modeless editor is installed bu default on Mac OS X, UBUNTU Linux and most other Unix installations.
All known bugs have been fixed. For a detail of bug fixes see the CHANGES notes in the source distribution.