newLISPtm v.9.1 Release Notes February 15th, 2007

Version 9.1.1 is a Win32 update only and was released on March 15th. MacOS X, Linux and other UNIX users do not need to upgrade.

Like in previous versions, most of the additions and changes in newLISP version 9.1 come from ideas generated by the community of its users. Many of the additions in functionality are not visible on the API surface because they are added options of existing functions, or they are application of existing functions to new data types. This approach keeps the API at a manageable size for the beginning user, and at the same time offers more control and options for the experienced newLISP user.

In the spirit of previous newLISP releases version 9.1 has gotten more cooparative with added functionality and maintains a small executable size with a growth of only 3% to 4% depending on the platform and compile flavor.

Many thanks to all users who have voiced their ideas for improvements.

First release with full 64-bit support

Version 9.0 introduced 64-bit arithmetic and 64-bit support for some file operations. Version 9.1 can be compiled for the LP64 memory model the coming standard for 64-bit operating systems and already supported by Linux. In this memory model all memory pointers are 64-bit and 8, 16, 32 and 64-bit data types are supported in integers. Floating point numbers are supported as 64-bit double in IEE-754 format, as usual before on 32-bit platforms. newLISP comes with a makefile for 64-bit Linux, Tru64Unix and Solaris for the large LP64 memory model, but also can still be compiled as a 32-bit application on those platforms.

Compiled as a LP64 application newLISP supports importing of 64-bit libraries and memory addressing and data objects of up to 16 Exabytes (17,179,869,184 Gigabytes).

Built-in HTTP server mode

newLISP's server mode has been enhanced to support HTTP GET, PUT and DELETE protocols on all platforms without any additional files or modules. HTTP server mode was rudimentary supported in version 9.0, but now also covers CGI processing and full customization via a http-conf.lsp configuration file written in newLISP.

The main function of newLISP's built-in HTTP server is to support distributed applications behind a firewall, not as a replacement of Internet exposed, full functional web servers. A newLISP server can support remote code and file loading and saving, and it can answer net-eval and HTTP requests at the same time. Most file operations in newLISP now can support URLs additional to traditional file/path names. CGI is not limited to newLISP written CGI applications. This permits easy integration of distributed applications written in newlISP with applications written in Perl, Python, Ruby, PHP or any other webserver scripting language.

New applications for match and unify

Now list pattern searches and replacements as powerful as regular expression string searches and replaces can be performed in just one statement. The functions find, ref, ref-all and replace now can take a custom comparison function as an optional parameter. Search patterns may be nested list expressions when using match or the more powerful PROLOG like unify as comparison function.

Other enhancements

19 new functions:

    cosh,acosh  ; hyperbolic cosine functions
    callback    ; register callbacks from imported libraries
    curry       ; transform f(x,y) into fx(y)
    delete-url  ; delete a URL
    exists      ; check if an element in a list exists which meets condition
    for-all     ; check if all elements in a list meet condition
    doargs      ; iterate through function args
    get-long    ; get 64-bit long from binary data buffers
    mat         ; fast scalar matrix operations
    ostype      ; built-in variable containing OS type
    parse-date  ; parse a date string
    round       ; round a number
    sinh,asinh  ; hyperbolic sine functions
    tanh,atanh  ; hyperbolic tangent functions
    utf8len     ; number or chars in an UTF-8 string

Enhancements to existing functions:

 
    -l, -L     ; the logging command line option has been redone
    >,<,=,>=<=  ; compare against 0 when single argument
    delete-file ; now can take a URL
    explode     ; also explodes lists and takes optional chunk size
    find        ; can take a comparison function as argument
    name        ; returns also name of a context
    pack        ; pack 64-bit numbers
    ref,ref-all ; can take a comparison function as argument
    replace     ; can take a comparison function as argument
    rand        ; improved random int number generation
    random      ; improved random float number generation
    unpack      ; unpack 64-bit numbers

For more detail on changes see the CHANGES file in the source distribution of newLISP v.9.1 in newlisp-9.1.0/doc/CHANGES. In this files changes are detailed for the development versions 9.0.1 to 9.0.21.

last revised on Apr 21, 2007
§