newLISP v.8.0.6 Release Notes June 7th, 2004


The 8.0 release is a mayor milestone for newLISP adding arrays and enhancing many built-in primitives with addtional functionality. Documentation has been reviewed mutiple times independently new chapters have been added. Most of the changes and bugfixes where prompted by users of newLISP in the discussion group at: http://www.alh.net/newlisp/phpbb/  . Many thanks to all who have participated in this release with advice, contributions and critiques.

The 8.0.2 and 8.0.6  releases are maintenance releases with bugfixes and documentation changes.

New Functions


Function
Description
array
(array i j k aList), returns a 1 to 8 dimensional array and initializes optionally from flat list in aList; all array acces modification via nth, set-nth and nth-set
array-list
(array-list myArray) returns a list conversion of myArray
array?
(aray? expr) tests if expression is a list
source
Returns the source to bind a symbol in a string. Eliminates the need for a tmp directory in new newlisp-tk

Changes and Additions


Function
Description
deprecated functions
eliminated
all deprecated functions thrown out:  concat, remove, replace-nth, sublist, substring, read-process,  read-url, write-process. All have functional equivalent replacements with same syntax but different names, see manual chapter of Deprecated Functions for detail.

modules
changed cgi.lsp, stat.lsp, spam-filter, httpd for deprecated functions
dynamic context variables
dynamic context var refs now work inside contexts, this makes  it possible to call constructors from inside the class context
format
(format "%d" 1.23) => "1" before this was not permitted
  (format "%5.2f" 10) => "10.00" also allowed now
seek
(seek 0) now returns numbers of characters printed to stdout,  works on BSD but on LINUX and Win32 will always return -1
integer
integer now takes additional base parameter after the default parameter, i.e:  (integer "1111" 0 2) => 15  note, that hex numbers still need to be prefixed with 0x  even when specifying base 16
float
 integer and float now return nil or the default value when type other than string or number is specified, previously this caused an error message
xml-parse
1000+ times speedup in XML parsing of bigger (several 100k) files
net-listen, net-receive
net-listen and net-receive-udp take as an additional optional  parameter the address the listening socket should bind for computers with multiple network adapters
net-send-udp
optional last parameter in net-send-udp for specifying  broadcast mode with true (or anything not evaluating to nil),  not necessary on wome Win OS where '255' on last address byte is enough to turn on broadcast mode
constant
 expansion of functionality constant primitive: now also protects against changes of variable contents by set-nth, net-set, dotimesfor, dolist, import and dotree. Previousy it protected only from changes by set, set!, setq, define and define-macro
open
"non-block" or "n" as additional option after "read" or "write" option in open primitive (useful for opening named pipes)
net-select net-select now can accept a list of sockets instead of one socket,  net-select now has a third mode "exception" or "e" to test error conditions on sockets
apply
apply works reducing a list when additional reduce count is given
load
load takes multiple filenames
sys-info
the last number for operating system flavor will show: 7 for Win32 DLL
newlisp-tk
now has a UNIX man page 8.0.2
array
now up to 16 indices 8.0.2
RPM
rpm package now part of release 8.0.2
$
system variables in regular expression can now also be access using ($ 0) ($ 1) ... etc. 8.0.5
env
env can be used instead of deprecated getenv, putenv and environ with same functionality 8.0.6

Bugs Fixed


Function
Description
source, save
arrays where not serialized correctly in source and save (fixed in v. 8.0.2)
rotate
(rotate '()) crashed because of list length zero
catch throw
fixed nested catch throw
nth
nth didn't work on lambda expressions in 7502
-p -d
logging did not work as described (was always on with -p -d)
net-send
Broken Pipe on net-send now handled correctly on Linux/BSD is handled by socket stack on Win32
slice
(slice str 1 -1) does not crash anymore (length arg should never be negative)
process
defunct zombie child processes now cleaned up by 'process' on UNIXs
regex
fixed potential bug in regex replace when replacement expression evaluates to no-string
error messages
error message length limited to 1024 characters
newLISP-tk
now starts even if primary fonts are not found
arrays
where not serialized correctly in save and string 8.0.1
parse
will not stay in an infinite loop when the break string is empty 8.0.3
constant
did not allow multiple arguments 8.0.3
filter
noew filters nil symbols correctly 8.0.5
error messages
a cell leak was fixed occurring under error conditions catched with catch

Miscellanous and Documentation


Ctrl-C
Ctrl-C handler simple on Win32 and with continue, exit, reset menu on LINUX/BSD

modules
 added txt2pdf.lsp as a new module in the module directory. httpd v.3.5 (8.0.2)
documentation
new chapter about linking LISP source and executable
documentation new manual sub-chapter about Variable names and numbers syntax  in chapter Writing applications with newLISP and Tcl/Tk
documentation two additional file for viewing manual in frames with index
documentation Unix man page added (thanks Nigel Brown)
Win32 installer
the Win32 installer puts entries in startmenu including an uninstall, the WIn32 installer puts a newLISP icon in desktop and startmenu links


copyright © Lutz Mueller, 2004