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