newLISPtm v.8.9.0 Release Notes June 25th, 2006

Highlights

Two new expand modes and a new letex give detailed control over macro expansion not possible before.
Logic programming with a PROLOG like unify and assisted by the new expand modes.
Implicit indexing now available for nth-set and set-nth results in much better readability for these functions. Parameter passing by reference two user-defined functions via default functors is now totally transparent as default functors can be used in nth-set and set-nth.
More of previously list-only functions now also handle strings: member,push,pop and rotate.
Many changes and corrections in the manual. Complete editing review of the Users Manual (thanks to Michael Michaels). An updated version of Introduction to newLISP by Cormullion.
Most of the additions and changes in this release where prompted by users.


New or changed functionality

Description

version

error-event, net-eval, signal, timer

Now can take anonymous lambda expressions or built-in functions. Previous only symbols holding lambda expressions where allowed.

v8.8.1

rest, slice

Implicit indexing for these function with lists in default functor.

v8.8.1

real-path

New function translates a relative file path into an absolute file path.

v.8.8.3

save,source

suppress saving/sourcing system symbols starting with '$' unless specified specifically.

v.8.8.3

sys-info

Allows negative indices like args and main-args do already.

v.8.8.4

dup

Will assume 0 (zero) for negative values.

v.8.8.4

load

Now can take URLs, i.e: http://asite.com or file://home/joe/afile.txt.

v.8.8.5

xml-parse

Can now specify a context where to place tag-symbols.

v.8.8.5

dolist, dotimes

Now can take an optional break condition for early loop return.

v.8.8.6

letex

New function combining let and macro expansion.

v.8.8.6

clean

New function works like filter with a negated condition.

v.8.8.7

unify

Does Prolog like unification with occur-check and works together with 2 new expand modes.

v.8.8.7

expand

Two new expansion syntax modes for working with macros and unify

v.8.7.7

nth-set, set-nth

Now have a second syntax with implicit indexing:
(nth-set (alist idx) value) sets alist at idx to value.

v.8.8.5

dolist

System variable $idx now contains offset of current list item in loop-list. Safe for nested dolist in v8.9.0

v.8.8.8/8.9.0

args

Indexing mode of args now works with multiple indexes, i.e. (args 3 -1) and is faster.

v.8.8.8

pop, push

Will now also work on strings.

v.8.8.0

rotate

Will now also rotate strings.

v.8.9.10

member

Will now also find a member of a string.

v.8.9.0

Added Files and Other Changes



mysql5.lsp

New module for version 5.x of MySQL database.

v.8.8.5

sqlite.lsp

sqlite.lsp vor SQLite v.2.x has been discontinued, use sqlite3.lsp and SQLite3

V8.6.0

zlib.lsp

New module for in-memory and .gz compatible file compression.

v.8.8.5

syntax.cgi

New file in examples directory for syntax highlighting of newLISP source in HTML

v.8.8.8

newlisp_manual.html

Examples in the manual appendix are now syntax highlighted. Prepared using syntax.cgi

v.8.9.0

Bug Fixes



filter,index,
net-eval,replace

Now do memory cleanup after exception in function argument.

v.8.8.1

rand

Generated numbers alternating in odd/even on BSDs

v.8.8.1

[cmd][/cmd]

When used interactively will not crash anymore on cursor up after [/cmd] on some OS.

v.8.8.4

xml-parse

Did emit an extra tag when closing CDATA tag was preceded by a forward slash.

v.8.8.4

read-key

Now also working on Mac OS X.

v.8.8.5

Error reporting

(1) Fix for reporting longer strings. (2) Same error message was repeated for different catch levels.

v.8.8.6

Open “append”

Append mode for open was not atomic.

v.8.8.6

get-url, post-url, put-url

Transfer-encoding: chunked was not handled correctly when extra spaces where present after the colon.

v.8.8.7

replace

$0 counter did not count first element when in remove mode.

v.8.8.7

net-ping

Did not work on localhost .

v.8.8.9

Get-url, post-url, put-url

Did not allow 0 (zero) chunk size in Transfer-encoding: chunked.

v.8.8.10

[text]

Entering this tag in the interactive console without closing tag now gives error message and will not stay in endless loop.

v.8.9.0

starts-with, ends-with

(starts-with s k true) should behave like the default (starts-with s k), same with ends-with. This bug never surfaced because nobody specified anything for the default of case sensitivity

v.8.9.0


The versions newLISP 8.8.1 to newLISP 8.8.10 where released as development versions.



Critical Changes, which may break compatibility to previous releases.

This release will run code from the previous release 8.8.0 with one unlikely exception:
In released versions previous to 8.9.0 push and pop worked only on lists. In previous releases pushing data on a variable containing numbers or strings resulted in initializing those variables to an empty list where data could be pushed on. This behavior has changed.
Starting with this release push and pop also work on strings. When push encounters a variable containing a string it assumes a string to be pushed into the target and will not initialize to a list as before. Starting with this release only a list or nil in the push target will cause push working in list mode. A number in the target variable will cause an error message and a string in the target variable will expect a string to be pushed.
§