> # 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.

> §