7149 lines
269 KiB
Text
7149 lines
269 KiB
Text
6.0.25
|
|
'find', 'replace' and 'search' now have an option for case insensitive
|
|
search, updated source and manual
|
|
|
|
6.0.26 - 6.0.27 - 11:34 AM 4/4/99
|
|
'trace' got stuck in executeCommandline() in traceExit() because an empty
|
|
fgets() in LINUX still has a '\n'
|
|
|
|
6.0.27 - 6.0.28 - 6:30 PM 4/6/99
|
|
'import' now returns primitve address
|
|
'define' now also works like (define x y) ; as in SCHEME
|
|
'char' now defaults to 0 on offset and returns unsigned int
|
|
new 'mod' floating point modular function
|
|
new 'abs' floating point absolute value function
|
|
new 'trim' trims spaces or characters both sides
|
|
|
|
6.0.28 - 6.0.29
|
|
'filter' new primitive
|
|
|
|
6.0.29 - 6.0.30
|
|
'dump' now displays address of cell
|
|
'make-dir' mode parameter now optional defaults to 493 = drwxr-xr-x
|
|
|
|
6.0.30 - 6.0.31
|
|
fixed trim, which had all kinds of problems
|
|
new 'difference' returns set difference of two lists
|
|
new 'intersect' resturns set intersection of two lists
|
|
new 'unique' returns unique set from list (duplicates removed)
|
|
when comparing lambda expressions, now state lists also get compared
|
|
|
|
6.0.31 - 6.0.33
|
|
'match' now also works on list expressions, wildcard symbols
|
|
can occur on different nesting levels.
|
|
|
|
6.0.33 - 6.0.34 Released on www.newlisp.org
|
|
in 'substring' the length parameter is now optional
|
|
math exception showed wrong error message
|
|
tty setup now only when tty detected else supress buffering
|
|
for usage with 'socker'
|
|
|
|
6.0.33 - 6.0.35 4/20/2000
|
|
inlined cleanupResults() in evaluateExpression() ca. 4% speedup !
|
|
took out all #pragma statements
|
|
took out termio stuff, works better without
|
|
new functions read-file, write-file
|
|
new functions read-process, write-process
|
|
new function error-text
|
|
|
|
6.035 - 6.0.36 4/21/2000
|
|
'char' now also can take a number as an argument converting it to a
|
|
string of one character:
|
|
(char 65) => "A"
|
|
(char "A") => 65
|
|
'integer' and 'float' now return 'nil' if the string passed does
|
|
not start with a number digit or +/-
|
|
strings can now encode characters in the form \nnn where nnn
|
|
is a 3 digit decimal (leading 0' if less 100) e.g.:
|
|
"\065\066\067" => "ABC"
|
|
|
|
6.036 - 6.039 4/28/2000
|
|
added 'chop', 'explode', 'get-float', 'starts-with', 'ends-with'
|
|
added 'random' 'normal'
|
|
renamed 'get-number' to 'get-integer'
|
|
added script for httpd webserver demon
|
|
|
|
6.039 - 6.043
|
|
'symbol' now takes optional context argument
|
|
'symbols' now gives error message if symbol args is not context
|
|
eliminated 'sourcePtr' which wasn't used anyway, introduced
|
|
'sourceLine' for keeping track of line-numbers in error messages
|
|
added 'encrypt' for one-time-pad encryption/decryption
|
|
|
|
6.043 - 6.044
|
|
speedup in deleteList() and copyList()
|
|
|
|
6.044 - 6.045
|
|
took out 'sourceLine', too much confusing situtations which are
|
|
unresolvable. 'eval-string' now does multiple expressions
|
|
|
|
6.045 - 6.048
|
|
put back pushResultFlag, 'eval' needed it.
|
|
fixed bug in 'substring' for trailing 0's, changed tokeString to
|
|
resemble split() and taking separators > 1 char.
|
|
This also changes pack/unpack in parsePackFormat() to take care of
|
|
more than one space between formats.
|
|
After reset and execution of 'error-event' errorReg now set to 0.
|
|
|
|
6.048 - 6.049
|
|
took out executeSymbolParams modifying executeParams for optional arg
|
|
'reset' now throws 'user reset - no error' - error, so it can be handled as
|
|
a non-error in user defined error handlers, also takes now optional
|
|
symbol for 'resetEvent to be exuted after errorEvent.
|
|
|
|
6.049 - 6.051
|
|
'reset' now takes optional third parameter for stacksize. So the
|
|
syntax for reset is nor (reset [resetEventSymbol] [stacksize])
|
|
|
|
6.051 - 6.052
|
|
no length limitiation anymore for printing strings to the console
|
|
'replace-nth' new primitive
|
|
|
|
6.052 - 6.054 5/19/2000
|
|
'let' new primitive like in other Lisp but dynamically scoped
|
|
'seed' new primitive seeds random generator for rand, random, normal
|
|
now feature complete for 6.1 release
|
|
|
|
6.054 - 6.055 5/20/2000
|
|
fixed memory leek in varPrintf()
|
|
'integer' and 'float' now take optional thirsd parameter for default
|
|
return value if string cannot be parsed.
|
|
|
|
6.055 - 6.056
|
|
fixed bug in 'symbol' which would not overwrite symbols in MAIN for
|
|
symbols in other contexts so (symbol "set" 'MyContext) now works
|
|
creating a symbol 'set in MyContext.
|
|
|
|
6.056 - 6.059 5/29/2000
|
|
improved pretty printing for 'let', which takes now the same flag
|
|
as 'cond'. Improved httpd script, now sends http header for each
|
|
file.
|
|
|
|
6.059 - 6.060 5/29/2000
|
|
httpd did fail on POST on some browsers now 'upper-case' when matching
|
|
'content-length'. Alos fixed in manuual
|
|
|
|
6.060 - 6.0.61
|
|
changed 'parse' so it parses a max token length of 2048 (256 previous)
|
|
this was already changed erarlier on the Win32 versions.
|
|
The read-line limit of 16384 should be changed at some point to infinite
|
|
similar to the print buffer. At the moment cgi vi std/IO is limited by
|
|
read-line to forms no bigger than 16384.
|
|
|
|
6.0.61 - 6.0.62
|
|
varPrintf was still limited. MAX_PRINT_LEN changed to size.
|
|
|
|
6.0.62 - 6.0.63
|
|
'integer' now parses also hex strings eg: (integer "0xFF") => 255
|
|
'write-line' now retuenw nil on file errors
|
|
|
|
6.0.63 - 6.0.64
|
|
5% speedup introducing cell type masks
|
|
|
|
6.0.64 - 6.0.65
|
|
1% speedup taking out symbol in evaluateExpression
|
|
|
|
6.0.65 - 6.0.67
|
|
new 'count' counts elements of one list in another list
|
|
|
|
6.0.67 - 6.0.68
|
|
fixed error in 'reverse'
|
|
|
|
6.0.68 - 6.0.69
|
|
'parse' now without size limitations in tokens when using breakstr argument.
|
|
|
|
6.0.69 - 6.0.70
|
|
'string' now without size limitations of printing in string
|
|
|
|
6.0.69 - 6.0/71
|
|
'read-line' now without size limitations
|
|
|
|
6.0.71 - 6.0.72
|
|
'for' fixed bug when from and to where equal would run forever
|
|
|
|
6.0.72 - 6.0.73
|
|
'putenv' didn't work, fixed
|
|
|
|
6.0.73 - 6.0.75
|
|
problem with ebaluateLambda when passing (set 'p ...) to (foo p) as an argument
|
|
for parameter p.
|
|
|
|
6.0.75 - 6.0.76
|
|
additional functions: prob-z prob-chi2 and crit-chi2. (for ...) no works with
|
|
floating point numbers. Additional module xml.lsp
|
|
|
|
6.0.76 - 6.0.77
|
|
additional function: join. Additional module mail.lsp
|
|
additional function: sequence
|
|
|
|
6.0.77 - 6.0.79
|
|
additional functions: xml-parse, xml-error
|
|
fixed buffer overflow bug in varPrintf to string device (function 'string)
|
|
|
|
6.0.79 -> 6.1.0
|
|
new function println
|
|
6.1.14 documentation
|
|
|
|
6.1.0 -> 6.1.1
|
|
new function fft and ifft
|
|
6.1.15 documentation
|
|
|
|
6.1.1 -> 6.1.2
|
|
the length parameter in 'sublist' is now optional (assumes all)
|
|
|
|
6.1.2 -> 6.1.3
|
|
fixed default for 'true' in 'case'
|
|
|
|
6.1.3 -> 6.1.4
|
|
new function 'swap' for swapping elements in a list
|
|
|
|
6.1.4 -> 6.1.5
|
|
new function 'read-url' for reading pages/files via http
|
|
revision of httpd script more RFC compliant
|
|
|
|
6.1.5 -> 6.1.6
|
|
'read-url' nl-web.c now handles proxy's if HTTP_PROXY is set to proxy URL
|
|
new functions 'collect'and 'select' for selecting multiple elements from a
|
|
list
|
|
|
|
6.1.6 -> 6.1.7 Release
|
|
'rand' now takes an optional second parameter to return a list of random
|
|
numbers (similar to 'random' and 'normal')
|
|
many formatting changes in manual.
|
|
|
|
================================================================================
|
|
6.1.7exp -> experimental '-p port' mode
|
|
|
|
6.1.7 -> 6.1.8
|
|
fixed bug in error event handling when error==0
|
|
|
|
6.1.8 -> 6.1.9
|
|
trace now is a source level debugger, similar in funcitonality to the Win32
|
|
version, but for a character console.
|
|
linking now encrypted, new functions 'betai' and 'gammaln'
|
|
|
|
6.1.9 -> 6.1.10
|
|
fixed bug which could affect parsing \xxx in getToken() where isdigit(x)
|
|
'prob-chi2' now more precise using gammap(),
|
|
new functions 'crit-z', 'beta' and 'gammai'
|
|
|
|
6.1.10 -> 6.1.11
|
|
new 'debug-highlight' for setting pre and post string in debugger
|
|
highlighting. Eliminated example httpget because 'read-url' does
|
|
the same.
|
|
|
|
6.1.12 -> 6.1.12
|
|
'swap' now treats negative values as the last element, consistent
|
|
with other functions, 'read-url' fix in error message text
|
|
init.lsp, mysql.lsp etc have moved to /usr/local/newlisp
|
|
|
|
6.1.12 -> 6.1.15
|
|
'read-url' now handles also redirects
|
|
|
|
6.1.15 -> 6.1.16
|
|
fixed bug in trace mode, trace stopped at all args evals in function
|
|
calls. Still stops and shows result for each 'map', which is ok, but
|
|
must be documented. Improved subroutines for handling POP3 and SMTP mail.
|
|
|
|
6.1.16 -> 6.1.17
|
|
new matrix functions 'invert', 'multiply', 'transpose'
|
|
|
|
6.1.17 -> 6.1.18
|
|
fixed dimension problem in transpose
|
|
|
|
6.1.18 - > 6.1.19
|
|
fixed missing error text for 'singular matrix' in invert
|
|
|
|
6.1.19 -> 6.1.20
|
|
ifft didn't normalize right when N not a power of 2
|
|
evaluateLambda() rewritten to store statics in a way that
|
|
anonymous lambda expressions with static data can be stored
|
|
this also gave a general speed up of about 5%.
|
|
|
|
6.1.20p2
|
|
(nth -1 lst) now returns the last element instead of nil. This
|
|
is consisten with other functions
|
|
|
|
6.1.20p4
|
|
eliminated optional parameters in reset, because never worked right.
|
|
instead the error-event can be used for code after reset and the stack
|
|
size can now be specified on the command line.
|
|
|
|
6.1.20p5
|
|
eliminated get-state and set-state as primitves, they are now written
|
|
in newLISP and part of the initialization file /usr/local/newlisp/init.lsp
|
|
|
|
6.1.20p6
|
|
new function 'regex for POSIX 1003.2 regular expressions (GNU library)
|
|
ifdef'ed readline, only works in CYGWIN, cannot figure unresolved 'tputs()' etc in
|
|
libreadline.so in LINUX, seems not to see libcurses?
|
|
|
|
6.1.20p7
|
|
cleanup makefile for different features NANOSLEEP, READLINE, REGEX
|
|
cleanup fft
|
|
took out replace-match, new function index
|
|
|
|
6.1.20p8
|
|
cleanup regex, additions changes in manual
|
|
|
|
6.1.20 -> 6.3.pre1
|
|
READLINE finally working on Mandrake missing link to 'libtermcap.so'
|
|
lots of manual changes
|
|
|
|
6.3.pre2
|
|
preparing to replace simple binary tree for symbols woth RB balanced tree
|
|
|
|
6.3.pre4
|
|
running RB balanced tree code
|
|
|
|
6.3.pre5
|
|
fixed bug in 'symbols for context and 'delete for context
|
|
|
|
6.3.pre6
|
|
changed httpd CHANGES
|
|
===============================================================================
|
|
6.3 Release
|
|
time-of-day new function
|
|
|
|
6.3.01
|
|
a fix for 'regex' in the CYGWIN version sent in by Steve Adams
|
|
|
|
6.3.02
|
|
additional optional parameter in 'eval-string'
|
|
streamlining code in nl-web.c, reformatting manual so it is easier converted
|
|
to PDF
|
|
|
|
6.3.04
|
|
new -p commandline parameter for TCP/IP port mode of newLISP.
|
|
Fixed format for default data type (will treat as string),
|
|
also format will permit now unlimeted size of the formatted
|
|
output (was 2047 bytes).
|
|
|
|
6.3.05
|
|
cleanup -p with trace for rt/lf translation
|
|
|
|
===============================================================================
|
|
6.3.06 Release July 8th, 2001
|
|
optional parameter 'nil in 'eval for silent evaluation evaulates without return
|
|
value and prompt on the console, needed for Tcl/Tk integration
|
|
|
|
6.3.07 Release
|
|
a new function 'debug (shortcut fr using trace) and various bugfixes in the
|
|
trace/debug functions. '{' and '}' characters are allowed as string delimiters
|
|
but only on the outer level, they get replaced by the parser. This allows
|
|
writing 'nicer' source for HTML and TK stuff.
|
|
|
|
6.3.08
|
|
regex now also returns sub expressions. further changes in debugger to accomodate
|
|
remote TclTk controlled debugging: (q)uit now quits execution, (c)ontinue stops
|
|
debugging but continues execution.
|
|
|
|
===============================================================================
|
|
6.3.09 Release July 16th, 2001
|
|
string now can take more than one parameters, like concat but works on different
|
|
data types
|
|
|
|
6.3.10
|
|
added symbol count to 'sys-info'
|
|
added ERR: string in error message when in trace for TclTk frontend
|
|
|
|
6.3.11
|
|
new function 'dotree' to iterate thrugh symbol trees, usefull for simulating
|
|
arrays and hashes
|
|
|
|
===============================================================================
|
|
6.3.12 Release July 30th, 2001
|
|
new function 'catch' for catching errors when evaluating expressions
|
|
fixed bug in net-connect when trying to connect to dead port
|
|
|
|
===============================================================================
|
|
6.3.14 Release August 2nd, 2001
|
|
changes in newlisp_manual.html and newlisp-tk.html
|
|
cleanup and improvment of qa file
|
|
fixed crash-bug in markReferences and saveSymbol when copying contexts
|
|
function 'args' now works also for lambda, no symbol param necessary anymore
|
|
===============================================================================
|
|
6.3.15 Release September 3rd, 2001
|
|
xml-parse now accepts empty atribute value strings e.g.: <ATAG ATT=""></ATAG>
|
|
net-lookup now works in both directions: ip->name and name->ip
|
|
===============================================================================
|
|
6.3.16 Release September 6th, 2001
|
|
float division by 0.0 now yields 'Inf', as specified by IEE 754. Before 6.3.16
|
|
it would couse a Math exception. Now all compare operations with NaN return 'nil'.
|
|
new functions 'floor' and 'ceil' and 'NaN?'.
|
|
|
|
Ctrl-D will now longer crash but exit newLISP
|
|
|
|
More LSB compliance in install directories used: now /usr/share/newlisp
|
|
instead of old /usr/local/newlisp
|
|
|
|
===============================================================================
|
|
6.3.17 Release September 9th, 2001
|
|
fixed a memory leak in 'regex'. The leak could not be fixed in the CYGWIN
|
|
version which uses regexp !
|
|
|
|
|
|
6.3.18
|
|
fixed rounding problem in 'sequence', Ctrl-D will not exit but only do newline
|
|
if at beginning of line, else it will behave as expected under readline, to exit
|
|
newLISP with one keystoke use Ctrl-C instead.
|
|
output cleanup in error-text and error-event
|
|
better standard behaviour of 'cond' when action clause is missing
|
|
new function 'series' for generating geometric sequences.
|
|
new function 'rotate' for rotating lists
|
|
|
|
6.3.20 Release October 22nd, 2001
|
|
bug fix in xml-parse when parsing closing tags without opening tags
|
|
bug fix memory leak in catch and eval-string uder error conditions
|
|
about 30% speedup removing copyCell/pushResult in: inc set define
|
|
manual changes and additions.
|
|
tookout net-cleanup in network examples
|
|
|
|
6.3.21p1
|
|
bug fix in 'char' when using with floats
|
|
'integer' now also takes floats converting them into integer
|
|
also now translates "055" to 45 taking it as an octal number,
|
|
which is consistend now with the parser.
|
|
'float' now also takes integeres converting into floats
|
|
|
|
6.3.21p2
|
|
eliminated symbol->type in SYMBOL typdef, which reduces symbol memory by from 36 to 32 byte
|
|
fixed a bug where sometimes newlisp wouldn't exit after tk-frontend exited
|
|
|
|
===============================================================================
|
|
6.3.21 Release November 13th, 2001
|
|
MAX_ERROR_NUMBER was to high, parenthesis count wasn't reset when evalCatchFlag
|
|
|
|
6.3.22
|
|
fixed potential bug in join with memory intialization
|
|
fixed problem parsing URL when redirection in 'read-url'
|
|
'get-url/read-url' now also handles 205 and 307 return codes
|
|
'get-url/read-url' now always only returns header portion if "header" option is specified
|
|
new -d demon mode, like -p but newLISP stays in memory to accept a new connection
|
|
new function 'put-url' for HTTP PUT method
|
|
new function 'post-url' for HTTP POST method
|
|
|
|
===============================================================================
|
|
6.3.23 Release January 6th, 2002
|
|
new function 'binomial'
|
|
|
|
6.3.24
|
|
'exit' now closes net work connection when running in '-d' demon mode.
|
|
new function 'now' returns detailed date/time info: (y m d h m s us dy dw)
|
|
new function 'date-value' converts date/time into seconds since 1970-1-1
|
|
new financial functions 'pmt', 'nper', 'pv', 'fv', 'npv'
|
|
bug fix in 'map' which would crash when last arg was not a list (as it should be)
|
|
replaced 'MySQL:close' with 'MySQL:close-db' to avoid overwriting of close in MAIN in mysql.lsp
|
|
|
|
===============================================================================
|
|
6.4.00 Release March 20th, 2002
|
|
inclusion of BWidget set in the Win32 tk v 0.80 distibution, many manual changes
|
|
|
|
6.4.1
|
|
main-args now returns path of program as first list member
|
|
get-url "debug" option now can be specified together with "header" option
|
|
post-url content-type now is optional and defaults to "application/x-www-form-urlencoded"
|
|
added closing channel in get-url
|
|
fixed bug in 'join', which could crash on an empty list
|
|
httpd, finger and gettime changes for new 'main-args'
|
|
balloon help in newlisp-tk v. 081
|
|
new '(tk-args)' when running Tcl/Tk frontend returns newlisp-tk commandline args
|
|
several changes in stat.lsp/plot directing temporal files to /tmp
|
|
fixed potential crash bug in 'dotree'
|
|
Win32 installer now puts desktop icon
|
|
|
|
===============================================================================
|
|
6.4.2 Release April 22nd, 2002
|
|
'format' now for multiple args
|
|
|
|
6.4.3 development release
|
|
'parse' now correctly does handles trailing separator by returning an empty token ""
|
|
|
|
6.4.4
|
|
buffer limit in vsnprintf() was not handled correctly, putting a space limitation
|
|
on 'string' (16k), 'format' (2k) and 'C' functions depending on varPrintf(),
|
|
fixed potential buffer overflow in writeStreamStr().
|
|
'tranpose' did not check for matrix type.
|
|
experimental function 'throw'
|
|
|
|
6.4.5 Development release
|
|
starts-with, ends-with
|
|
now are working type polymorph on strings and lists
|
|
rotate now takes negative numbers for left rotation
|
|
rearranged lambda evaluation (eval args before saving environment),
|
|
which causes 6% speed improvements
|
|
'args' only available in define-macro (again as before 6.3.14)
|
|
changed 'if', 'unless', 'while', 'until' for less CPU stack requirements
|
|
|
|
6.4.6
|
|
'nth', 'first', 'last', 'rest'
|
|
now are working type polymorph on strings and lists
|
|
'cons' works now correctly on 1 arg (who cares? -> consistency proof)
|
|
potenial cell-memory leak on error in 'apply'
|
|
|
|
6.4.7 Development release
|
|
improved syntax for statics environment list as assoc list:
|
|
(define (foo a b c ((x 1) (y 2) (z 3))) ....)
|
|
to retrieve statics environment just do:
|
|
(last (first foo) => ((x 1) (y 2) (z 3))
|
|
also improves speed of ststic processing by about 10%
|
|
|
|
===============================================================================
|
|
6.4.8 Release May 16, 2002
|
|
empty? now works on strings
|
|
fix for 'cons' when lambda expr is second argument
|
|
fix for (rest "") which now returns ""
|
|
fix for (first "") now returns nil
|
|
purelisp.lsp for prooving consistency
|
|
fix for link.lsp on CYGWIN
|
|
|
|
6.4.9 Development release May 21st, 2002
|
|
'nil' as a symbol was not always treated as nil value constant
|
|
(push exp lst) now works even if lst does not contain a list
|
|
in that case old contents of lst gets deleted and initialized
|
|
with () before pushing exp, this makes initialization of lists
|
|
to '() before pushing on it unnecessary.
|
|
'time' now works as a timer returning mseconds needed to evaluate
|
|
this is also mor compatible how other Lisp's define 'time'
|
|
an expression, for old funcitonality of 'time' use (apply date-value (now))
|
|
'sort' now takes an optional parameter '< or '> for ascending/descending
|
|
also about 30% speedup, like in: (sort myList '>)
|
|
|
|
6.4.10 Development release May 21st, 2002
|
|
correct treatment of symbol 'nil in 'and' and 'or'
|
|
eliminated orSymbol reference in soirce code
|
|
speedup parsing source
|
|
dump with parameter now returns list (cellAdress, cellType, cellNext, cellAux, cellContents)
|
|
stepsize in 'for' 'sequence' always forced to positive
|
|
|
|
6.4.11
|
|
'push' in its new form did not respect 'nil and 'true
|
|
new error message when trying to set/define/push on 'nil, 'true or context
|
|
speedup in multiple compares in nl-math.c
|
|
speedup in upper-case, lower-case
|
|
speedup in get-char, get-string, get-integer and get-float
|
|
|
|
|
|
6.4.12
|
|
boolean types and symbols are equal
|
|
another speed improvement in lambad and expression evaluation
|
|
over all speed improvement over 6.4.8 now about 5-10% depending
|
|
on expression mix.
|
|
local iterator symbols are now handled on environment stack for
|
|
better error recovery.
|
|
new chapter "Data structure objects in lists" in docs and
|
|
many little doc changes.
|
|
|
|
===============================================================================
|
|
6.5.0 Release May 28th, 2002
|
|
no changes related to newlisp itself except for versioning
|
|
changes in httpd (see httpd file)
|
|
changes in newlisp-IDE for changes in httpd and changes for date display
|
|
|
|
6.5.1
|
|
compiles with -Wall -pedantic -Wno-uninitialized -O2
|
|
-Wall -pedantic for better portability
|
|
-Wno-uninitialized to suppress 'fork' 'longjmp' warning in -O2
|
|
-O2 does ~25% speed and size improvement!
|
|
'let' did not handle empty parameter lists and now double fast
|
|
|
|
6.5.2 development release June 3rd
|
|
'concat' is deprecated 'append' doubles functionality of 'concat'
|
|
new individual makefiles for making newLISP on different platforms without
|
|
the need to tweak makefiles.
|
|
|
|
6.5.4
|
|
'find', 'replace' and file 'search' now can do Regular Expressions.
|
|
Regular Expressions are not dependend any more on the C-library
|
|
on the OS platform used, instead PCRE (Perl Compatible Regular Expressions)
|
|
is used on all platforms and the source is contained in the distribution.
|
|
Additions to INSTALL file about PCRE and localization of newLISP.
|
|
|
|
6.5.5
|
|
fix for 'replace' in regex mode
|
|
|
|
6.5.5 -> 6.5.7
|
|
changes in win32.lsp and makefile_win32
|
|
eliminated file: nl-importDM.c was already merged
|
|
new chapter 'Lambda expressions in newLISP' in newlisp_manual.html
|
|
|
|
===============================================================================
|
|
6.5.8 Released version (functionally equal to 6.5.7) June 13th 2002
|
|
#ifdef NOIMPORT instead of MAC_OSC in evaluateExpression()
|
|
spelling stuff in newlisp_manual.html
|
|
|
|
6.5.10
|
|
- incorporated nl-web.c into native win32 version to make work get-url, post-url
|
|
and put-url. Server modes -p and -d now are working too in native win32 version.
|
|
|
|
- newlisp-tk.tcl changed to work with win32 because read-line/write-line don't
|
|
work on sockets in win32.
|
|
|
|
- writeStramChar() now works also on binary streams
|
|
|
|
- newlisp-tk.tcl changed to work on remote connection over the internet.
|
|
Shows acceptable speed on dial-up (old newlisp-tk.conf should be deleted)
|
|
|
|
- 'reload last' button in newlisp-tk GUI
|
|
|
|
- dependency fix in makefile_win32
|
|
|
|
|
|
6.5.11
|
|
- moved to Borlanc C++ v5.5 compiler, gives faster and smaller executable than
|
|
Digital Mars compiler previously used. Now all functions of the Linux version
|
|
also work in the Win32 version.
|
|
|
|
6.5.12
|
|
- changes in newlisp-tk.tcl for faster performance on remote and working
|
|
reliable with win32 version. Old newlisp-tk.conf should be deleted.
|
|
Win-tk version can now be distributed without CYGWIN DLLs using the
|
|
Borland 'C' Win32 compile.
|
|
|
|
6.5.13
|
|
- fixed problem in 'net-receive', which was introduced in 6.5.10
|
|
httpd now works fine with win32 compile (with change in line 147 of httpd)
|
|
|
|
- send() in net-send and win32_fprintf() now performs check and resend
|
|
|
|
6.5.14
|
|
- reintroduced writeStreamChar in 'net-receive', writeStreamChar did not zero buffer
|
|
- debug was broken with TK because of missing redefine of fgets() in nl-debug.c
|
|
|
|
6.5.15
|
|
- net-close wasn't working in win32 version, which gave problems in cgi in httpd
|
|
- new newlisp-IDE-1.3.tgz with fixes for LF -> RET/LF translation which was happening
|
|
in win32 pipes
|
|
|
|
6.5.16
|
|
- doc changes
|
|
- took out again size-check and resend in netSend() and win32_fprintf() as it is
|
|
not relevant in blocking sockets
|
|
- mail.lsp was broken because of change how optional parameter in 'find' works
|
|
- 'read-process' and 'write-process' collapsed to 'exec'
|
|
- match for lists now behaves like match for string returning a list of matches
|
|
ie. (match '(I * you) '(I love you)) => (I (love) you)
|
|
this allows easier substituting of star/* patterns in pattern matches in chat
|
|
robots
|
|
|
|
6.5.17
|
|
- new option# parameter in 'xml-parse'
|
|
(a) option# 1 to surpress white-space TEXT fields (for data XMLs)
|
|
(b) option# 2 to surpress empty attribute tags (for tags which never have attributes)
|
|
(c) option# 4 to surpress comments
|
|
(d) option# 8 to tanslate tag names into symbols
|
|
|
|
- new 'xml-type-tags' for definig alternative tags for "ELEMENT", "CDATA", "COMMENT"
|
|
and "ELEMENT". Instead symbol can be defined or nil can be specified to surpress
|
|
the type tag completely.
|
|
|
|
- the newlisp-tk_win32 version now comes with the win32 native compile
|
|
|
|
- fixed bug in 'string', which was not reentrant
|
|
|
|
===============================================================================
|
|
6.5.18 Release August 3, 2002
|
|
- fixed stream problem in 'eval-string' in Win32
|
|
- fixed openStrStream, didn't initialize stream->handle to 0
|
|
|
|
6.5.19
|
|
- doc changes, renamed mail.lsp to pop3.lsp, sendmail.lsp to smtp.lsp
|
|
- memory initialization in p_format()
|
|
|
|
6.5.20
|
|
- fixed p_format again, vsnprintf() doesn't include null-char in return count
|
|
as advertised in GNU docs
|
|
- doc changes
|
|
|
|
6.5.21
|
|
- 'explode' now also works on binary contents
|
|
- 'file-info' modification and creation time where added
|
|
- can now specify \000 in string constants
|
|
- in imported function now up to 10 parameters (previous 8)
|
|
- odbc.lsp module for ODBC communications
|
|
|
|
6.5.22
|
|
- comparing symbols now includes the context name in their comparison
|
|
- 'name' new function to extract the name of a symbol as astring without the context
|
|
- milli second resolution in 'time-of-day', 'now' and 'time' in Win32
|
|
- newlisp_manual.book for conversion html->pdf with HTMLDOC http://www.easysw.com
|
|
this makes a printable manual. Print double sided then cut 8.0 x 9 inch, which is
|
|
2 from the bottom and 0.5 from the right side when printed on 8.5 x 11 inch paper;
|
|
then spiral bind (thin round spirals, not the flat once).
|
|
- post-url was never working on win32 becuase of missing win32_fwrite
|
|
|
|
|
|
===============================================================================
|
|
6.5.23 ----------- released September 17, 2002
|
|
- httpd fix for empty query string
|
|
- newlisp-IDE-1.6.tgz now saves files up to 10k, changed POST encoding to multi part
|
|
|
|
6.5.24
|
|
- quote wil not evaluate it's argument anymore, but work like Scheme or Common Lisp
|
|
- in newlisp-tk the lisp file estension can now be configured in newlisp-tk.config
|
|
- in Win32 now line termination gets written as RT-LF,
|
|
change also in newlisp-tk.tcl when filling editbox
|
|
- net-read-line now protected from deletion in newlisp-tk browser
|
|
- prettyPrint will never put newline after quote
|
|
- fixed prettyPrint bug when printing empty prettyPrint constructs (while, dotimes etc)
|
|
|
|
6.5.25
|
|
- quote fixed again (quoted twice)
|
|
|
|
6.5.26
|
|
- doc fixes
|
|
- date crashed on values resulting in dates before 1970-Jan-1 00:00:00
|
|
in the Win32 version. In Win32 now minimum value for date is 86400,
|
|
which is safely on or after 1970-Jan-1 00:00:00 for all time zones
|
|
- NaN can now be put into a variable for comparison
|
|
- division by zero now causes a math exception also in floats (previously
|
|
inf was returned in cygwin/Unix version and Win32 crashed)
|
|
- in mixed arithmetik using integer operators NaN is taken as 0
|
|
|
|
6.5.27
|
|
- new function 'constant' to protect symbol contents from changing
|
|
- fixed bug in newlisp-tk.tcl which was introduced after 6.5.23
|
|
which caused problems in Mouse.lsp (_result -> result in 'tk')
|
|
- 'div' with NaN value raised exception/crashed in Win32, now
|
|
returns NaN
|
|
- DOMAIN error messages in the Win32 versions are now silenced
|
|
|
|
6.5.28
|
|
- doc changes
|
|
- new function 'setq', both 'set' and 'setq' and now can take multiple args
|
|
note that old init.lsp should be updated because of macro for 'setq'
|
|
- new option number 16 in xml-parse for generating SXML output
|
|
|
|
- 7.0.0 pre release
|
|
- bug fix for 'string', suppresses all pretty-print formatting
|
|
- better error reporting on pop3.lsp and smtp.lsp with debug-flag true
|
|
===============================================================================
|
|
- 7.0.1 release October 24, 2002
|
|
merged caveGuy's pop3.lsp mail-id improvements
|
|
|
|
- 7.0.2
|
|
- readLineStream was not initizlized during program startup and caused
|
|
'current-line' to crash if not used after a 'read-line'
|
|
- direct execution mode with new command line option -e
|
|
- in SXML parsing attribute tags where left strings instead of symbols
|
|
- 'find' now also does regex when looking up a string in list of strings
|
|
|
|
- 7.0.3
|
|
- example in newLISP for put.cgi in newlisp_manual.html
|
|
- include cgi.lsp in distribution
|
|
- the header in the SMTP interface smtp.lsp was not finished with empty line
|
|
- 'save now can save multiple contexts and/or symbols at once
|
|
- 'open now has a "append" or "a" option
|
|
|
|
===============================================================================
|
|
- 7.0.4 release February 2, 2003
|
|
replace now gives error instead of returning 'nil when second arg not
|
|
list or string
|
|
new primitive 'lookup' works like assoc with extracting parameter
|
|
fixed bug in pop3.lsp
|
|
moved to version 5.4 of Freewrap for making the newlisp-tk.exe, which
|
|
is now doubled in size because 5.4 doesn't compress anymore (see Freewrap
|
|
docs).
|
|
|
|
- 7.0.5
|
|
Manual improvements in for correct conversion with HTML2DOC
|
|
additional hour offset parameter in 'now' and 'date'
|
|
fixed bug in dotree which caused crashes on Windows
|
|
'context', 'dotree' and 'symbols' now accept unquoted
|
|
symbol if the symbols is a context.
|
|
contexts can be deleted again when empty
|
|
The newlisp-tk Windows version is now wrapped with freewrap v.5.5
|
|
and based on Tcl/Tk version 8.4.1 and BWidget v.1.6
|
|
newlisp-tk.tcl has been changed for better usage of 'context'
|
|
|
|
- 7.1.0-rc1
|
|
PCRE Perl Compatible Regular Expression support updated to version 4.3
|
|
in 'replace' now replacement pattern with back references and as
|
|
lisp expression. Sub expressions are stored in variable $1, $2 ... etc.
|
|
$0 contains the whole pattern found. These variables are also filled
|
|
in 'regex' 'find' (all functions doing regular expressions).
|
|
The new implementation of 'replace' is also faster (about 15%).
|
|
example:
|
|
(replace "%([0-9A-F][0-9A-F])" str (char (integer(append "0x" $1))) 1)
|
|
This will do URL translation i.e.: "xxx%41xxx%42" -> "xxxAxxxB".
|
|
|
|
- 7.1.0-rc2
|
|
'parse' can take regular expressions in sepearator when additional
|
|
options parameter is defined (as in find, replace)
|
|
|
|
===============================================================================
|
|
- 7.1.0 Release August 28, 2003
|
|
'search' like 'find' and 'replace' also accepts regular expression
|
|
when extra options parameter is given.
|
|
[text] and [/text] can be used as string limiters for large text regions
|
|
i.e. for HTML in cgi pages written with newLISP. Text limited this way
|
|
stays completely unprocessed and contain any characters.
|
|
The function 'symbol' accepts unquoted symbol for context parameter
|
|
(like 'dotree', 'context', 'symbols')
|
|
PCRE Perl Compatible Regular Expression support updated to version 4.4
|
|
extensive manual changes formatting and PDF release
|
|
|
|
- 7.1.1
|
|
surpression of some compiler warnings in Mac OSX compile
|
|
makefile for linux has strip turned on and readline support
|
|
was not the default
|
|
|
|
- 7.1.2
|
|
third parameter in 'symbol' for supression of symbol creation, if
|
|
not found; return 'nil instead.
|
|
HTML manual had formatting error, which caused all after 'regex'
|
|
to be in curier.
|
|
|
|
===============================================================================
|
|
- 7.1.3 release September 3, 2003
|
|
[text]...[/text] caused problems in TCP/IP communications
|
|
|
|
===============================================================================
|
|
- 7.1.4 release September 6, 2003
|
|
uninitialized memory in writeStreamStr() caused problems when
|
|
running newlisp-tk and transferring bigger string buffers.
|
|
win32_fprintf() did not work right for buffers > 2048, which
|
|
caused problems in browsing bigger buffers in newLISP-tk.
|
|
|
|
- 7.1.6
|
|
new function 'process' for launching independent child processes
|
|
(will not block), new function 'pipe' for use with child processes.
|
|
|
|
'if' now accepts multiple condition-exp pairs and then works like a
|
|
cond without parenthesis around condition-value. 'if' with
|
|
condition-exp-exp or condition-exp still works like before.
|
|
|
|
new 'net-send-udp' and 'net-receive-udp' for UDP communications
|
|
without need of net-listen,net-accept and net-connect.
|
|
|
|
On Mac OSX 'import' is now enabled using to addtional files
|
|
osx-dlfcn.n/h for compiling. This import is for '.dylib'
|
|
libaries.
|
|
'append' now also can append binary strings (i.e. containing 0's)
|
|
'joint' now also can joint binary strings (including the joint string)
|
|
|
|
if the length of a sublist in slice is 0 then sice returns the empty
|
|
list '(), previously returned nil. This is more consistent with the
|
|
behavior of slice on strings and at the end of lists.
|
|
|
|
'write-buffer' now acepts both: a symbol or a string
|
|
|
|
'send' now accepts both: a symbol or a string
|
|
|
|
'symbol' pretended to create a symbol although context would not exist
|
|
|
|
error messages now include the offending expression/parameter which
|
|
caused the error.
|
|
|
|
|
|
- 7.1.7
|
|
speedup in UDP communications (no session registration)
|
|
memory leak fixed in 'net-receive-udp'
|
|
|
|
'first' of an empty string now returns an empty string, previously nil
|
|
|
|
improved cgi.lsp
|
|
|
|
'reverse' now works on strings
|
|
|
|
- 7.1.8
|
|
'throw' now is documented (actually happened in 7.1.7)
|
|
|
|
'collect' and 'select' now also work on strings
|
|
i.e: (collect "2001-09-20" 5 6 8 9 0 1 2 3) => "09202001"
|
|
|
|
'slice' couldn't slice lambda's
|
|
|
|
memory leak in searchBufferRegex() affecting 'find' and 'replace' was fixed
|
|
|
|
- 7.1.9
|
|
'set' with multiple args had a cell memory leak
|
|
|
|
'transpose' had a memory leak
|
|
|
|
- 7.1.10
|
|
logfile support for remote mode -p and -d with '-l logfilename'
|
|
|
|
fixed bug in pretty print on command line
|
|
|
|
fixed bug in 'save', which went into a loop when saving symbols containing
|
|
contexts
|
|
|
|
- 7.1.12
|
|
logfile with string -L options also logs remote command line input
|
|
|
|
'fft' and 'ifft' now can take plain numbers instead of complex numbers
|
|
or a mixture of both
|
|
|
|
regular expression speedup 5 to 50% by chaching the search pattern
|
|
and avoiding recompile, speedup greatly depends on complexity of
|
|
pattern relatively to the length of the search string
|
|
|
|
rearranged functions in source files to make newlisp.c more manageable
|
|
|
|
eliminated various unecessary typedefs
|
|
|
|
Sun SOLARIS is now supported (not much tested though)
|
|
|
|
operating system number in last position of 'sys-info'
|
|
linux 1, bsd 2, osx 3, solaris 4, cygwin 5, win32 6
|
|
|
|
strings containig zeros are now displayed correctly i.e.
|
|
(pack "c c c" 0 1 2 3) => "\000\001\002\003"
|
|
|
|
- 7.1.14
|
|
redundancy in printString() eliminated
|
|
|
|
memory leak in 'parse' with regex fixed
|
|
|
|
the userdefined function for an error is now reported
|
|
|
|
overall speedup since 7104 of about 5%
|
|
|
|
commented out undocumented function 'symbol-dump'
|
|
|
|
===============================================================================
|
|
- 7.2.0 is 7.1.14 released October 2nd, 2003
|
|
|
|
|
|
- 7.2.1
|
|
moved check for symbol type of lambdaFunc to errorProc for efficiency
|
|
|
|
cleanup of unecessary defines in newlisp.h
|
|
|
|
defined 'vasprintf()' to take advantage of vasprintf() where available
|
|
|
|
'format' now checks for correct number of arguments and well formed
|
|
format string, it should not crash anymore on mismatch of number
|
|
and type of parameters
|
|
|
|
newLISP-tk is now version 1.0 with changes for multiline 'tk' statements
|
|
(stements containing line-breaks), this allows sending bigger Tcl/Tk
|
|
code portions in one 'tk' statement
|
|
|
|
- 7.2.2
|
|
force creation of $0, $1 ... in MAIN even when used in different context
|
|
for the first time
|
|
|
|
supress $0, $1 ... in newlisp-tk frontend in variable listbox
|
|
(the $ would confuse tk)
|
|
|
|
- 7.2.3
|
|
replace-assoc now also uses the system variable $0 for the old
|
|
list, which can be reused in the replacement expression, i.e:
|
|
|
|
(set 'lst '((a 1)(b 2)(c 3)))
|
|
(replace-assoc 'b lst (list 'b (+ 1 (last $0))))
|
|
lst => ((a 1)(b 3)(c 3))
|
|
|
|
replace-nth now also uses the system variable $0 for the old element, i.e:
|
|
|
|
(set 'lst '(1 2 3 4))
|
|
(replace-nth 1 lst (+ $0 1))
|
|
lst => '(1 3 3 4)
|
|
|
|
added new module 'ftp.lsp' for get/put ftp transfers
|
|
|
|
updated module smtp.lsp and program spam-filter
|
|
|
|
symbols set with 'constant' now also gets saved with 'constant'
|
|
|
|
introduced getContext() for code savings
|
|
|
|
added error message in 'import' for win32
|
|
|
|
eliminated win32.cmd
|
|
|
|
many documentation changes/fixes, rewritten introduction
|
|
added chapter about deprecated functions
|
|
|
|
changes in set/define functions for better protection and
|
|
error messages of protected symbols
|
|
|
|
full stack trace on error messages
|
|
|
|
- 7.2.4
|
|
replace-assoc now returns the changed list instead of the old
|
|
association found (which is now in $0)
|
|
|
|
replace-nth now return the changed list instead of the old
|
|
expression found (which is now in $0)
|
|
now checks also for missing last argument
|
|
|
|
replace now returns changed list or string
|
|
for changed list count of replacements in $0
|
|
count for string replacements is not available any more
|
|
(could be handled in replacement expression)
|
|
now checks also for missing last argument
|
|
|
|
remove now returns the changed list
|
|
and the number of removed elements in $0
|
|
|
|
- 7.2.5
|
|
chop now also works on lists
|
|
|
|
coding improvements in slice/sublist() and substring()
|
|
|
|
newlisp-tk 1.02 now on Linux tmp directory is in the home
|
|
directory of the user running newlisp-tk
|
|
|
|
replace with expression in replacement would overflow CPU stack
|
|
after 2048 replacements, now no limit
|
|
|
|
cgi.lsp v.1.2 now lives in a context CGI for better isolation
|
|
|
|
httpd v.3.0 with bugfixes for big POST buffers
|
|
|
|
new module infix.lsp for parsing infix expressions
|
|
|
|
in newlisp-tk changed /tmp to tmp for Linux/UNIX
|
|
|
|
- 7.2.6
|
|
(new CTX 'CTX2) copies context CTX to CTX2, helps using
|
|
contexts a objects, which can be instantiated from a template
|
|
context
|
|
|
|
'define' 'constant' used in contexts will always force creation
|
|
of the symbol in that context, never overwrite definitions in
|
|
MAIN. This is changed behaviour also be reflected in the documentation.
|
|
The old way was leading to unexpected definitions in MAIN of symbols
|
|
although loaded from a context. 'set' still will first look for a
|
|
global in MAIN.
|
|
|
|
fixed false error messaging on certain parenthesis errors
|
|
|
|
fixed wrong error message when trying to define protected
|
|
symbol
|
|
|
|
error message 'parameter out of range when calling 'gammai',
|
|
'beta' or 'gammaln' with first parameter 0.
|
|
|
|
- 7.2.7
|
|
contexts now can be assigned to variables and referenced
|
|
during runtime, i.e. 'contextVar:varName' with late binding
|
|
of contextVar. New possibilities of OO programming and lexically
|
|
scoped programming, see new chapter in the users manual
|
|
about 'Programming with context objects'.
|
|
|
|
stronger separation of contexts from context MAIN, only
|
|
primitive symbols, context symbols, true and nil are
|
|
inherited
|
|
|
|
'new' now returns the new context, formerly 'true'
|
|
|
|
'set', 'setq', 'set!', 'constant' now return the value of
|
|
the symbol set when the rvalue is missing i.e:
|
|
(constant 'foo) will make foo a constant and return it's
|
|
curent value
|
|
|
|
protected all symbols in MAIN in newlisp-tk.tcl v 1.03
|
|
against accidental overwrite
|
|
|
|
cleaned up toal mess of tem pdir detection in unix mode
|
|
|
|
cleaned up init.lsp
|
|
|
|
'nth' now can take multiple indices, i.e.:
|
|
(nth 1 2 0 '(1 (a b (c d)))) => c
|
|
good for working with matrices or sparse matrices
|
|
out of bounds indices return the last in dimension
|
|
|
|
'set-nth' like former 'replace-nth' but multidimensional
|
|
like 'nth'
|
|
(set-nth 1 2 0 '(1 (a b (c d))) 'x) => (1 (a b (x d)))
|
|
|
|
- 7.2.8
|
|
eliminated statics in lambda expression, not necessary
|
|
anymore as we have dynamic contexts, which also
|
|
create a lexically closure around vars
|
|
|
|
fix in dolist, how cleanup is done
|
|
|
|
===============================================================================
|
|
- 7.3.0 Released version 2003/11/03
|
|
(cpymen fromAddress toAdress nBytes), address may be integer
|
|
or string, only for internal use, not documented. Could be
|
|
used with 'dump' to hack lisp-cells and symbols-cells.
|
|
i.e. to unprotect a symbol :
|
|
(cpymem (pack "c c" 0 32) (last (dump 'sym)) 2)
|
|
|
|
fixed error message reporting in 'set-nth'
|
|
|
|
- 7.3.1 released Nov 11 2003
|
|
'import' was broken in Win32 native version when working
|
|
inside contexts (odbc.lsp and mysql.lsp)
|
|
|
|
(pretty-print line-length indent-string)
|
|
experimental not documented yet, to change pretty printing
|
|
behaviour, without args returns current status => (64 " ")
|
|
64 length 1 space for indenting
|
|
|
|
- 7.3.2
|
|
'char', 'collect', 'lookup', 'nth', 'pop', 'push', 'select', 'set-nth'
|
|
and 'slice' now all accept negative offset which will count from the
|
|
end of a list i.e. (slice "newLISP" -4 2) => "LI"
|
|
|
|
'push' and 'pop' now can take multidimensional offsets like
|
|
'nth' and 'set-nth'
|
|
|
|
'collect'/'select' now return the last element for offsets to big
|
|
(formerly nil)
|
|
|
|
'pretty-print' now tested and documented
|
|
|
|
1.e-1 or 123. , a decimal point without following digits is
|
|
no an accepted number format
|
|
|
|
in newlisp-tk the windows position gets now saved when saving
|
|
Options/Settings
|
|
|
|
fixed bug in 'let' when returning a local var
|
|
|
|
- 7.3.3
|
|
new 'push' changed 'nilCell'
|
|
|
|
- 7.3.4
|
|
newlisp_manual.html with Kazemori edits
|
|
|
|
'list' now accepts unlimited number of arguments
|
|
|
|
- 7.3.5
|
|
'push' could not append to an empty list
|
|
|
|
handling big buffers in newlisp-tk in evaluation
|
|
|
|
common floating point exception handling on all
|
|
platforms (BorlandC and GCC)
|
|
|
|
block mode for remote connection starting with [cmd]
|
|
on a line by itself and finishing with [/cmd] on
|
|
a line by itself
|
|
|
|
sets locale environment on non-US versions of an OS
|
|
platform, this enables automatically correct character
|
|
handling (i.e. upper-case) on non-engish character sets
|
|
|
|
- 7.3.7
|
|
newlisp-tk.tcl now takes advantage of new block mode (multiple
|
|
lines in interactive mode). This ways one of the ports in
|
|
communication with newlisp could be eliminated and browser-editor
|
|
buffers of unlimited length can be evaluated, preferrably in
|
|
evaluation without printing (left of the two buttons)
|
|
|
|
doc changes for 'silent'
|
|
|
|
- 7.3.8
|
|
'let' now accepts also alternative syntax without the parenthesis
|
|
around var - exp pairs: (let (var1 exp1 var2 exp2 ...) body )
|
|
|
|
doc changes for 'let' and chapter 'Lambda expression'
|
|
doc change new function 'set-locale'
|
|
doc change new sub chapter 'Switching the locale' in chapter
|
|
'Localization and customization'
|
|
doc change new file LOCALIZATION
|
|
|
|
'fn' may be used instaed of 'lambda' (save typing)
|
|
|
|
'set-locale' changes usage: (set-locale) => return current
|
|
setting, (set-locale "") => switches to local locale with
|
|
all option turned on. (set-locale str int) switches to locale
|
|
in str with category option int as speicied in "locale.h" of
|
|
platform/OS, look for defs of LC_ALL, LC_NUNMERIC etc..
|
|
on startup newLISP tries to swithc to ISO "C" locale.
|
|
|
|
- 7.3.9
|
|
'push' and 'pop' now can take the int-offsets in a list to
|
|
work together with new 'ref' which reports the position of an
|
|
expression in a nested list
|
|
|
|
doc changes (sometimes only small changes)
|
|
'push', 'pop', 'symbol?' new function 'ref'
|
|
'save', 'set', 'Arrays and Hash Tables ...', 'close',
|
|
'cons', 'context', 'delete', 'explode', 'fft', 'find',
|
|
'format', 'intersect', 'lambda?', 'length', 'let'
|
|
'make-dir', 'match', 'net-receive', 'net-select',
|
|
'net-send', 'new'
|
|
|
|
changed options flag will trigger recompile when caching regular
|
|
expression patterns
|
|
|
|
'select' evaluated args in offset list
|
|
|
|
'join' evaluated args in string list
|
|
|
|
'append'' evaluated the first string arg double
|
|
|
|
all type predicates now given an error message if the
|
|
argument is missing, previously 'nil' ('true' on atom?)
|
|
|
|
getting an int from a 'inf' floating point crashed on Borland Win32
|
|
now returns 0 like on other platforms
|
|
|
|
- 7.3.10
|
|
'remove' didn't check for list type in second arg and bombed
|
|
|
|
- 7.3.11
|
|
new compile for Win32 DLL with makefile_win32dll
|
|
see file win32dll.readme for unsolved issues
|
|
|
|
- 7.3.12
|
|
(replace expr aList) now works like 'remove', but for removing
|
|
strings the empty string "" must still be specified:
|
|
(replace str aString "")
|
|
'remove' is deprecated and will not be available anymore in 8.0
|
|
|
|
new 'flat' to flatten lists complements multidimensional set
|
|
of list functions, example:
|
|
(set 'lst '(a (b (c d))))
|
|
(map (fn (x) (ref x lst)) (flat lst)) => ((0) (1 0) (1 1 0) (1 1 1))
|
|
|
|
newlisp.dll now runs qa suite
|
|
|
|
- 7.3.14
|
|
DLL now suppresses pop up on FP domain error (thanks Steve)
|
|
DLL now also can use print statment, output will be in return
|
|
value.
|
|
|
|
'replace' did not work correctly when removing multiple expressions
|
|
at the beginning of a list
|
|
|
|
doc changes 'replace', 'flat', chapter 'Deprecated functions'
|
|
chapter 'DLL module ...'
|
|
|
|
error message for "string too long" now reports shorter string
|
|
|
|
- 7.3.15
|
|
better error reporting on some string getting functions when arg
|
|
is missing
|
|
|
|
doc changes license change for documentation, misc. links
|
|
|
|
replace could not handle empty search string
|
|
|
|
Win32 DLL no contained in Win32 distribution
|
|
|
|
fixed error in httpd
|
|
|
|
- 7.3.16
|
|
error messages in newlisp.dll where broken becuase of wrong makefile_win32dll
|
|
|
|
newlisp-tk.html now reformatted to manual HTML for better maintenance/conversion
|
|
|
|
slight optimixation in 'nth' and 'set-nth'
|
|
|
|
fix for 'nth' on empty string
|
|
|
|
better error messages on missing args in various functions
|
|
|
|
link.lsp now also works on win32 DLLs but is not supported anymore
|
|
for CYGWIN, use a win32 compiled newlisp.exe and newlisp.dll instead,
|
|
both work fine under CYGWIN
|
|
|
|
doc change for chapter 'Win32 DLL ...'
|
|
|
|
fixed 'silent' mode for DLL
|
|
|
|
'float' conversion noe accepts leading . without zero like the
|
|
internal parser
|
|
|
|
- 7.3.17
|
|
doc changes as of Sam Cox's and Nigel's postings on
|
|
http://www.alh.net/newlisp/phpbb/ on 2003-12-07
|
|
|
|
new functions 'atan2' and 'irr' and documentation
|
|
|
|
eliminated compiler warnings for Linux GCC 3.3.1
|
|
|
|
- 7.4.0rc1
|
|
'irr' now strips of digits less than precision 1e-5
|
|
|
|
'set-nth' alsow works on strings (singular index)
|
|
|
|
'swap' now works on strings, also return value changed
|
|
from swapped pair to changes list/string
|
|
|
|
'pretty-print' had a cell leak
|
|
|
|
in the installation for LINUX/BSD etc. the doc directory has been
|
|
moved from /usr/doc/newlisp to /usr/share/doc/newlisp
|
|
newlisp-tk.tcl 1.07 changed accordingly
|
|
|
|
upgrade to PCRE 4.5 files
|
|
|
|
'integer' didn't truncate to -MAX_LONG
|
|
|
|
'integer' did not truncate to MAX_LONG when feeding big
|
|
floating point numbers, but crashed on Win32
|
|
|
|
on Win32 float functions on NaN crashed
|
|
|
|
doc changes: integer, NaN?, error-event, error-text, atan2
|
|
|
|
- 7.4.0rc2
|
|
enabled error events in Win32 DLL module
|
|
|
|
update finger example file and example in doc
|
|
doc change 'net-connect'
|
|
|
|
- 7.4.0rc3
|
|
floats now work in imported fuctions (tested on x86 platforms)
|
|
and up to 14 parameters (previously 10) are accepted, floats
|
|
count as two
|
|
|
|
nth-set like set-nth but different return value, was in rc2
|
|
but now documented
|
|
|
|
doc changes: chapter 'Functions in groups', 'import', 'inc', 'dec'
|
|
arithmetik operators +,-,*,/, 'set-nth', 'nth-set'
|
|
'sort', '%', 'mod', '<,>,=,<=,>='
|
|
|
|
doc new file: hacking_newlisp.html with describes previously
|
|
undocumented features
|
|
|
|
'for', 'dotimes', 'seqence', 'series' now return a 'invalid parameter: NAN'
|
|
error when NaN parameters are passed
|
|
|
|
===============================================================================
|
|
- 7.4.0 release 2003/12/20
|
|
- 7.4.1
|
|
commandline switch '-m N' where N is the max number of megabyte newLISP
|
|
is allowed to allocate for LISP cells
|
|
|
|
setq,set!, define (as set) did not work right with dynamic context vars
|
|
|
|
- 7.4.2
|
|
%s format now recognizes precision i.e: (format "%5.2" "hello") => " he"
|
|
|
|
various doc changes
|
|
|
|
pop3.lsp now handles pop3 servers w/o LAST command, but only on the
|
|
functions: get-all-mail and delete-all-mail
|
|
|
|
char did not convert the 0 correctly, now: (char 0) => "\000"
|
|
|
|
- 7.4.3
|
|
fixed printing context name when in a context other than MAIN
|
|
this affected the newlisp-tk frontend since v. 7.2.7
|
|
|
|
many doc corrections, now rev 5
|
|
|
|
- 7.4.4
|
|
(now ... ) returns an additional number 'minutes west of GMT'
|
|
for the timezone offset
|
|
|
|
the optional time ofset parameter in 'date' and 'now' must now
|
|
be given in minutes west of GMT, was previously in hours,
|
|
standard when using time zone offsets
|
|
|
|
max cell count as specified in command line swith -m now second
|
|
number in 'sys-info' if not specified defaults to 0x10000000
|
|
|
|
doc addition of -m commandline switch and change in 'sys-info'
|
|
|
|
- 7.4.5
|
|
format now can take unlimited number of parameters, before 2048
|
|
|
|
changes in stat.lsp, smtp.lsp and httpd for new 'sys-info'
|
|
|
|
- 7.4.6
|
|
fixed problem in float -> integer conversion of big numbers
|
|
|
|
attempt to fix for last parameter of 'now' for solaris (not tested)
|
|
|
|
- 7.4.7
|
|
updated to BWidget-1.7 in newlisp-tk (since 7.4.6)
|
|
|
|
timezone offset in return value for 'now' set to 0 on SOLARIS
|
|
|
|
plotting with stat.lsp and gnuplot was messed up on Win32, now
|
|
can also do multiple plot one after another using 'process' instead
|
|
of exec
|
|
|
|
eliminated 'gettime' example, as that service doesn't run on most
|
|
computers these days
|
|
|
|
'import' on Win32 now can use cdecl calling conventions with
|
|
additional parameter string "cdecl" when importing functions.
|
|
This allows calling many third party DLLs without special wrapper DLLs
|
|
On LINUX etc. the extra parameter is ignored.
|
|
|
|
mysql.lsp version 2.0, several functions changed and offsets defined
|
|
for MySQL v.4.0, previous versions will not work
|
|
|
|
- 7.4.8
|
|
improved error message for missing par
|
|
|
|
sqlite.lsp - module for SQLite datavase from http://www.sqlite.org
|
|
|
|
mysql.lsp small fixes and revised test routine, tested on MySQL v. 4.0
|
|
|
|
'transpose' now transposes any kind of matrix (previously only matrices
|
|
containing numbers; it also rectangualarizes matrices; speed improved
|
|
3 fold.
|
|
|
|
in 'if' and 'cond': if the last condition given is the empty listy ()
|
|
which evaluates to nil in a boolean context, and if no then/else actions
|
|
or now cond action is given, then the empty list () is returned (previusly nil) .
|
|
|
|
fix for 'date' which crashed at values overflowing int32 (2038 1 19 3:14:07)
|
|
|
|
logging has been changed to a fixed filename 'newlisp-log.txt
|
|
|
|
new command line switch -h
|
|
|
|
better pretty printing of symbols which are constant and global
|
|
|
|
===============================================================================
|
|
- 7.5.0 RELEASE 2004-01-21
|
|
cgi.lsp, form.html, form.cgi where missing from FILES inventory
|
|
|
|
new 'sqlite.cgi' web script for administering SQLite database in newLISP
|
|
|
|
eliminated various unused vars with -w8004
|
|
|
|
fixded bug in 'global' printing
|
|
|
|
changed directory structure, new dirs: doc, examples, modules
|
|
|
|
- 7.5.1
|
|
(rotate '()) crashed because of list length zero
|
|
|
|
fixed nested catch/throw
|
|
|
|
fixed lambda stack oberflow after 3000 catch
|
|
|
|
eliminated array.lsp instead shorter hash.lsp for hash functions
|
|
|
|
changed sqlite.lsp to version 1.6, name change for future
|
|
reserved word 'array'
|
|
|
|
dynamic context var refs now work inside contexts, this makes
|
|
it possible to call constructors from inside the class context
|
|
|
|
improvement of floating point speed 60% in simple arithmetik
|
|
and 25% in most floating point functions
|
|
|
|
(format "%d" 1.23) => "1" before this was not permitted
|
|
(format "%5.2f" 10) => "10.00" also allowed now
|
|
|
|
- 7.5.2
|
|
(array i j k aList), returns a 1 to 8 dimensional array and
|
|
initializes optionally from flat list in aList
|
|
|
|
(array-list myArray) returns a list conversion of myArray
|
|
|
|
(aray? expr) tests if expression is a list
|
|
|
|
all array acces modification via nth, set-nth and nth-set
|
|
|
|
also released benchmarks comparing with Perl, Python and Guile,
|
|
see at: http://newlisp.org/benchmarks
|
|
|
|
|
|
- 7.5.3
|
|
(seek 0) now returns numbers of characters printed to stdout,
|
|
works on BSD but on LINUX and Win32 will always return -1
|
|
|
|
'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
|
|
|
|
added txt2pdf.lsp as a new module in the module directory
|
|
|
|
comprehensive manual edit by Brian Clausing (thanks!)
|
|
|
|
new chapter about linking LISP source and executable
|
|
|
|
all deprecated functions thrown out:
|
|
concat, remove, replace-nth, sublist, substring, read-process
|
|
read-url, write-process. All have replacements, see manual.
|
|
|
|
changed cgi.lsp, stat.lsp, spam-filter for deprecated functions
|
|
|
|
1% overall speed improvement 0.5% size reduction
|
|
|
|
nth didn't work on lambda in 7502
|
|
|
|
'format' increasing of ars beyond 2048 has been rolled back
|
|
because of problems when evaluation of args is deeply nested
|
|
|
|
- 7.5.3a
|
|
changes in newlisp-tk.tcl for deprecated 'remove'
|
|
changes in qa for deprecated functions
|
|
|
|
|
|
- 7.5.4
|
|
15% speedup in 'format'
|
|
|
|
writeStreamStr() and readStreamText() did not handle zeros
|
|
|
|
'source' like save on strings eliminates tmp directory in
|
|
new newlisp-tk v.1.09
|
|
|
|
1000+ times speedup in XML parsing of bigger files
|
|
changing a strncpy() to a memcpy()
|
|
|
|
- 7.5.6
|
|
newlisp-tk 1.10 now shows message box when trying to open
|
|
debugger with browsers at the same time
|
|
|
|
updated FILES inventory
|
|
|
|
logging did not work as described (was always on with -p -d)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
Ctrl-C handler simple on Win32 and with continue, exit, reset
|
|
menu on LINUX/BSD (somewhat unreliable?)
|
|
|
|
Broken Pipe on net-send now handled correctly on Linux/BSD
|
|
is handled by socket stack on Win32
|
|
|
|
(slice str 1 -1) does not crash anymore (length arg should
|
|
never be negative)
|
|
|
|
- 7.5.7
|
|
signal handlers now initialized before loading commandline
|
|
scripts
|
|
|
|
- 7.5.8
|
|
shorter code for swap
|
|
|
|
defunct zombie child processes now cleaned up by 'process'
|
|
on UNIXs
|
|
|
|
fixed potential bug in regex replace when replacement expression
|
|
evaluates to no-string
|
|
|
|
- 7.5.9
|
|
all functions changing the contents of a symbol (destructive
|
|
functions) will now cause an error when used on symbols protected
|
|
with 'constant', previously it worked only with set, set!, setq
|
|
and define, define-macro; loop variables in dotimes, for, dolist
|
|
and dotree are protected against change by user with an error
|
|
message during looping and may not be constant before the looping
|
|
starts using them
|
|
|
|
new manual chapter about 'Variable names and numbers syntax"
|
|
|
|
bug fixes/additions in httpd, now version 3.3
|
|
|
|
fixed potential memory overwrites in nl-web.c
|
|
|
|
error message length limited to 1024 characters
|
|
|
|
- 7.5.10
|
|
rolled back symbol protection for dotree and dolist, which
|
|
is not necessary
|
|
|
|
- 7.5.11
|
|
new mode for 'open' "pipe' or "p" opens a named pipe non-blocking
|
|
for reading
|
|
|
|
- 7.5.12
|
|
rolled back protection for dotimes, for loop variable solving
|
|
crash problem in different way
|
|
|
|
- 7.5.14
|
|
documentation fixes and compiler warnings fixes
|
|
|
|
two additional file for viewing manual in frames with index
|
|
|
|
the Win32 installer puts entries in startmenu including an uninstall
|
|
|
|
The WIn32 installer puts a newLISP icon in desktop and startmenu links
|
|
|
|
protect built-in functions from overwriting with import but the
|
|
function can still be imported in a context different from MAIN
|
|
|
|
eliminated "pipe" or "p" mode in 'open' instead "non-block" or "n"
|
|
as additional option after "read" or "write" option
|
|
|
|
net-lookup, net-select, net-send-udp, net-peek did not clear net-error
|
|
|
|
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 socket
|
|
|
|
apply works reducing a list when additional reduce count is given
|
|
|
|
load takes multiple filenames
|
|
|
|
- 7.5.15
|
|
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
|
|
|
|
expanded chapter on Tcl/Tk Variables in:
|
|
"Writing applications with newLISP and Tcl/Tk"
|
|
|
|
- 8.0.0rc1
|
|
added more examples to newlisp-tk.html
|
|
|
|
allow [cmd] tag in -d mode
|
|
|
|
reopen mode in [cmd] section for potential memory leak after
|
|
error conditions or on reconnect
|
|
|
|
allow contexts to be overcopied (broke benchmarks)
|
|
|
|
- 8.0.0rc3
|
|
re-fixes the memory leak for [cmd] tags
|
|
|
|
- 8.0.0rc4
|
|
doc changes manpage
|
|
|
|
take abs() value in -m commandline option
|
|
|
|
reorder help menu for logical sequence of options
|
|
|
|
newlisp-tk 1.12 now tolerant for not finding "Fixedsys",
|
|
"Lucida Console" or "fixed" fnt. Will take first font found
|
|
|
|
newlisp-tk 1.12 now save newlisp-tk.con correctly in home directory
|
|
of UNIX (startup dir in Win32)
|
|
|
|
man page for LINUX et al, thankyou Nigel Brown
|
|
|
|
- 8.0 released April 7 2004 ============================================
|
|
version nunbers changed from 8.0.0 to 8.0 to distinguish
|
|
rc versions from final version
|
|
|
|
sys-info now returns 7 as OS number of win32dll
|
|
|
|
corrections in MemoryManagement.html and newlisp_manual.html
|
|
|
|
- 8.0.1
|
|
changed package version number to dotted form for compatibility with
|
|
RPM packaging
|
|
|
|
changed Makefile install option for RPM compatibility and added
|
|
'make rpm' for makeing rpm package
|
|
|
|
man page for newlisp-tk
|
|
|
|
array was not serialized correctly in 'source' and 'save'
|
|
|
|
negative indices in arrays, which are too big now give out-of-bounds
|
|
error (previously took first element as for lists)
|
|
|
|
now up to 16 indices can be specified, previously 8
|
|
|
|
changes in docs for array chapter and functions
|
|
|
|
in newLISP-tk under Linux/Unix file open dialog now starts
|
|
with /usr/share/newlisp/newlisp-tk
|
|
|
|
|
|
- 8.0.2 Released 2004-05-02 ============================================
|
|
|
|
httpd version 3.5
|
|
|
|
doc changes
|
|
|
|
- 8.0.3
|
|
constant did not allow multiple args
|
|
|
|
parse now recognizes zero length token and stops parsing
|
|
instaed of going into a loop
|
|
|
|
fix for contextvars in tcl/tlk IDE v1.15 and p_context()
|
|
|
|
bug fixes in cgi.lsp now v.1.5
|
|
|
|
documentation corrections
|
|
|
|
a bug fix in the reset routine
|
|
|
|
- 8.0.4
|
|
fixed the fix in reset
|
|
|
|
cell leaks in error messages in catch/throw situations are now avoided
|
|
|
|
- 8.0.5
|
|
filter now filters nil symbols like nil values (like if, while, not etc)
|
|
this effects the function index in the same way
|
|
|
|
access system variables $0, $1 ... etc. with an index ($ 0), ($ 1) .. ($ i)
|
|
where i is an integer
|
|
|
|
bug fix for catch when result variable has same contents as return from
|
|
catch statement
|
|
|
|
- 8.0.6 Released 2004-06-06 ============================================
|
|
new env replaces deprecated environ, getenv, putenv (still available but
|
|
to be eliminated in 8.1)
|
|
|
|
additional paragraph about ovewriting global symbols in the chapter
|
|
'Contexts'
|
|
|
|
- 8.0.7
|
|
net-receive-udp can take an additional timeout parameter
|
|
|
|
doc changes for net-receive-udp
|
|
|
|
new example whitelist-filter for email filtering
|
|
|
|
- 8.0.8
|
|
trim now can take optional second trim-character parameter:
|
|
(trim "---HELLO===" "-" "=") => "HELLO"
|
|
(trim "0001234" "0" "") => "1234"
|
|
allows trimming of only one side (empty string) or different
|
|
trimming left and right
|
|
|
|
new functions 'utf8' and 'unicode' to convert between utf8
|
|
and UCS-4 encoded Unicode
|
|
|
|
UTF-8 versions of: char, upper-case, lower-case, first, rest,
|
|
chop, explode, last, trim, collect select,
|
|
nth, set-nth, nth-set
|
|
|
|
any positions/indices in the UTF-8 versions of char, nth
|
|
set-nth and nth-set refer to (multibyte)character positions
|
|
rather than byte positions
|
|
|
|
find and regex return byte positions, slice takes byte positions
|
|
reverse always works on byte level, to reverse utf8 strings use:
|
|
(join (reverse (explode str)))
|
|
|
|
changed parsing of octal numbers 090 now "0" "90"
|
|
|
|
- 8.0.9
|
|
'source' now also working on context symbols
|
|
fix for 'trim' in utf8 version
|
|
fix for 'set-nth' and 'nth-set' in utf8 version
|
|
version 3.7 httpd fixing problems with post on IE
|
|
|
|
- 8.0.10
|
|
'net-sessions' now registers connecting peer in -p -d modes
|
|
makefiles for MinGW compiler for newlisp.exe and newlisp.dll
|
|
MinGW will eventually replace Borland BCC 5.5 as the default
|
|
compiler for the Win32 binary distribution
|
|
|
|
- 8.0.11
|
|
a fix for server crash in -d mode when reconnecting on Linux
|
|
|
|
- 8.0.12
|
|
now will reset when client exits in -d demon mode (still does
|
|
not maintain demon mode on slackware 2.4 but Debian 2.6
|
|
Linux Mandrakae 9.2/2.4.22 and FreeBSD 4.7 are OK)
|
|
|
|
new function (dup expr n) repeats expression n times in
|
|
list or string
|
|
function 'pipe' works on MinGW compiled version
|
|
|
|
- 8.0.13-14
|
|
fix of 'test-pipe' in fle qa
|
|
new option in Makefile: make uninstall
|
|
/usr/share/newlisp/init.lsp now tries to load $HOME/.init.lsp
|
|
as a user specific .init.lsp after the system wide init.lsp
|
|
$HOME gets defined as (env "HOME") or (env "USERPROFILE")
|
|
or (env "DOCUMENT_ROOT")
|
|
whatever is available in that sequence
|
|
fixes restart problem in demon mode
|
|
|
|
- 8.0.15
|
|
makefiles for newlisp as a shared library on Linux and BSD:
|
|
newlisp.so, the function to import is: newlispEvalStr
|
|
|
|
'print' and 'println' in newlisp.dll now are always
|
|
returned correctly in the return value of 'dllEvaStr'
|
|
was not working correctly before in many cirumstances
|
|
|
|
'newlispEvalStr' will replace 'dllEvalStr' in future
|
|
version in newlisp.dll, at the moment both work
|
|
this change was made for consistency over platforms
|
|
|
|
new chapter "Shared library newlisp.so on Linux/BSD" in users manual
|
|
|
|
- 8.0.16
|
|
doc changes for 'net-receive-udp'
|
|
'net-receive-udp' can now receive on a specific IP address, this
|
|
was documented already but not working
|
|
|
|
'net-connect' and 'net-listen' ca use a "udp" option to do
|
|
nonblocking UDP data exchange with net-send and net-receive and
|
|
without immediate closing of socket as happening using
|
|
net-receive-udp and net-send-udp. See documenataion for
|
|
net-listen and net-connect in the manual
|
|
|
|
improved error message for missing parenthesis
|
|
|
|
newlisp.vim VIM syntax file now included in source distribution
|
|
thanks to David from http://www.geocities.com/excaliborus/ for
|
|
this contribution
|
|
|
|
updated the CREDITS file
|
|
|
|
all predicates, which ended in p when using HTML (i.e. listp for list?)
|
|
have been renamed to using the '?' instead of 'p' in HTML to make
|
|
utilities, which position in the newlisp_manual.html work
|
|
|
|
- 8.1.0rc1
|
|
fixed memory leak in 'irr'
|
|
|
|
new 'net-receive-from' and 'net-send-to' for non-blocking UDP
|
|
communications over open connections
|
|
|
|
- 8.1.0rc2
|
|
an almost double speed and smaller parser for pack/unpack format strings,
|
|
which does not need spaces in between the format specifiers
|
|
|
|
a fix in net-send-udp not closing the socket after the new changes in rc1
|
|
|
|
doc changes
|
|
|
|
- 8.1.0 Released version on 2004-08-10 ========================================
|
|
two new example programs: udp-server.lsp and udp-client.lsp to demo
|
|
non-blockig UDP communications
|
|
|
|
merged bugfixes from dlcompat as of cvs 2004-07-12 Peter O'Gorman
|
|
this affects only Mac OSX
|
|
|
|
added -c option for suppressing the prompt
|
|
|
|
added node.lsp in modules directory for building newLISP clusters.
|
|
|
|
new versions of several modules and example files to account for
|
|
new version numbering
|
|
|
|
- 8.1.1
|
|
sleep now rounds to the nearest full second on systems where nanosleep()
|
|
is not available.
|
|
|
|
timeout option in net-receive-udp works again
|
|
|
|
- 8.1.2
|
|
'make install_home' and 'make uninstall_home' of installations on Linux/UNIX
|
|
in the home directory of the user in $HOME/bin and $HOME/share/
|
|
|
|
'search' crashed on invalid filehandles
|
|
|
|
new 'expand' for expanding variable bindings in lists
|
|
|
|
- 8.1.3
|
|
a fix for 'get-url' on some Solaris installations
|
|
|
|
- 8.1.4 released August 21st, 2004 ==========================================
|
|
doc changes ansd new option 'make version' for changing version numbers
|
|
in all affected files
|
|
|
|
- 8.1.5
|
|
nl-sock.c missed a change for Win CE, PocketPC
|
|
|
|
qa - testfile now complete with all functions, use: ./newlisp qa to test
|
|
without process and test functions using process, or use: ./newlisp qa ext
|
|
to test for all function (only Win32 and Linux)
|
|
|
|
a fix for timeout values > 1000000 usec on BSD and Solaris in net-select
|
|
and net-receive-udp
|
|
|
|
in net-listen and net-connect specify "multi" or "m" instead of "udp"
|
|
for UDP Multicast mode
|
|
|
|
- 8.1.6
|
|
'collect' and 'select' are collapsed into 'select' which is now also
|
|
type polymorph on the second parameter.
|
|
|
|
new makefile_solaris_utf8
|
|
|
|
new 'fork' function for lauching a newLISP child process thread
|
|
on Linux/UNIX only and CYGWIN on Win32.
|
|
|
|
- 8.1.7
|
|
fixed rounding error in 'sleep' when compiled with NANOSLEEP
|
|
|
|
improved qa routines using 'fork' on Linux/UNIX for some tests
|
|
|
|
- 8.1.8
|
|
new 'wait-pid'for watching the status of child threads created with 'fork'
|
|
and proccesses created with 'process'
|
|
|
|
upgraded to PCRE v. 5.0
|
|
|
|
more tweaks in qa file
|
|
|
|
fixed potential memory leak in 'new'
|
|
|
|
- 8.2.0 Release September 21st, 2004 ======================================
|
|
|
|
- 8.2.1
|
|
write-buffer can now take string instead of file handle to write
|
|
to a string in a string growing (concatenating) fashion, this is
|
|
much faster then doing (set 'str (append str content)) now:
|
|
(write-buffer str content)
|
|
|
|
'symbol' now can overwrite global symbols from MAIN (i.e. built-ins)
|
|
i.e. (symbol "print" 'MyContext)
|
|
|
|
'process' now ca take to addtioal pipe handle parameters, which
|
|
get mapped to stdin and stdout for the new process:
|
|
(map '(myin bcout) (pipe))
|
|
(map '(bcin myout) (pipe))
|
|
(process "bc" bcin bcout)
|
|
(write-buffer myout "3 + 4\n")
|
|
(read-line myin) => "7"
|
|
|
|
'semaphore' lets you create wait and signal semaphores
|
|
(set 'sid (semaphore)) ; aquire
|
|
(semaphore sid -1) ; wait
|
|
(semaphore sid 1) ; signal
|
|
(semaphore sid) => 1 ; status
|
|
(semaphore sid 0) ; release/delete
|
|
|
|
'share' to create shared memrory regions
|
|
(share) => address off mmap share
|
|
(share addr exp) => sets addr to exp for integers, floats and strings
|
|
(share addr) => returns integer, float or string exp
|
|
|
|
added newLISP-Excel-Import.xls example to examples/ directory
|
|
added prodcons.lsp - demo for fork, wait-pid, semaphore and share
|
|
|
|
- 8.2.2
|
|
'write-line' with string device like 'write-buffer', in both
|
|
symbol is now protected if protected with constant
|
|
|
|
share was broken for strings
|
|
|
|
- 8.2.3
|
|
|
|
pipe is now also available on CGWIN and Borland compiled versions
|
|
on all Win32 versions pipe can now remap std I/O like on Linux/UNIX:
|
|
|
|
(map '(myin bcout) (pipe))
|
|
(map '(bcin myout) (pipe))
|
|
(process "bc" bcin bcout)
|
|
(write-buffer myout "3 + 4\n")
|
|
(read-line myin) => "7"
|
|
|
|
process on Win32 can hide or minimize window:
|
|
(process application 0 0 0) => hide app
|
|
(process application 0 0 1) => show app
|
|
(process application 0 0 2) => minimize app
|
|
|
|
'share' and 'semaphore' are now also available on Win32
|
|
|
|
improvements in qa file, now tests all functions by default w/o ext option
|
|
better syncronization on some tests with semaphores
|
|
|
|
'match' in list mode now only returns matched expressions
|
|
|
|
(map set '(x y) (match '(a (? c) d *) '(a (b c) d e f)))
|
|
x => b
|
|
y => (e f)
|
|
|
|
when using match with an optional third parameter 'true', it works
|
|
in the old fashion: (map pattern aList true) => works like before
|
|
|
|
The context default function is a userdefined function with the same name
|
|
as the context it resides in, i.e: (define (ctx:ctx a b) (+ a b)) and can
|
|
be called just with the context name (ctx 3 4) => 7.
|
|
Default functions should only be called rom MAIN, or have already been
|
|
loaded or their context created before referred to in another context or
|
|
default function. Not yet 'official' see doc/default_functions.html
|
|
|
|
fixed cell leak in 'match' on backtracking
|
|
|
|
bug fix in let which did not honor protected symbols
|
|
|
|
- 8.2.4
|
|
deprecated collect, getenv, putenv and environ completely eliminated from
|
|
newlisp and examples, modules: httpd, cgi.lsp, sqlite.lsp
|
|
|
|
'+' new wildcard operator 'match': take one or more
|
|
|
|
net-error now returns error number and text separate in a list
|
|
|
|
net-connect failure did not set net-error
|
|
|
|
'now' has now the daylight-savings-flag 0 or 1 as last parameter
|
|
|
|
new 'sys-error' for reporting C-library errno values
|
|
|
|
'newlisp -e' without a command string crashed
|
|
|
|
'push' now optimized when pushing as last element with -1
|
|
|
|
(new ...) now will not overwrite existing symbols, to allow true
|
|
mixins of other contexts. To overwrite symbols as before version
|
|
8.2.4 use the true as a third parameter i.e. (new A 'B true).
|
|
|
|
- 8.2.5
|
|
'symbol?' can now be used on dymamic context vars, i.e
|
|
(set 'ctx MyCTX) ; MyCTX is existing context
|
|
(symbol? 'ctx:x) ; true if MyCTX:x exists, nil if not
|
|
This checks the xistence without inadvertantly creating it.
|
|
previously (symbol "x" ctx nil) had to be used.
|
|
|
|
'replace' can now take an additional option bit 0x8000 for replacing
|
|
only once in a string: (replace "a" "aaa" "A" 0x8000) => "Aaa"
|
|
|
|
|
|
'define-new' copies individual funtions from
|
|
other contexts with or without renaming them to a new function:.
|
|
(define-new 'foo:func 'bar:func) copy to different context
|
|
(define-new 'foo:func 'foofa) copy to current and rename
|
|
|
|
forward referece to a symbol in symbol did not work in mixin mode
|
|
of 'new'
|
|
|
|
the space between optioncharacter (-s,-m,-p,-d,-e) and optionvalue
|
|
can now be omitted, i.e. -s 10000 and -s10000, both work.
|
|
|
|
'date' without an argument returns the character string for the current
|
|
local time, this avoids the construct (date (apply date-value (now)))
|
|
|
|
'date-value' without and argument returns the time of seconds
|
|
since 1970-1-1 0:00 equivalent to (apply date-value (now))
|
|
|
|
8.2.6
|
|
'delete' now can delete an entire context without removing conatined
|
|
symbols first
|
|
|
|
serialization of contexts to a file using 'save' now is done correctly
|
|
when the context context contains overwrites of global symbols.
|
|
|
|
a more flexible and faster 'symbol' function, which can take any character
|
|
sequence and numbers, and can be used this way for hash-like associative
|
|
memory access. New module hash.lsp to show usage.
|
|
|
|
'define-new' renamed to 'def-new', for shorter typing and for not
|
|
associating it to 'define' but rather to 'new' (was introduced in 8.2.5)
|
|
|
|
'letn' works similar to 'let' but incrementally uses the local variable
|
|
bindings like multiple nested let when evaluating the initializer expressionsi
|
|
for locals.
|
|
|
|
8.2.7
|
|
'address' (previously only documented in 'hacking_newlisp.html') now also
|
|
returns addresses to integer and double float data type, useful when passing
|
|
int * or double * to imported functions, now documented in main manual
|
|
|
|
'sym' is an abbreviated form of 'symbol', since 'symbol' starting in 8.2.6
|
|
can take any sequence of characters, including strings which are illegal
|
|
symbols in newLISP syntax, and is used for hash/dictionat like lookups, it
|
|
is used more often, therefore this shorter form 'sym' is introduced
|
|
|
|
added configuration variable in newlisp-tk.config to specify a newLISP
|
|
application. See newlisp-tk.html "Delievering Applications" for details
|
|
|
|
'apply' and 'map' now can be used on macros
|
|
|
|
'pack' and 'unpack' have new format specifier 'b' for unsigned 8bit numbers
|
|
|
|
'encrypt' crashed on empty strins in key
|
|
|
|
8.2.8
|
|
'encrypt' crashed on empty key-string, now gives error message
|
|
|
|
'int' as shorter writing of 'integer'
|
|
|
|
'pack' now converts all types as needed, i.e. (unpack "b" (pack "b" -1.0)) => 255
|
|
from-to integer-floats, did it before only for "f" and "lf"
|
|
|
|
'flt' converts a number to a 32bit float repesented by an integer for usage
|
|
in calling imported library routines, which take floats.
|
|
|
|
'array' skipped wrong index types instead of giving error message
|
|
|
|
8.3.0 Released Nov 21st, 2004
|
|
|
|
8.3.1 Released Nov 23rd, 2004 ============================================
|
|
'nth-set' gave error on protected symbol in index
|
|
|
|
'apply' 'map' on macro was returned to 8.2.0 behaviour
|
|
|
|
8.3.2
|
|
more cleanup in qa file
|
|
|
|
cleaned up makefiles -D definitions eliminating redundant -DOPSYS
|
|
|
|
eliminated 'break', which did not do anything after introduction
|
|
of 'debug' in version 6.3.07
|
|
|
|
overall speedup of about 5% by predefining system symbols
|
|
$0 -> $15, speedup of 80% to 100% in functions using system
|
|
symbols like set-nth, nth-set, find, parse, regex, replace
|
|
|
|
new 'do-while' and 'do-until' check condition _after_ evaluating
|
|
the body expressions
|
|
|
|
new 'read-key' reads nonblocking keyboard character code
|
|
not working on Mac OSX but all other flavors
|
|
|
|
superflous args in user defined function call caused cell leak
|
|
never happened, i.e.: (define (foo x) ..) and (foo a b c)
|
|
|
|
'get-url' now handles "Transfer-Encoding: chunked" correctly
|
|
|
|
'amb' picks an argument at random and evaluates it
|
|
|
|
-x command line switch for server mode with handler function
|
|
'x-event' i.e: newlisp my-httpd -x 8080
|
|
my-httpd is a lisp file containing the user defined handler
|
|
function i.e: (define (x-event request) .....)
|
|
this way servers for different protocols / requests can be simply
|
|
programmed using 'print','read-line', etc., for IO to the specified
|
|
port, the connection stays up until closed by the client.
|
|
See chapter 'Command line options ...' in the manual
|
|
|
|
fixed a bug in 'new' and 'def-new' when the source was MAIN
|
|
this fix was necessary to write a function (def-static ....)
|
|
for writing statically scoped functions (see int the manual
|
|
chapter 'Lexical, static scoping in newLISP', subchapter
|
|
of 'Programming with context objects'.
|
|
|
|
8.3.3
|
|
'debug' did not handle default functions written without colon
|
|
|
|
'save' 'source' did not space symbols under sum circumstances
|
|
|
|
'dolist' now double as fast and safe to break out with 'throw'
|
|
|
|
'catch' now has an additional syntax with just one argument to write
|
|
easier returns from functions, loops or blocks, ie:
|
|
(catch (dotimes (x 1000) (if (x 500) (throw "fin"))) => "fin"
|
|
returns the result or throw argument
|
|
|
|
8.3.4
|
|
'save' 'source' spacing-fix was incomplete
|
|
|
|
8.3.5
|
|
If the a '!' is entered as the first character on the command line immediately
|
|
followed y a shell command, that command will be executed, i.e. !lsi in Unix
|
|
or !dir in Win32 would show a directory listing. There should be no space
|
|
between '!' and the shell command.
|
|
|
|
URL length in get-url and post-url is now unlimited
|
|
|
|
8.3.6
|
|
manual corrections, additions and new sub-chapter about XML-RPC
|
|
|
|
BASE64 encoding and decoding with 'base64-enc' and 'base64-dec'.
|
|
|
|
new sign-on message, and different for remote modes
|
|
|
|
added 'xmlrpc-server' to examples directory
|
|
added 'xmlrpc-client.lsp' to modules directory
|
|
|
|
fix for 'Transfer-encoding: chunked' if 'Content-length:'
|
|
is given too (which should not happen but is found occasionally)
|
|
|
|
8.4.0 Released 2005-01-18 ============================================
|
|
added xmlrpc.cgi for handling XML-RPC requests as CGI
|
|
|
|
fixed a file descriptor leak in -d -x modes
|
|
|
|
after the 'debug' fix in 8.3.3 debug did not recurse into funcs
|
|
|
|
'args' can take an index argment i.e. (args 0) (args 1) etc.
|
|
|
|
8.4.1
|
|
fixed signon message missing 'n'ewLISP
|
|
|
|
added UTF-8 to signon message
|
|
|
|
added f-prob to stat.lsp (probability of F ratio for df1/def2)
|
|
|
|
(throw-error expr) throws an error with message printed in expr
|
|
error thrown this way can be handled like any other newLISP error
|
|
using (catch foo 'result) or with (error-event ...)
|
|
|
|
changed/added docs for catch, throw, throw-error and chapter:
|
|
Integer abnd Floating point ...
|
|
|
|
newlisp-tk.exe now wrapped with freewrap v.6.0 and Tcl/Tk 8.4.8
|
|
suppresses occasional display of tcwish console
|
|
|
|
added updated newlisp.jsf syntax file for JOE editor to distribution
|
|
|
|
8.4.2
|
|
[cmd] tags did not work when compiled with READLINE option
|
|
|
|
(args) which previously worked only in macros now too works in
|
|
functions. The behaviour of (args) has changed: only unbound arguments
|
|
for which there is now local variable in the macro (or function) are
|
|
returned in the list. This makes changes in existing macros necessary,
|
|
which specify both, local variables and they use args. Most changes
|
|
lead to simpler macros or function, because (args) already contains
|
|
only the unassigned args.
|
|
|
|
changed macro definition of 'tk' in newlisp-tk.tcl to function
|
|
|
|
changed plot 'macro' in stat.lsp and 'defun' in init.lsp
|
|
|
|
8.4.3 Release 2005-02-12 =================================================
|
|
cleanup from (args) changes, protect $args from deletion
|
|
|
|
8.4.4
|
|
misplaced paren in conditional def of defun in init.lsp
|
|
|
|
OS number in sys-info was incrementing on every call when DLL or UTF-8
|
|
|
|
decimal point setting from locale is now used correctly when parsing source
|
|
i.e. after performing (set-locale "German_Germany.1252") in Germany
|
|
1,23 will be recognized corectly as a decimal number with comma as the
|
|
decimal separator.
|
|
|
|
qa_comma QA test file for German or other locales using ',' comma as
|
|
decimal separator, qa renamed to qa_dot for decimal-dot locales.
|
|
In comma locales both, qa_dot and qa_comma should work, in decimal
|
|
dot countries onlz qa_dot will work.
|
|
|
|
daylights savings field in 'now' function now shows a flag 1/0 if time
|
|
zone may have DST at certain time of the year on Linux/UNIX. On Win32
|
|
it shows a 'daylight minutes bias' for timezones which may have DST.
|
|
Note that flag/bias is set through all the year even if DST is not
|
|
in effect at a given moment. May not work on all platforms.
|
|
|
|
additional format parameter in (date num offset fmt), see GNU gcc
|
|
strftime() function for details
|
|
|
|
Win32 installation now to $PROGRAMFILES/newlisp, which is
|
|
c:\Program Files\newlisp on English Windows. This defines a
|
|
fixed location for $PROGRAMFILES/newlisp/newlisp.dll for applications
|
|
loading newlisp.dll. 'PROGRAMFILES' is an environment variable available
|
|
on all MS Windows installations.
|
|
|
|
newLISP is now correctly registered in the
|
|
'control panel/add or remove programs' applet
|
|
|
|
8.4.5
|
|
newlisp.exe compiled on MinGW or Borland now will look for init.lsp
|
|
in the same directory where newlisp.exe resides
|
|
|
|
installer now sets path on Win32, this allows to import the DLL without
|
|
specifying the full path and allows to start newlisp or newlisp-tk from
|
|
anywhere on Win32
|
|
|
|
installer now allows installing without newlisp-tk
|
|
|
|
'nth' upgraded to 16 indices (like set-nth and nth-set)
|
|
|
|
'sort' now allows any binary operator user defined function as
|
|
compare funtion in third parameter
|
|
|
|
'implicit indexing' on lists, arrays and strings i.e.:
|
|
(lst 1 3) equivalent to (nth 1 3 lst)
|
|
(ary 0 -1) equivalent to (nth 0 -1 ary)
|
|
("newLISP" 3) equivalent to (nth 3 "newLISP")
|
|
unlimited number of indices and faster than explicit form
|
|
|
|
'pack' and 'unpack' now allow switching between little and big endian
|
|
byte order using new format characters '<' and '>'
|
|
|
|
|
|
8.4.6
|
|
'new' and 'def-new' did not replicate arrays, could cause crash
|
|
|
|
8.4.7
|
|
added 'upload.htm', 'uplload.cgi' to examples directory
|
|
minor fix in xmlrpc.cgi xmlrpc-server
|
|
|
|
better handling of bad server responses in get/post/put-url avoiding
|
|
an ifinite loop on some types of bad server responses
|
|
|
|
fix for endian switch in 'unpack' which changed the original buffer
|
|
|
|
re-arranged arrays, hashes and indexing chapters in the manual and
|
|
enhanced hashing chapter, added Win32 trailing slash warning to
|
|
manual entries of 'directory' and 'directory?'
|
|
|
|
experimental implicit indexing with nrest:
|
|
(1 '(a b c)) => (b c)
|
|
(1 "abc") => "bc"
|
|
|
|
8.4.8
|
|
implicit indexing with slice:
|
|
(3 2 '(a b c d e f g)) => (d e)
|
|
(-4 2 "abcdefg") => "de"
|
|
|
|
updated infix.lsp to version 1.4/5 was broken after newLISP 8.2.0
|
|
because of change in 'symbol' functioanality
|
|
|
|
possibility to check legality of a string as a newLISP source symbol
|
|
with (symbol? string), i.e: (symbol? "a b") => nil
|
|
|
|
illegal symbols are now serialized correctly in 'save' using a
|
|
set expression with (sym str context)
|
|
|
|
the Win32 installer now will correctly change settings in
|
|
newlisp-tk.config when chaning the install path during installation
|
|
will only work Windows 2000 and later
|
|
|
|
8.4.9
|
|
did not evaluate length in implicit slice-length
|
|
|
|
8.4.10
|
|
separated legal symbol? functionality into 'legal?' function. 'symbol?'
|
|
back to pre 8.4.8 functionality
|
|
|
|
8.5.0 Released April 8, 2005
|
|
'=' fixed problem when comparing strings and binary buffers
|
|
|
|
'args' with negative index did hang
|
|
|
|
'main-args' nor can be indexed like args, both accept negative indices
|
|
|
|
8.5.1
|
|
newlisp-tk tripped over file spec "", changed to "." in lastLoadedFile
|
|
on MacOSX. Changed Demo.lsp to work with TLCKAqua on MacOSX.
|
|
|
|
new function 'factor' for factoring numbers up to 15 digits
|
|
(must give floats for numbers bigger max int)
|
|
|
|
in newlisp.so and newlisp.dll main-args was initilized to nil instead of
|
|
the empty list ()
|
|
|
|
list in 'dolist' now safe to modify (back to 8.3.2 behaviour), but can
|
|
leave with 'throw' without leaking cells
|
|
|
|
signalling SIGUSR1 will perform a 'reset' but not kill newLISP
|
|
|
|
'timer' start a one shot timer event and registers a user defined
|
|
event handler, i.e: (define (ticker) (println (date)) (timer 'ticker 1))
|
|
defines a self starting and retriggering ticker.
|
|
|
|
8.5.2
|
|
added debug option to SIGINT handler, eliminated SIGUSR1 handler, because
|
|
is redundant
|
|
|
|
8.5.3
|
|
added 'signal' for userdefined signal handlers: (signal sig-no symbol)
|
|
|
|
args was not reset to '() when left unused in recursion levels
|
|
|
|
8.5.4
|
|
signal handler can pass the signal number as an argument (see manual)
|
|
|
|
new makefiles for OSX/Darwin UTF-8: make 'osx_utf8' and make 'darwin_osx_utf8'
|
|
(Darwin means: OSX + readline support)
|
|
|
|
when compiled with readline support newLISP will now exit pressing Ctrl-D
|
|
(Linux/UNIX)
|
|
|
|
'net-select' crashed on an empty list
|
|
|
|
8.5.5
|
|
fixed UTF-8 problems in file names in newlisp-tk.tcl (thanks Norman)
|
|
|
|
UTF-8 symbols where not treated as legal symbols in 'save' , 'legal?'
|
|
This prevented UTF-8 symbols to show up in the editor/browser listbox.
|
|
This is now fine on all UTF-8 and non-UTF-8 version.
|
|
|
|
UTF-8 now handled correctly in hostnames in net-xxx routines
|
|
|
|
UTF-8 now handled correctly in 'float' and 'integer', took some
|
|
UTF-8 characters for numbers.
|
|
|
|
'net-connect' and 'net-select' did not accept/convert floats for
|
|
portnumbers/sockets
|
|
|
|
sqlite3.lsp v.1.3 now handles FLOAT and BLOB datatypes and finds the correct
|
|
library/location depending on the OS platform
|
|
|
|
newlisp-tk did not save pathnames correctly in newlisp-tk.conf. New
|
|
|
|
version newLISP-tk 1.26 now works correctly when installing on MacOSX
|
|
use 'sudo make install' after build with 'make darwin' or 'make osx'
|
|
needs TclTk Aqua installed with darwin port tools
|
|
|
|
8.5.6
|
|
fixed potential problem in 'net-connect' with multicast option on
|
|
big-endian CPUs (MacOSX)
|
|
|
|
added broadcast option to 'net-connect' as udp mode plus broadcast specified
|
|
with "b" or "broadcast" instead od "udp". Broadcast mode was already possible
|
|
in 'net-send-udp'. Now broadcast can be set up in non-blocking mode on the
|
|
receiver side.
|
|
|
|
|
|
8.5.7
|
|
big speedup of 'replace' with strings on a file of 100k about 30x on
|
|
500k about 500x times speedup.
|
|
|
|
added example/tcltk.lsp for showing how to make GUIs without newlisp-tk
|
|
controlled from a newlisp script
|
|
|
|
|
|
8.5.8
|
|
added true/nil as allowed data in memory shares
|
|
|
|
added new make flavor osx_lib for shared library newlisp.so
|
|
|
|
MacOSX binary are smaller now because since 10.3 osx-dlfcn.o
|
|
is not required anymore, but extra makefile_osx_10.2 for older
|
|
Mac's
|
|
|
|
flushing stdio after output if not in terminal mode lets newLISP
|
|
now serve as a UNIX inetd handler
|
|
|
|
8.5.9
|
|
'timer' now can take fractions of a second, i.e. (timer 'alarm 0.1)
|
|
for 100 millisec
|
|
|
|
'read-buffer' now can take an optional wait string as 4th parameter
|
|
similar to 'net-receive' with wait string
|
|
|
|
added Mac OSX package preperation to Makefile
|
|
|
|
dropped cygwin support. MinGW and Borland remain as Win32 options
|
|
#ifdef's for cygwin are still there but have not been tested for
|
|
several versions
|
|
|
|
8.5.10
|
|
fixed a crash when hitting cursor-up inbetween [cmd]...[/cmd] tags
|
|
|
|
'timer' now avalailable on Win32
|
|
|
|
fixed a regex error, when expression found is of length 0
|
|
only one replacement was made
|
|
|
|
implicit indexing did not accept indices after a var-index, if
|
|
var-index was the first.
|
|
|
|
8.6.0 released June 10 2005
|
|
a bug fix for unpack when passing a number as an address on
|
|
OpenBSD where virtual memory pointers may be > 0x7fffffff
|
|
|
|
new function crc32, version: http://www.w3.org
|
|
|
|
share on Win32 leaked memory
|
|
|
|
8.6.1
|
|
'sql3:open' now returns nil and sets error the message when trying
|
|
to sql3:open twice.
|
|
|
|
'timer' now returns the elapsed time when calling just with the
|
|
event symbol, useful for checking timer progress or programming
|
|
timelines/schedules.
|
|
|
|
'source' now works like 'save' and can take multiple symbols;
|
|
context symbols are serialized including all of the contained
|
|
symbols.
|
|
|
|
Files are now created without execution permission with rw-rw-rw
|
|
which results in rw-r--r-- on UNIX systems assuming a user mask
|
|
of 0022.
|
|
|
|
'peek' similar to 'net-peek' but for any file descriptor, returns
|
|
number of bytes ready to read works also on std I/O 0/1. Only UNIX.
|
|
|
|
Added gmp.lsp for GNU Multi Precision library, contains
|
|
integer functions for arithmetik, see header of file gmp.lsp
|
|
for details.
|
|
|
|
optional parameter 'true' in 'difference' and 'intersect' puts
|
|
these functions in list-mode (versus normally set-mode).
|
|
|
|
new function 'title-case' upper-cases first character and
|
|
optionally lowercases the rest characters
|
|
|
|
8.6.2
|
|
changed makefile_darwin_utf8 to work on standard 10.4 installation
|
|
|
|
a parameter in utf8 version of upper/lower was evaluated twice
|
|
caused by new title-case code in 8.6.1
|
|
|
|
fixed append mode in file 'open' which created file with ------
|
|
permissions when file did not exists
|
|
|
|
optional 'true' flag in net-lookup to force hostbyname() lookup
|
|
for strings like "216.16.84.66.sbl-xbl.spamhaus.org"
|
|
|
|
huge speedup for 'difference' and 'intersect'. On a 10000 elment
|
|
list about 100 times speedup, both functions now scale linearly
|
|
with n+m instead of n*m, when n an m are the lenghts of the two
|
|
lists
|
|
|
|
speedup of 'count' for big item lists now scales m+n instead m*n
|
|
when m is the list of items to count in list with length n
|
|
|
|
8.6.3
|
|
'difference' did sometimes not unique, 'nil' treated incorrectly
|
|
|
|
8.6.4
|
|
fixed problems in 'count' and 'sort' caused by changes in 'sort'
|
|
necessary in new version of 'count', 'difference', 'intersect' and
|
|
'unique'
|
|
|
|
8.6.5
|
|
'catch' did not respect protection of symbols in the catch symbol
|
|
|
|
make version with sed finally working on UNIX previously only
|
|
cygwin
|
|
|
|
new function 'randomize' shuffles the elements of a list
|
|
|
|
new function 'net-eval' evaluates a batch of functions remotely
|
|
on newlisp servers, manages Tcp/Ip communications and data collection
|
|
with multiple servers started with: newlisp -c -d <portno>
|
|
timeout and optional callback/idle function
|
|
|
|
'array' with 0 length dimension crashed, now ignores 0-length
|
|
|
|
-d mode would exit when loss of communication in multiline [cmd] mode
|
|
now just cycles to restart
|
|
|
|
'error-event' only worked in programs loaded interactively, now works
|
|
also defined in scripts started on the command line
|
|
|
|
-l and -L now usable for logging in normal console mode, -l logs only
|
|
user input -L logs both user input and newLISP output (without prompt)
|
|
new chapter for logging in users manual
|
|
|
|
when evaluating multiple expressions on the command line or a batch
|
|
of expressions enclosed in [cmd],[/cmd] tags multiple results are now
|
|
separated by one space.
|
|
|
|
8.6.5-7
|
|
'ramdomize' looped on listlen 1
|
|
|
|
'load' now throws an eror when the file cannot be found or returns
|
|
the value of the last expression in the file evaluated. Before 'load'
|
|
returned 'nil' when file was not found and else 'true'. Note that this
|
|
required a change in init.lsp to catch error when trying to load
|
|
$HOME/.init.lsp
|
|
|
|
eliminated all sprintf() to avoid security warnings on openBSD compiles
|
|
|
|
'erf' and 'sgn' new functions
|
|
|
|
took out txt2pdf which is broken, will come back when fixed
|
|
|
|
fixed leak in evluateStream introduced with 'net-eval'
|
|
|
|
8.7.0-rc1 released October 10th 2005
|
|
'get-url' now acccepts https:// pages in main url or moved location
|
|
|
|
'sgn' extended with optional triconditional functionality
|
|
|
|
fixed result stack leak in 'net-eval'
|
|
|
|
'get-url', 'post-url' and 'put-url' now can take a timeout parameter
|
|
|
|
'read-buffer' with wait string now will put bytes read in buffer
|
|
including when the wait string was not found. When no bytes are
|
|
read buffer is nil.
|
|
|
|
'date-value' returned negative numbers on dates earlier 1970, now returns
|
|
0 on dates previous to 1970
|
|
|
|
'net-eval' would loop on connection errors, more detailed error messages
|
|
|
|
8.7.0 released October 15th
|
|
'append-file' like 'write-file' but appends
|
|
|
|
'select' on lists with an empty selection list now returns the empty list
|
|
previously nil.
|
|
|
|
8.7.1 RELEASE Nov 7th, 2005
|
|
fixed bug for push -1 optimization and various doc corrections
|
|
|
|
replaced 'integer' with 'int', 'get-integer' with 'get-int' and 'symbol'
|
|
with 'sym' in several examples/ and modules/ files
|
|
|
|
(nth <list> <list>) now throws error (list index only allowed in
|
|
push/pop and implicit indexing)
|
|
|
|
8.7.2 development Release November 20th
|
|
new (net-ping host wait-time) returns ip-no or multiple ip-no for multiple
|
|
addresses in batch-mode or broadcast. Must have root privileges to use, or
|
|
set the newlisp executable set-user-ID with: chmod u+s /usr/bin/newlisp or:
|
|
chmod 4755 /usr/bin/newlisp; only on UNIX
|
|
|
|
'time' now safe for midnight wrap
|
|
|
|
'dup' with optional 'true' flag now can force list return when a string argument
|
|
is given; by default 'dup' concatenates the string
|
|
|
|
sys-error now reset after readline(), which caused it set to 22
|
|
|
|
'transpose' on empty lists segfaulted when on zero length dimension in the
|
|
first row, now an error message will be issued if the first row is empty
|
|
|
|
imnplicit rest failed strings when n was >= length of string
|
|
|
|
'count', 'difference' and 'intersect' crashed when handling identical lists
|
|
|
|
8.7.3 development release November 27th
|
|
added "list" flag to 'get-url', which permits capturing header and page in a list.
|
|
|
|
added custom header option to get-url, post-url and put-url
|
|
|
|
string display translation for char > 126 to \nnn format
|
|
|
|
8.7.4 development release December 5th, 2005
|
|
expanded functionality for 'context': (context 'CTX "symstr" value)
|
|
adds symbol to context CTX, (context 'CTX "symstr") returns value
|
|
this is a short form for: (set (sym "symstr" 'CTX) 123)
|
|
|
|
expanded form of 'context?' for checking existence of a symbol
|
|
|
|
'time' takes an additional parameter for the number of times the
|
|
expression should be evaluated for timing
|
|
|
|
cleanup format, file and directory routines (less code)
|
|
|
|
the terminating character from an expression returned in the console has been
|
|
changed from a space to a line feed
|
|
|
|
8.7.5 Development release December 23rd
|
|
added util/newlisp.plist syntax file for OSX BBEdit or TextWrangler editors
|
|
|
|
raw mode in 'net-eval' now documented
|
|
|
|
recognize simple path-href in 'location:' header spec in get/post/put -url
|
|
|
|
in 'process' on UNIX an optional pipe handle for standard error can be specified
|
|
if not present standard error gets redirected to stdout
|
|
|
|
allow default functions to be defined as primitives
|
|
|
|
shortened symbol param loop in evaluateLambda and evlaluateMacro
|
|
|
|
getContext() now safe for debug mode
|
|
|
|
'replace-assoc' gets additional (long overdue) syntax to remove associations
|
|
|
|
help-option in context console menu on newlisp-tk (not working on OS X)
|
|
|
|
8.7.6
|
|
Help buttons now work on MacOS X in newlisp-tk
|
|
|
|
fixed and issue with 'case' when a 'true' clause was assembled from an
|
|
evaluated 'true
|
|
|
|
handle some cases of self reference in set-nth/nth-set, i.e: the replacement sub
|
|
expression itlself changes the place its supposed to be assigned:
|
|
(set-nth i L (set-nth i L 99)) )
|
|
|
|
: (colon) now will be returned as token even if attached to other following chars
|
|
|
|
'parse' without regex parameter couild overrun string when it ended in \
|
|
|
|
8.7.7
|
|
regular expression support in 'directory'
|
|
|
|
new 'number?' works like (or (float? x) (integer? x))
|
|
|
|
in newlisp-tk help on hightlighted reserved word now works on MacOS X bringing
|
|
up browser with manual on right spot. (Ctrl-Left-Button for context menu)
|
|
|
|
new (bayes-train list-A list-B [list-C ...] context-symbol) lists contain
|
|
string tokens; and (bayes-query list-query context), not documented yet,
|
|
still testing and modifying
|
|
|
|
memory error fix in 'get-url' for chunked pages
|
|
|
|
8.7.8 development release January 16th 2006
|
|
'apply' now works on lists with unlimited length, no stack limit
|
|
|
|
both Bayesan modes: Chain Bayesian and R.A. Fisher CHi2, are now supported with
|
|
new 'bayes-train' and 'bayes-query', working and tested, see manual for
|
|
details
|
|
|
|
moved 'prob-chi2' and 'pob-z' in manual to "Simulation and modelling" group
|
|
together with 'bayes-train' and 'bayes-query'
|
|
|
|
ATTENTION:
|
|
|
|
calling into a context now changes the current run-time context:
|
|
|
|
(context 'FOO)
|
|
(define (foo) (context))
|
|
(context MAIN)
|
|
|
|
(FOO:foo) => MAIN ; old behaviour
|
|
|
|
(FOO:foo) => FOO ; new behaviour
|
|
|
|
The new behaviour is more intuitive and is what most programmers would expect.
|
|
Only applications using 'eval-string' or 'sym' (w/o specifying a context) are
|
|
effected. From all apps published by newlisp.org (blog, wiki, ide) only the file
|
|
cgi.lsp packaged with these applications is affected and should be changed to
|
|
the new cgi.lsp v.1.9 packaged with 8.7.8.
|
|
|
|
Users should check all applications using 'eval-string' and 'sym' (or the
|
|
deprecated 'symbol'). Pre 8.7.8 'eval-string' and 'sym' work with the runtime-
|
|
context beeing MAIN, the context where the program was started. Now both functions
|
|
work with the context they are part of:
|
|
|
|
(context 'FOO)
|
|
(set 'x 999)
|
|
(define (foo s) (eval-string s))
|
|
(define (bar s) (eval (sym s)))
|
|
(context MAIN)
|
|
(set 'x 123)
|
|
|
|
(FOO:foo "x") => 123 ; old behaviour
|
|
(FOO:bar "x") => 123 ; old behaviour
|
|
|
|
(FOO:foo "x") => 999 ; new behaviour
|
|
(FOO:bar "x") => 999 ; new behaviour
|
|
|
|
Changes to old code:
|
|
|
|
(1) Replace all cgi.lsp in newlisp-ide, newlisp-blog and newlisp-wiki apps.
|
|
the replacement will also work with newLISP versions previous to 8.7.8.
|
|
|
|
(2) Change old apps by preceding the 'eval-string' statement with (context MAIN)
|
|
or other required context change. Most of the time it's MAIN, the context where
|
|
th whole program was started.
|
|
|
|
(3) Change old apps adding explicitly the desired context in 'sym' as a
|
|
second parameter, i.e. (sym s 'MAIN) or (sym s ctx) where 'ctx' is a context
|
|
variable.
|
|
|
|
The new behaviour is more intuitive and will make OO based programming based
|
|
on contexts easier, it also increases isoloation of contexts because the current
|
|
run-time context is not dependend from where the program was started originally,
|
|
but only on the situation internal to that context.
|
|
|
|
8.7.9
|
|
added a configure script for compatibility with the popular autoconf/configure
|
|
system. An installation of autoconf is not required but the same sequence
|
|
of commands as on autoconf systems will work to make newLISP. newLISP's old
|
|
ways of making newLISP will also still work:
|
|
|
|
./configure will just try to discover the platform and give a message
|
|
make will try to discover the platform and make it
|
|
|
|
if make cannot discover the platform it will give a message
|
|
|
|
the module/context is now reported in error messages
|
|
|
|
'load' will never cause the runtime context changed, but the same run-time
|
|
context that was valid before the call to 'load' will be valid when 'load'
|
|
returns
|
|
|
|
'eval-string' now can specify the context under which it's string argument
|
|
should be parsed and evaluated.
|
|
|
|
'log' can be specify an additional parameter for a different base than the
|
|
default natural log
|
|
|
|
fixed a problem with reading very long UTF-8 source string constants
|
|
|
|
big speedup of parse with regular expression, now scaling linear
|
|
this enables tokenizing big documents in one piece
|
|
|
|
args in functions should be evaluated in callers context
|
|
(for: sym, context, eval-string)
|
|
|
|
8.7.10
|
|
raw string ouput (upper ascii in \nnn codes) in the newLISP commandline shell
|
|
return value only when locale is the default "C" locale.
|
|
|
|
'trim' was changing the original string in UTF-8 mode
|
|
|
|
'find', 'replace' and 'search' now do binary in both regex and non-regex modes
|
|
searched buffer, key/patterns string and replacement string can all contain
|
|
binary 0s
|
|
|
|
8.7.11
|
|
'string' now optimized double fast on string arguments
|
|
|
|
getCreateContext() checking symbol protection
|
|
|
|
'load' switches to context MAIN when loading file except if different
|
|
context is specified in file, on return 'load' switches back to callers
|
|
context (8.7.9)
|
|
|
|
'reset' adds an additional parameter for restarting newLISP with same
|
|
command line parameters with fresh memory in a new process space.
|
|
|
|
many security improvements for OpenBSD compiles
|
|
|
|
'reset' with optional 'true' (or non 'nil') parameter will restart
|
|
newLISP with the same commandline parameters, reloading files etc.
|
|
Not available on Win32 (execv() leave the system unstable when compiling
|
|
with MinGW.
|
|
|
|
8.8.0-p1 pre-release 1
|
|
'reset' was always exiting on UNIX after the change in 8.7.11
|
|
|
|
text buffers returned in 'net-eval' > 2048 characters and containing zero
|
|
characters where throwing a 'string too long error'
|
|
|
|
8.8.0-p2 pre-rlease 2
|
|
Many doc corrections
|
|
|
|
system symbols in set-nth was broken in 8.7.6
|
|
|
|
self refs in set-nth now safe
|
|
|
|
added and changed some cases to qa_dot and qa_comma, now safe again
|
|
for memory leak tests.
|
|
|
|
8.8.0 released February 20th, 2006
|
|
large file system support for files > 2 GB can now be turned on in newlisp.h
|
|
specifying #define LFS. File positions > 2^31 must then be specified as
|
|
floats up to 999999999999999.0 for 999 terabyte (TB). 'seek' will always
|
|
return a float, file positions should be handled as floats using
|
|
add, sub, mul, div instead +,-,*,/
|
|
|
|
Documentation corrections (thanks Ryon, Nigel et al.)
|
|
|
|
moved sql.c and types.c into the util directory
|
|
|
|
updated newlisp.vim (v1.27) and newlisp.jsf (v.1.9)
|
|
|
|
bug fix in cgi.lsp for '=' in key value strings
|
|
|
|
8.8.1
|
|
realloc compiler warning fix in nl-filesys.c/readBuffer()
|
|
|
|
error-event, net-eval (edited 4/13/20060), signal and timer can now take
|
|
a function or lambda expression, previously only a symbol holding a lambda:
|
|
(signal 2 exit)
|
|
(timer (fn () (println "hello")) 5)
|
|
The old syntax still works too.
|
|
|
|
Could not compile to a library (also fixed in re-release of 8.8.0)
|
|
|
|
code cleanup for allocMemory() + memset() => callocMemory()
|
|
|
|
now memory cleanup after exception in functor passed by:
|
|
'filter', 'index', 'net-eval' and 'replace'.
|
|
|
|
implicit n-rest and slice on default lists and strings:
|
|
(set 'foo:foo '(a s d f g h j))
|
|
(2 foo) => (d f g h j)
|
|
(-3 2 foo) => (g h)
|
|
|
|
'save' and 'source' will always serialize from context MAIN perspective
|
|
(like 'load') (source reverted back in 8.8.2)
|
|
|
|
fixed odd/even problem for 'rand' on FreeBSD, NetBSD, OpenBSD
|
|
|
|
8.8.2
|
|
'source' reverted back to 8.8.0 behaviour: serialize to current context
|
|
|
|
8.8.3
|
|
'signal' fixed format of internal symbol when passing functions
|
|
|
|
suppress saving/sourcing system symbols starting with '$' unless specified
|
|
specifically
|
|
|
|
new built-in function 'real-path' translates a relative path into an
|
|
absolute path. (read-path) same as (real-path ".") returns the current
|
|
working directory
|
|
|
|
8.8.4
|
|
'real-path' now also in Win32
|
|
|
|
handle self reference of result of while expression in condition
|
|
|
|
allow (sys-info 3) or (sys-info -1) as with 'args' and 'main-args'
|
|
|
|
'dup' will assume 0 for negative values
|
|
|
|
when entering multiline expressions/definitions bracketed by [cmd] ... [/cmd]
|
|
tags (each on a separate line] and hitting <enter><up-arrow> after the closing
|
|
[/cmd], newLISP compiled with lib readline support segfaulted, this long standing
|
|
bug as finallly been fixed
|
|
|
|
in 'xml-parse' when a closing CDATA tag was preceded by a forward slash, then
|
|
an extra text element containing part of the closing tag was emmitted,
|
|
this is fixed
|
|
|
|
support for MySQL v. 5.0 was added with mysql5.lsp
|
|
|
|
8.8.5
|
|
'read-key' now also works on MacOS X
|
|
|
|
a bug in the second syntax of 'context' has been fixed now can do:
|
|
(push i (context 'CTX "foo")) which now works if CTX:foo is a list
|
|
|
|
'load' now can take http:// (and file://) URL prefixes in filnames to retrieve/load
|
|
files via HTTP from remote servers
|
|
|
|
'xml-parse' now can take a context to place symbols/tags from SXML conversion
|
|
|
|
zlib.lsp: new module for in memory and .gz compatible file compression
|
|
|
|
'net-eval' idle loop did not pass parameter (broken in 8.8.1)
|
|
|
|
fixed a cell leak caused by 'while' self ref handling in 8.8.4
|
|
|
|
8.8.6
|
|
|
|
fix for error reporting of strings, which are too long
|
|
|
|
an optional break condition in all looping constructs allows early return:
|
|
(for (i from to step condition) ...)
|
|
(dotimes (i N condition) ...)
|
|
(dolist (i lst conditon) ...)
|
|
When condition returns non-nil the loop returns with the value of the condition.
|
|
When loop comes to end end the result of the last body expression gets returned.
|
|
|
|
describing the effects of non-rectangular matrices in the "Data types" chapter
|
|
and for the functions 'multiply', 'invert' and 'transpose'.
|
|
|
|
sqlite.lsp vor SQLite v.2.x has been discontinued, use sqlite3.lsp and SQLite3
|
|
|
|
error message was printed for each catch level where error was not caught,
|
|
should only be printed on top level if uncatched
|
|
|
|
new 'letex': let expression with expansion of let vars into body expressions
|
|
before evaluation
|
|
|
|
file open for append now atomic
|
|
|
|
8.8.7
|
|
new 'clean':
|
|
(clean predicate? aList) works like:
|
|
(filter (fn (x) (not (predicate? x))) aList)
|
|
|
|
"Transfer-Encoding: chunked" did not trigger chunked decoding
|
|
when more than one space after the ':' before 'chunked'
|
|
|
|
$0 counter did not count first element when in remove mode of
|
|
'replace'
|
|
|
|
'unify' does Prolog like unification with occur-check
|
|
(unify '(f (g A) A) '(f B xyz)) => ((B (g xyz)) (A xyz))
|
|
|
|
'unify' can take additional assoc params list:
|
|
(unify '(A (B) X) '(A (A) Z) '((A 1) (Z 4)))
|
|
=> ((A 1) (Z 4) (B 1) (X 4))
|
|
this is useful when chanining/nesting 'unify' to pass on
|
|
a newly bound environment
|
|
|
|
new mode in 'expand' with parameter assoc list:
|
|
(expand '(a (B (c) (d a B))) '((a 1) (B 2) (c 3) (d 4))) =>
|
|
(1 (2 (3) (4 1 2)))
|
|
|
|
new mode in 'expand' without symbol or assoc list:
|
|
(set 'X 2)
|
|
(expand '(a ((X)) b)) => (a ((2)) b))
|
|
expands only uppercase variables for use with the new Prolog like
|
|
'unify' function
|
|
|
|
added file syntax.cgi for syntax highlighting in HTML of newLISP source
|
|
to examples directory
|
|
|
|
8.8.8
|
|
eliminates several cell leaks in unify
|
|
|
|
'pop' can be used on strings (pop str [pos] [len]) pos can be negative
|
|
'push' can be used on strings (push str [pos]) pos can be negative
|
|
'push' now will only do list mode when lst is list or nil:
|
|
(push new lst) lst has to be list or nil, previous to string mode of push
|
|
any existing datatype non-list was initializeed to () now only nil is allowed
|
|
|
|
system var $idx contains the offset in dolist:
|
|
(dolist (e '(a b c d e)) (println $idx "->" e))
|
|
0->a
|
|
1->b etc.
|
|
|
|
indexing mode of 'args' now works with multiple indices, i.e (args 3 -1)
|
|
and is much faster
|
|
|
|
implicit indexing syntax now allowed in 'nth-set' and 'set-nth':
|
|
(set 'd '(a b c d e f g))
|
|
(nth-set (d 3) 99) => d
|
|
d => (a b c 99 e f g)
|
|
or with default functor:
|
|
(set 'db:db '(a b c d e f g))
|
|
(nth-set (db -1) 99) => g
|
|
db:db => (a b c d e f 99)
|
|
This also works for strings and arrays
|
|
|
|
many fixes/changes/additions in the manual and reference
|
|
|
|
8.8.9
|
|
'net-ping' didn't work on localhost
|
|
|
|
'nth-set/nth-set' bugfix for new feature breaking old
|
|
|
|
complete manual pass of the first 3 chapters by Michael - thanks
|
|
|
|
8.8.10
|
|
rotate works also on strings
|
|
|
|
(cons item lst -1) for consing at the end of the list (undocumented)
|
|
|
|
allow 0 length in chunked pages happening on put-url
|
|
|
|
give error message for unterminated [text] in interactive console
|
|
|
|
8.9.0 Release June 25th
|
|
complete pass through Users Manual by Michael Michaels
|
|
|
|
example programs in Appendix are now syntax highlighted
|
|
|
|
dolist $idx safe for nested loops
|
|
|
|
member works for strings
|
|
|
|
(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
|
|
|
|
8.9.1
|
|
(rand x n) returned n+1 after fix in 8.9.0, also looped on n=-1
|
|
|
|
new 'zero?' was broken for floats with fractional parts
|
|
|
|
newlisp -c -d <portno> and newlisp -c controlled by inetd now understand
|
|
simple HTTP GET requests. This feature is mainly intended for use with
|
|
(get-url "http://...) and (load "http://...) for retrieving or loading
|
|
files from remote newlisp/inetd worker nodes in a distributed computing
|
|
environment.
|
|
|
|
manual reviewed/edited up to and including the letter C
|
|
|
|
8.9.2
|
|
|
|
new (find-all pattern string [func [options]]) finds all regex-patterns in a
|
|
string and returns a list of matching strings:
|
|
(find-all {\d+} "asdf2kjh44hgfhgf890")
|
|
=> ("2" "44" "890")
|
|
(find-all {(new)(lisp)} "newLISPisNEWLISP" (append $2 $1) 1)
|
|
=> ("LISPnew" "LISPNEW")
|
|
|
|
the parameters in 'format' after the format string can now also be
|
|
given in a list: (format "%d %s" '(123 "hello"))
|
|
|
|
'read-key' did not work on SUSE Linux
|
|
|
|
8.9.3
|
|
default values in function and macro parameters: (define (foo (a 1) (b 2)) (list a b))
|
|
(foo) => (1 2)
|
|
(foo 3) => (3 2)
|
|
(foo 3 4) => (3 4)
|
|
no performance loss for normal syntax without defaults
|
|
|
|
format partly rewritten for better portability,
|
|
no tru64.c or ffi required after removing TRU64 for p_format in nl-string.c
|
|
|
|
8.9.4
|
|
removed tru64.c and changed makefile_true64
|
|
|
|
starts-with and ends-with can do reguluar expressions and take a regex option number,
|
|
the old nil-option for case insensitivity still works and is translated to regex
|
|
option = 1, but is deprecated and will be eliminated in the future
|
|
|
|
member for strings can take regular expressions, the old case insensitivity option
|
|
will not work (member for strings was introduced only recently
|
|
|
|
'symbol' the old writing for 'sym' has been eliminated
|
|
|
|
fixed create context bug in newlisp-tk.tcl
|
|
|
|
(<< num) works like (<< num 1), (>> num) like (>> num 1), (div num) like (div 1.0 num)
|
|
|
|
function 'uuid' for creating Universal Unique IDs type 1 and 4 (RFC 4122)
|
|
|
|
-C command option for Emacs forces prompt even if in pipe mode
|
|
|
|
manual edits up to letter J, thanks Michael
|
|
|
|
8.9.5
|
|
type 4 UUID now closer to RFC 4122 specification
|
|
|
|
trying to use set-nth or nth-set on an empty list corrupted the list
|
|
|
|
8.9.6
|
|
UUID type 1 got timestamp wrong, UUID 4 always started the same sequence
|
|
|
|
|
|
-------------------------- 64 Bit Integers ------------------------------------
|
|
|
|
|
|
8.9.7
|
|
all integer arithmetik 64 bit
|
|
|
|
'factor' now takes integers with max 64 bits and is 4x faster than previously
|
|
|
|
'import', 'pack', still take ints as 32bit, taking the least significant 32 bits
|
|
to pack 64bits do: (pack "ldld" int64 (>> int64 32)) for little endian
|
|
for big endian do: (pack "ldls" (>> int64 32) int64)
|
|
|
|
'format' has new 64 bit formats "%lld", "%llu" "%llx" for 64bit decimals and
|
|
hex numbers on UNIX on Win32 use "%I64d", "%I64u", "%I64x"
|
|
|
|
'format' now also recognises 'e' and 'E' scientific folating point formatting
|
|
|
|
32 bit format strings "%d" "%u" "%x" will truncate on int64 numbers
|
|
|
|
in float->int conversions floats out of range are converted to min/max 64 bit int
|
|
-9223372036854775808, 9223372036854775807 and 18446744073709551615 for unsigned
|
|
|
|
if an int32/uint32 is required by a function int64 values overflow to
|
|
min/max 32 bit int -2147483648/2147483647 and 4294967295 for unsignde int
|
|
|
|
LFS (large file support) in file operations for files opened with 'open'
|
|
now full 64 Bits (before 40 Bits)
|
|
|
|
(for (i from to step)...) has float in i, only when optional step value is specified
|
|
(sequence from to step) produces float only when optional step value is specified
|
|
(dotimes (i N)...) always has integer in i
|
|
this is consistend with 'inc' and 'dec'
|
|
|
|
net-select now can go to 68 :) years waiting time specifying 64bit higher timeout
|
|
values and a timeout of -1 waits forever
|
|
|
|
'net-close' with optional parameter: (net-close sock true) will suppress shutdown()
|
|
before closing the socket. In this case net-close will wait for undergoing traffic
|
|
to finish
|
|
|
|
new function (gcd x y ...) for greatest common deviser of n arguments
|
|
|
|
(pow x) defaults to (pow x 2)
|
|
|
|
wrong format could segfault (this bug was introduced in 8.9.3)
|
|
|
|
when replacing the first element in an association list with 'replace-assoc' and
|
|
an error occured when evaluating the replacement expression a segfault occured
|
|
(thanks to Ingo for catching this)
|
|
|
|
Note that bits shifts <<,>> now work on 64-bit integers too (added 2006-09-12)
|
|
|
|
8.9.8
|
|
'net-eval' now evaluates node parameters, before constants where required
|
|
(set 'host "localhost" 'port 4711 'cmd "(+ 3 4)")
|
|
(net-eval '((host port cmd)) 1000) = (7)
|
|
|
|
'net-eval' if no timeout specified waits forever
|
|
|
|
'net-eval' short form for one node: (net-eval host port cmd [timeout idle-loop])
|
|
timeout an idle loop are optional: (net-eval host port cmd)
|
|
|
|
Similar as for (load "http:// ...) and (get-url "http//..) in 8.9.1;
|
|
server mode: newlisp -c with -p or -d, now understands HTTP PUT requests
|
|
for saving/writing text files to a newLISP server node on UNIX using:
|
|
(save "http://..." ...) and (put-url "http://...") ...)
|
|
The server mode together with the beefed up 'net-eval', 'load', 'save'
|
|
'get-url' and 'put-url' assemble a nice toolset for distributed applications
|
|
with newLISP. The server node can also be started by inetd or xinetd.
|
|
(See manual). Must give full path-file-name in URLs i.e:
|
|
(put-url "http://localhost:50001//Myfiles/afile.txt" (read-file "somefile"))
|
|
|
|
newLISP server mode with HTTP capabilities in not yet available on Win32.
|
|
|
|
target context MAIN is now disabled in 'def-new' and 'new' because it would
|
|
cause ambigous situations when copying context vars after fixing a related
|
|
bug: def-new and new on context-vars
|
|
|
|
on UNIX a shared memory address obtained with 'share' can be unmapped using
|
|
(share nil <address>)
|
|
|
|
'put-url' with "Pragma: append\r\n" in header option appends when talking
|
|
to newLISP server
|
|
|
|
'read-file', 'write-file' and 'append-file' accept "http:// ..." and
|
|
for HTTP mode and "file://..." for normal file mode.
|
|
in HTTP mode they work exactly like 'get-url', 'put-url' and 'put-url'
|
|
with "Pragma: append" in the header option.
|
|
|
|
new QA file qa-net for testing newLISP server modes with:
|
|
net-eval, load, save, read-file, write-file, append-file
|
|
|
|
new QA file qa-utf8 to display UTF8 characters, this is not a test for
|
|
newLISP but rather the UTF8 display capabilities of the platform running on
|
|
|
|
8.9.9
|
|
matrix operations now can be performed on arrays (previously only lists)
|
|
matrix operations will return the type (list or arrray) which was given
|
|
as input. In case of mixed input (i.e. in multiply), array type is
|
|
returned.
|
|
|
|
new function 'det' returns the determinant of a square matrix expressed
|
|
as a list or array.
|
|
|
|
fixed cell leak in define-macro when exercising default values
|
|
|
|
64-bit integers where not displayed correctly in Win32 MinGW
|
|
|
|
8.9.10
|
|
'append', 'first', 'last', 'rest', 'slice' (and implicit slicing) now also
|
|
available for arrays
|
|
|
|
(timer 'event 0) did not stop on Win32
|
|
|
|
a fix in Curl_base64_decode() for bad base64 strings
|
|
|
|
20% speed up for append on strings and join
|
|
|
|
8.9.11
|
|
'append' did not append correctly to lambda lists, which lost lambda attribute
|
|
|
|
'qa-net' fixed (this file only tests on UNIX)
|
|
|
|
8.9.12
|
|
'int' did a signed instead of unsigned conversion
|
|
|
|
'save' did not save global protected symbols in a way they
|
|
could be reloaded
|
|
|
|
8.9.13
|
|
'local' like 'let' but no initialization of locals (all nil):
|
|
(local (x b x) body)
|
|
|
|
'swap' has a third syntax pattern to swap the contents of symbols: (swap x y)
|
|
|
|
8.9.14
|
|
speedup and memory savings on 'apply'
|
|
|
|
fixed INT64->string conversion in sym for True64/WINCC
|
|
|
|
error checking on all reallocs()
|
|
|
|
changed to realloc() in writeStream() routines
|
|
|
|
8.9.15
|
|
(join '(1 2 3)) was hanging, instead of wrong datatype error message
|
|
|
|
support "\x41\x42\xff" in string hex format equivalent to "\065\066\255"
|
|
|
|
new 'ref-all' returns a list of index vectors for all ref's of an expression
|
|
(ref-all 'a '(a b c (d a f (a h a)) (k a (m n a) (x))))
|
|
=> ((0) (3 1) (3 3 0) (3 3 2) (4 1) (4 2 2))
|
|
|
|
9.0.0 Release October 15th, 2006
|
|
|
|
9.0.1
|
|
'read-file' did not read extended http:// mode parameters correctly
|
|
|
|
new 'doargs' works like 'dolist' iterates through (args)
|
|
(define (foo) (doargs (i) (println i)))
|
|
(foo 1 2 3) => prints 1 2 3
|
|
implemented on top of 'dolist' also does $idx and break-expressions
|
|
|
|
'explode' takes extra parameter for # of characters (works on UTF-8 too):
|
|
(explode "newlisp" 2) => ("ne" "wl" "is" "p")
|
|
|
|
new 'utf8len' length of a string in UTF-8 characters
|
|
|
|
new scalar matrix operations (matrix is a 2 dimensional list or array):
|
|
(set 'A '((1 2 3) (4 5 6))
|
|
(set 'B A)
|
|
(mat + A B) => ((2 4 6) (8 10 12))
|
|
(mat - A B) => ((0 0 0) (0 0 0))
|
|
(mat * A B) => ((1 4 9) (16 25 36))
|
|
(mat / A B) => ((1 1 1) (1 1 1))
|
|
Note that all matrix operations are in floating point
|
|
|
|
9.0.2
|
|
explode works on lists:
|
|
(explode '(a b c d e)) => '((a) (b) (c) (d) (e))
|
|
(explode '(a b c d e) 2) => '((a b) (c d) (e))
|
|
many structural transformations can be done combining 'explode' and 'transpose'
|
|
|
|
fixed cell-leak in 'ref-all'
|
|
|
|
in (mat <op> A B) B can be a single number:
|
|
(mat + '((1 2 3) (4 5 6)) 2) => ((3 4 5) (6 7 8))
|
|
|
|
some fixes for HTTP mode on UNIX
|
|
|
|
HTTP mode now working on Win32 but with some timing issues,
|
|
see header of file qa-net for details
|
|
|
|
9.0.3
|
|
$idx was broken after 9.0 starting with 1 instead of 0
|
|
|
|
9.0.4
|
|
fixed midnight rollover in 'timer' on Win32
|
|
|
|
new (round <number> <precision>) rounds a number to precision digits
|
|
left (positive) or rigt (negative) of the decimal point
|
|
|
|
new hyperbolic functions sinh cosh tanh
|
|
|
|
fixed push -1 optimization when popping only remaining element in list
|
|
|
|
new 'ostype' symbol holds os type string
|
|
|
|
new 'delete-url', needs to be enabled on target www server (most aren't)
|
|
else => "ERR: server code 405: HTTP/1.1 405 Method Not Allowed\r\n"
|
|
and must have file permissions set accordingly on target file;
|
|
additional parameters like timeout and custom headers are available
|
|
exactly as in 'get-url', the feature is also available in:
|
|
(delete-file "http://......"), similar to HTTP mode in 'read-file',
|
|
'write-file' and 'append-file' and is also implemented in newlisp
|
|
server mode (not working on Win32 newlisp server mode)
|
|
|
|
GET queries are now supported in newlisp server mode (not yet Win32)
|
|
|
|
9.0.5
|
|
'and' and 'or' now () when failing and last evaluation was ()
|
|
|
|
GET and POST cgi now working on UNIX and Win32 (9.0.6)
|
|
|
|
new -w <working-directory> commandline switch
|
|
useful for changing working directory after newlisp startup:
|
|
newlisp -c -d 8080 -w /Users/lutz/ide
|
|
this is the same as going into the directory and starting newlisp
|
|
newlisp -c -d 8080
|
|
|
|
newlisp can now run as a webserver doing newlisp based CGI. It runs both
|
|
newlisp-ide-x.x.tgz and newlisp-wiki-x.x.tgz, to run the ide on the local
|
|
machine:
|
|
newlisp -c -d 8080 -w /usr/home/www/ide
|
|
then in a webbrowser enter the URL http://localhost:8080/
|
|
index.cgi and index.html are looked for by default if no filename is
|
|
specified in URL
|
|
|
|
httpd example programm has been eliminated, because httpd mode now built-in
|
|
into newLISP
|
|
|
|
'file-info' now correctly reports filesizes > 2G (2147483647) bytes
|
|
now also can index: (file-info <path-name> 0) => filesize
|
|
|
|
the -x commandlne switch has been disabled, use newlisp server modes instead
|
|
|
|
fixed problems with break-condition in dolist/doargs introduced in 9.0.1
|
|
fixed problem when break-condition is the loop symbol itself
|
|
|
|
9.0.6
|
|
'nth' now with similar syntax options as 'net-set/set-nth'
|
|
new in 'nth':
|
|
(nth (L <idx1> <idx2> ...))
|
|
(nth (L <aref>)) ; where <aref> is a list of indices
|
|
new in 'set=nth', 'nth-set'
|
|
(set-nth (L <aref>) <newval>)
|
|
(nth-set (L <aref>) <newval>)
|
|
|
|
'file-info' now distinguishes in the mode field (12th bit) between links
|
|
and normal files:
|
|
(define (link? fname) (= 0x2000 (& (file-info fname 1) 0x2000)))
|
|
not on Win32, who knows the correct Win32 function for lstat() on MinGW gcc?A
|
|
|
|
9.0.7
|
|
HTTP server mode looks for procedure httpd-conf for processing/transforming
|
|
the path-file-name of the request. This way security checks, remappings etc
|
|
can be performed. In this case a file httpd.conf containing the definition
|
|
of httpd-conf can be loaded when starting the server:
|
|
newlisp httpd.conf -c -d 8080 -w www/httpddocs
|
|
if the file httpd.conf contains:
|
|
(define (httpd-conf request)
|
|
(if (ends-with request ".exe") "errorpage.html" request))
|
|
now any request for a file which finishes in .exe will be transformed into a
|
|
request for errorpage.html containing an error message for the client.
|
|
|
|
fixed HTTP server mode crash on LINUX
|
|
|
|
fixed 'nth' which failed on old mode when indices where expressions
|
|
|
|
9.0.8
|
|
new syntax of 'nth' should work on protected symbols
|
|
|
|
new syntax of 'set-nth/nth-set' did not check for index maximum of 16
|
|
|
|
make httpd-conf safe for non-string returns
|
|
|
|
server mode now correctly remaps directory paths when performing CGI
|
|
in directories not web root, i.e. http://ahost.com:/ide/ will work with CGI,
|
|
note that directories need to end with "/" to make the resolve to index.html
|
|
or iondex.cgi work correctly
|
|
|
|
new -http flag like -c (suppressing prompts) but only allow HTTP commands
|
|
no newLISP statements (-c allows both), this is a 'safe' HTTP mode not
|
|
allowing 'net-eva' or other commandline protocols.
|
|
The following configurations can be used:
|
|
|
|
(1) serve HTTP requests only
|
|
newlisp -http -d <portno> -w <www-root>
|
|
newlisp -http -w <www-root> # started vi INIX inetd or xinetd
|
|
|
|
(2) serve 'net-eval', HTTP and command line without prompt
|
|
newlisp -c -d <portno> -w <www-root>
|
|
newlisp -c -w <www-root> # started via UNIX inetd or xinetd
|
|
this mode is useful when running newLISP server in a controlled environment
|
|
behind a secured firewall in a distributed computing environment where
|
|
newLISP server must answer to both: net-eval and HTTP requests.
|
|
|
|
Note that on Win32 a \tmp directory must be created on the same drive
|
|
which is current for CGI processes for newLISP HTTP mode to work correctly
|
|
for CGI processing. On UNIX /tmp is standard.
|
|
|
|
fixed 'invert' crash (since v.9.0.2) on not-invertible matrices
|
|
|
|
upgraded to better random number generation in 'rand' and 'random'
|
|
(not available on Win32)
|
|
|
|
fixed (rotate '(1) -1)
|
|
|
|
9.0.9
|
|
another fix for 'nth' and protected symbols
|
|
|
|
if 'httpd-conf' returns 'nil' nothing will be processed, this can be
|
|
used to completely hand off CGI request processing to httpd-conf
|
|
|
|
9.0.10
|
|
moved env variable creation of DOCOUMENT_ROOT earlier, so it is available
|
|
in httpd-conf.lsp
|
|
|
|
added httpd-conf.lspi to the examples directory in the source distribution,
|
|
now filters csertain file extensions and does not allow access to files
|
|
outside the web directory tree specified with the -w option:
|
|
newlisp httpd-conf.lsp -http -d 8080 -w /wwwdocs
|
|
or outside the startup directory if no -w is given, also takes care
|
|
of request for directories when no trailing '/' is present
|
|
|
|
cleaned up nthArray and implicitIndexList/array code
|
|
|
|
trying to 'set-nth' and empty list should return the empty list not nil
|
|
|
|
more tests in qa-dot and qa-comma for symbol protection and 'nth'
|
|
|
|
9.0.11
|
|
rework of whole indexing area, now correctly honors symbol protection in
|
|
all modes if symbol is nested inside an expression. The old flat mode:
|
|
(nth i j alist)
|
|
is much slower, instead use one of the following modes:
|
|
(nth (alist i j)) or (alist i j) or (nth (alist aref)) or (alist aref)
|
|
ehere aref is a list of nymbers, i.e.: (1 2), same modes in set-nth,nth-set
|
|
|
|
reworked nil and empty list detection throughout all files. 'nil' and the
|
|
empty list '() are logic false, things work like this:
|
|
(map true? '(nil () 0 "")) => (nil nil true true)
|
|
(map nil? '(nil () 0 "")) => (true nil nil nil)
|
|
(map not '(nil () 0 "")) => (true true nil nil)
|
|
(map null? '(nil () 0 "")) => (true true true true)
|
|
in v9.0.0:
|
|
(true? '()) => true, which was wrong because also
|
|
(true? (not '()) => true, which is correct
|
|
this affects filter and index usage with true? as predicate, but does not
|
|
affect: if, unless, while, until, do-while, do-until, which always worked
|
|
correctly assuming '() as logical false
|
|
|
|
'name' also can take contexts i.e.:
|
|
(set 'L:L '(a b cd)) (set 'x L) (name x) => "L"
|
|
|
|
now when evaluating a context by itself it returns the default symbol
|
|
if the default symbol does not exists it gets created:
|
|
(set 'foo:foo '(a b c d e f g))
|
|
(foo) => foo:foo
|
|
(eval (foo)) => '(a b c d e f g)
|
|
this can be used for reference passing:
|
|
(define (mysort ctx func)
|
|
(sort (eval (ctx)) func))
|
|
(mysort foo >) => (g f e d c b a)
|
|
foo:foo => (g f e d c b a)
|
|
previously a passed context could only be used for functions using
|
|
index lists and implicit indexing as in (nth-set (ctx idx) value) etc.
|
|
now functions working on the entire list can be used with reference passed
|
|
data. THIS FUNCTIONALITY HAS BEEN DISABLED IN 9.0.14, as a workaround
|
|
use (sym (name ctx) ctx) to retrieve the functor
|
|
|
|
9.0.12
|
|
the newLISP-tk installer now contains a file md5-checksums.txt with
|
|
checksums for newlisp-tk.exe, newlisp.exe and newlisp.dll
|
|
|
|
bit not ~ was still on 32 bits now 64 like all integer arithmetik since 9.0
|
|
|
|
all buffer variables moved to size_t and ssize_t type in preparation for
|
|
64-bit model LP64 compile for 64-bit memory addressing.
|
|
|
|
get-char, get-int, get-float and get-string failed when using on 64-bit
|
|
addresses, which where not truncated correctly on little-endian CPUs.
|
|
This affected the mysql.lsp and mysql5.lsp modules when using with newLISP
|
|
versions 8.9.7 and later and on Intel CPUs. On Mac PPC and other big-endian
|
|
architectures this problem did not occur. All other modules where not affected
|
|
on any architecture.
|
|
|
|
<,>,<=,>=,= when given only one argument compare agains 0, "" or (),
|
|
all other data types return true as before
|
|
(< 1) =>nil, (= 0) =>true, (> "abc") => true, (= "") =>true etc.
|
|
|
|
64-bit file poisitioning fixed under Win32 (now runs qa-lfs)
|
|
|
|
9.0.13
|
|
fixed problems in the new <,>,<=,>=,= single argument feature
|
|
|
|
9.0.14
|
|
further fix in 64-bit ~ function
|
|
|
|
a context feature intoduced in 9.0.11 to extract the default functor from an
|
|
unknown context has been disabled, instead use the workaround:
|
|
(set 'foo:foo '(a b c d e f g))
|
|
(set 'ctx foo)
|
|
(sym (name ctx) ctx) => foo:foo
|
|
(sort (eval (sym (name ctx) ctx)) >) => (g f e d c b a)
|
|
foo:foo => (g f e d c b a)
|
|
a more elegant way will be supplied in the future
|
|
|
|
both string and list versions of 'explode' now return an empty list if optional
|
|
length <= 0
|
|
|
|
'nt-set/set-nth' did not honor constant protection of default functors
|
|
|
|
now compiles for LP64 64-bit memory model on 64-bit LINUX using the makefile:
|
|
make -f makefile_linux64LP64
|
|
or simply:
|
|
make linux64LP64
|
|
|
|
the old makefile for making a ILP32 32-bit newlisp on 64-bit LINUX has been
|
|
renamed:
|
|
make -f makefile_linux64ILP32
|
|
or simply:
|
|
make linux64ILP32
|
|
|
|
tested on a AMD64 CPU with LINUX 2.6 64-bit Fedora 3
|
|
|
|
enjoy up to 17,179,869,184 gigabytes or 16 exabytes of RAM, on AMD64
|
|
the LP64 compiled version is 12 to 25% faster than the ILP32 version
|
|
|
|
avoid sign extension when unpacking signed 32bit into unsigned 32bit displayed
|
|
in 64-bit: (unpack "lu" (pack "ld" -1)) => (4294967295) ; not (-1)
|
|
|
|
added 'get-long' and "Ld", "Lu" 64-bit packing formats
|
|
|
|
new 'parse-date' for parsing date strings (not yet working for Win32)
|
|
|
|
9.0.15
|
|
more manual additions and changes, moved all predicates into own group
|
|
|
|
fixed dynamic symbols compare
|
|
|
|
fixed warnings fo missing -Wno-strict-alasing GCC message on older Solaris
|
|
and BSD GCC versions
|
|
|
|
fixed parsing of [text] tag on 64-bit compiles
|
|
|
|
fixed 'flt' for TRU64 compile
|
|
|
|
tried Linux debian package, Ok on Ubuntu, will be included from now on
|
|
in newlisp.org releases, but appreciate help in getting it into Ubunto
|
|
and Debian for inclusion into their lists
|
|
|
|
The Tru64UNIX compile using makefile_tru64 is now a large pointer model LP64
|
|
compile, thanks to Peter for porting and testing on an Alpha CPU
|
|
|
|
added makefile_darwin_LP64 for 64-bit compile/link, but cannot test it
|
|
on my PPC-G4 (I believe I need a G5 for this)
|
|
|
|
fixed 'char' on UTF-8, bug due to 64-bit changes
|
|
|
|
LP64 mode for Solaris workng, use makefile_solarisLP64
|
|
|
|
new 'make test' to run qa-dot, qa-net, qa-xml
|
|
|
|
9.0.16
|
|
OS/2 compile flavor now part of distribution
|
|
|
|
fix for Solaris in some networking routines broken in 9.0.2 !
|
|
|
|
fixed: (dup x -1), which was broken since 9.0.14
|
|
|
|
'make test' now does qa-dot, qa-xml, qa-setsig, qa-net all one after
|
|
another. The qa-setsig script will drop out on Win32 with a message.
|
|
|
|
A small change in the 'test-process' routine in the qa-dot script will
|
|
cause less failure message for 'process' on slow computers.
|
|
|
|
qa-dot now will set to locale "en_US' when testing an UTF-8 version,
|
|
this has been done to suppress failure messages for UTF-8 'upper-case'
|
|
and 'lower-case' which do not work in the default 'C' locale in
|
|
UTF-8 mode on some platforms.
|
|
qa-comma always sets to "de_DE"
|
|
|
|
'asinh', 'acosh', 'atanh' complete the triginometric functions
|
|
|
|
up to 8 'callback' routines cain be defined to be called by an imported
|
|
library, example for Glut lib:
|
|
(glutDisplayFunc (callback 0 'draw))
|
|
(glutKeyboardFunc (callback 1 'keyboard))
|
|
(glutMouseFunc (callback 2 'mouse))
|
|
up to four parameters (32-bit ints) are received by the user-defined
|
|
callback handlers. See the file newlisp-9.0.16/examples/opengl-demo.lsp
|
|
for details. Note that OpenGL passes floating point data, which are only
|
|
handled correctly on x86 based platforms. On the Mac PPC this file will
|
|
not work (although the callback interface itself does work, but no
|
|
drawing will be visible).
|
|
|
|
9.0.17
|
|
fixed 'non-blocking' bug for write on Linux, thanks Peter!
|
|
|
|
number of maximum cells was not reported correctly in 64-bit newLISP
|
|
|
|
'ref' and 'ref-all' now can take a comparison functor (like 'sort') for
|
|
comparison: (ref-all key List func), if no func is specified
|
|
assumes = (equal), ref-all now much faster on big lists with many finds.
|
|
|
|
'find' and 'replace' (both in their list forms) can take a comparison
|
|
functor like 'sort', 'ref', 'ref-all'.
|
|
'replace' for lists now also processes $0 (old entry) in replacement
|
|
expression.
|
|
|
|
using replace for lists with 'match' or 'unify' as comparison functor
|
|
makes 'replace' as powerful as 'replace for strings with regular expressions.
|
|
This is an important new feature with many applications. It also gives
|
|
the much overlooked 'match' and 'unify' the more frequent usage they deserve.
|
|
|
|
new logic functions 'exists' and 'for-all' apply a condition to each
|
|
element in a list and return the result.
|
|
|
|
match now will accept atoms in the entry expressions to make it usable
|
|
for 'ref' and 'ref-all'
|
|
|
|
9.0.18
|
|
fixed a bug in (pop <string> <idx>)
|
|
|
|
9.0.19
|
|
(find <str> <str> [<option>]) will do both: regex if option is a number
|
|
(as before) and function comparison if option is a funtor or user-defined
|
|
function.
|
|
|
|
fixed 'pop' on an empty string
|
|
|
|
fixed newlisp -h where new options didm't show
|
|
|
|
'file-info' was hanging on name pipes now shows 0 for file size
|
|
|
|
trying to start server mode with no or zero port will fail
|
|
|
|
'array' will give error message on negative parameters, before
|
|
they where simply skippped
|
|
|
|
Ctrl-C signal handler crashed on Linux when in -d mode
|
|
|
|
'explode' will take optionl 'true' to omit chunksize too short when
|
|
chunk size is given (strings and lists)
|
|
(explode "newlisp" 3) => ("new" "lis" "p")
|
|
(explode "newlisp" 3 true) => ("new" "lis")
|
|
|
|
9.0.20
|
|
-l and -L mode now always must specify a path-name for the
|
|
log file (either attached or detached):
|
|
newlisp -l /usr/home/www/logfile.txt
|
|
logging is allowed in all modes. -l will only log network connections
|
|
or commandline or net-eval requests input. -L will log also HTTP requests
|
|
and newLISP output from commandline and net-eval
|
|
|
|
doc installation directory changes from /usr/share/newlisp/doc to
|
|
/usr/share/doc/newlisp
|
|
|
|
CodePatterns.html ammended with chapter for HTTP only server mode
|
|
MemoryManagement.html ammended with implementation chapter
|
|
|
|
newLISPdoc.html and inewLISP-X.x-Release.html added to install
|
|
in /usr/share/doc/newlisp, this file will only change on mayor
|
|
releases
|
|
|
|
|
|
9.0.21
|
|
a crash bug in 'match' introduced in 9.0.17 was fixed
|
|
|
|
new 'curry' (curry f x) => (lambda (y) (f x y)), makes a unary opearator
|
|
out of a binary operator, useful when using 'match' 'unify' and other
|
|
binary ops in: 'filter', 'clean', 'index' etc., i.e:
|
|
(filter (curry match '(a *)) '((a 10) (b 5) (a 3) (c 8) (a 9)))
|
|
=> ((a 10) (a 3) (a 9))
|
|
|
|
9.0.22
|
|
integrated syntax highlighting into newlispdoc, which now is part of
|
|
installation in /usr/bin/ and with man page in /usr/share/man/man1
|
|
|
|
added media types for .pdf .mov. .mpg and .mp3 in HTTP request handling
|
|
additionally to .jpg .png .gif
|
|
|
|
protect stack from overflow when loading huge contexts in sysEvalString()
|
|
|
|
|
|
9.1.0 Release February 15th, 2007
|
|
|
|
9.1.1 Release March 15t, 2007
|
|
safer memory allocation for net-ping when using wildcard *
|
|
|
|
new module crypto.lsp with md5 and sha1 hash functions
|
|
|
|
fixed bug in Win32 version when stdout of more than 2048 chars
|
|
in shell window
|
|
|
|
9.1.2
|
|
net-peer, net-local and net-receive-from where dropping the third digit of the
|
|
least siginificant IP group in the IP-string return value on 12 digit IP numbers
|
|
|
|
9.1.3
|
|
makefile_osxLP64 produces a 64-Bit version on intel core 2 duo which passes
|
|
'make test'. Use: make osxLP64 or: make -f makefile_osxLP64
|
|
|
|
some cleanup in nl-sock.c
|
|
|
|
newlisp-tk.tcl now detects default browser in Debian LINUX
|
|
|
|
9.1.4
|
|
passed all rand() to newer, better random() in nl-math.c
|
|
|
|
local domain UNIX sockets using: (NOTE THAT SYNTAX CHANGES IN 9.1.5)
|
|
(net-listen <str-path> "local") and (net-connect <str-path> "local")
|
|
then use 'net-accept', 'net-select, 'net-send' and 'net-receive' as usual
|
|
see also file qa-local-domain
|
|
|
|
fixed many problems with 'net-ping' which did not work correctly on
|
|
machines rejecting out of sequence errors in ICMP packets. Now will handle
|
|
EHOSTDOWN and EHOSTUNREACH errors correctly
|
|
|
|
'net-ping' now also can accept ranges, e.g: (net-ping 192.168.1.120-150)
|
|
additionally to the '*' star, i.e: (net-ping 102.168.1.*)
|
|
superuser permission are required for net-ping
|
|
|
|
added MySQL:escape to mysql.lsp (v.4) and mysql5.lsp, thanks to Jeff
|
|
for submitting this addition
|
|
|
|
added HTTP_COOKIE to environemnt variables set by newLISP HTTP server
|
|
mode
|
|
|
|
leading and trailing white space now gets removed from environment variables
|
|
set by newLISP server mode, specifically in HTTP_HOST, HTTP_USER_AGENT and
|
|
HTTP_COOKIE
|
|
|
|
9.1.5
|
|
changed the way of specifying local-domain UNIX sockets in net-connect and net-listen:
|
|
(net-connect <local-socket-path>) ; don't specify a port
|
|
(net-listen <local-socket-path>) ; specify socket-name instead of port)
|
|
|
|
local domain UNIX socket support in newlisp -d server mode and net-eval:
|
|
server mode: newlisp -d /tmp/mysocket
|
|
client: (net-eval "/tmp/mysocket" 0 "(+ 3 4)") => 7
|
|
|
|
speedup utf8_wlen()
|
|
|
|
load and save do not use lisp source anymore but call getPutPostDeleteUrl() directly
|
|
this increases speed and leaves get-url/put-url to be renamed if required
|
|
|
|
guard against partial send()'s in net-eval and HTTP mode on Win32
|
|
|
|
'net-eval', 'net-ping', 'net-receive-from' and 'net-receive-udp' now set
|
|
timeout error for retrieval with 'net-error'
|
|
|
|
'net-ping' will stop waiting for response when the number of responses
|
|
reaches the number of pings even if no max count was not specified.
|
|
|
|
a fix for local-domain UNIX sockets on OS/2
|
|
|
|
reorderd "3. Functions in groups" subchapters adding group "Pattern recognition"
|
|
|
|
now any keystroke/mouse-button will close the about windows in newLISP-tk.
|
|
Before only <esc> worked
|
|
|
|
9.1.6
|
|
newlisp-x.x.x/util/nclocal.c utility program similar to nc/netcat but for
|
|
local domain UNIX sockets.
|
|
|
|
When deleting contexts the context symbol now will stay and not be deleted
|
|
but demoted to a normal unprotected symbol.
|
|
|
|
It is now possible to create contexts on local variables in 'define',
|
|
'lambda' or 'local' expressions without error messages on usage of these
|
|
symbols/variables subsequently. After leaving the 'define', 'lambda' or
|
|
'local' the variable symbols will be returned to their previous status in
|
|
the upper scope. Before this version they staid protected.
|
|
Note: For efficiency reasons this coding practice is not recommended but
|
|
will not cause an error anymore.
|
|
|
|
use strncmp() instead of strcmp() in netReieive() to avoid buffer overflows
|
|
|
|
read empty [text][/text] tagged text correctly
|
|
|
|
newlisp doc v.1.1 fixes formatting of the syntax line when parenthesized
|
|
expressions are part of the syntax line.
|
|
|
|
9.1.7
|
|
a fix for ends-with when using with regular expression option (did not anchor
|
|
correctly to the end)
|
|
|
|
net-listen didn't evaluate the port parameter since 9.1.4 when local domain
|
|
sockets where introduced
|
|
|
|
9.1.8
|
|
fixed a crash bug on Win32 when using a permission mask in make-dir
|
|
|
|
'%%' as a last spec in format was not translated correctly
|
|
|
|
9.1.9
|
|
when a system wide error handler defined with error-event contained 'nil
|
|
newLISP would go into a loop caused by an error invoked by the error handler
|
|
now an error-event defined with a symbol containing nil will simply to
|
|
nothing.
|
|
|
|
xml-parse now can take an optional callback functor (see manual for detail)
|
|
|
|
on the Win32 UTF-8 versions UTF-16 file-path names now are processed
|
|
correctly, thanks to Michael Sabin for contributing the file win32-path.c
|
|
|
|
this is the first release containing the source of Java based GUI-server
|
|
in the guiserver subdirectory of the distribution. guiserver.jar is
|
|
already prebuilt contained in the source distributin and installed
|
|
drng the normal newlisp install. It also can be installed individually
|
|
descending into newlisp-x.x.x/guiserver (read README.txt found there)
|
|
|
|
new global? property function checks if a symbol is global
|
|
new protected? property function checks if a symbol s protected
|
|
|
|
a bug in push on strings when the index was > the length of the string
|
|
and a fix for utf8
|
|
|
|
9.1.10
|
|
this development release was made for additions in newLISP-GS
|
|
|
|
9.1.11
|
|
fixed a bug in explode when specifying N > length of string
|
|
|
|
negative second length in slicing now interpreted as offset
|
|
from the right: (2 3 "abcdefg") => "cde", (2 -3 "abcdefg") => "cd"
|
|
before negative length would be interpreted as going to the end
|
|
|
|
implicit n-resting on strings was UTF-8 sensitive which it should
|
|
not be, all implicit indexing and slice on strings is on byte borders,
|
|
only first,last,rest are UTF-8 sensitive.
|
|
|
|
fixed crash when net-select was interrrupted by timer, traceExit()
|
|
was not protected from entry when signal handlers where defined
|
|
|
|
9.1.12
|
|
newlisp invoked on the command line can take URLs for filespecs to execute
|
|
remote programs: newlisp http://newlisp.org/example.lsp
|
|
|
|
join now can take an extra flag to force a joint string after the last element:
|
|
(join '("A" "B" "C") "-" true) => "A-B-C-"
|
|
|
|
9.2.0 Release August 15th, 2007
|
|
|
|
9.2.1
|
|
rewritten 'count is about 3-4 times faster than before when counting 100
|
|
in 1,000,000 elements. Only on Mac OS X and other UNIX. On the older
|
|
MinGW GCC C library the required functions tsearch() and tfind() are not
|
|
available.
|
|
|
|
fix for special characters in cookies cookies in cgi.lsp
|
|
|
|
'pack' now can take lists for data:
|
|
(set 'lst '("A" "B" "C"))
|
|
(set 'adr (pack "lululu" lst))
|
|
(map get-string (unpack "lululu" adr)) => ("A" "B" "C")
|
|
This was imnplemented in response to a request for a (address <list-of-strings>).
|
|
Note that the lst should not be changed and be referenced directly in 'pack'
|
|
so the pointers passed by 'adr' are valid. 'adr' would be a 'char * adr[]' in the
|
|
C-programming language
|
|
|
|
fixed cell leak in indexed sys-info and indexed file-info
|
|
|
|
new 'dostring' iterates over a string with character values in loop variable.
|
|
On UTF-8 compiled newLISP UTF8 character values are returned by the loop variable
|
|
|
|
documented 'bind' :
|
|
(bind '((a 1) (b 2) (c 3))) same as (map set '(a b c) '(1 2 3))
|
|
This function was already in earlier versions, but not documented.
|
|
|
|
on startup NEWLISPDIR will be registered as either: /usr/share/newlisp
|
|
on Mac OS X / UNIX as: PROGRAMFILES/newlisp on Win32, where ROGRAMFILES
|
|
is an exisiting Windows environmnt variable. (env "NEWLISPDIR") =>
|
|
|
|
additions in guisserver.lsp and newlisp-edit.lsp, see guiserver/CHANGES
|
|
|
|
9.2.2
|
|
iterators segfaulted when evaluating the iterator variable was the last
|
|
statement in the iterator body: dostring, dolist, dotree.
|
|
Added test-cases for this situation.
|
|
|
|
(main-args) could be pop'ed which was due to an implementaion error, main-args
|
|
cannot be popped any more, if necessary, assign to another variable first:
|
|
(set 'margs (main-args)), (pop margs) etc.
|
|
|
|
additions in guisserver.lsp and newlisp-edit.lsp, see guiserver/CHANGES
|
|
|
|
9.2.3
|
|
addtions, changes in guiserver.lsp and newlisp-edit.lsp, see guiserver/CHANGES
|
|
for details
|
|
|
|
misc. code cleanups in core
|
|
|
|
9.2.4
|
|
in 'set-nth/nth-set' when no replacement arg is given, the old value should
|
|
be returned only as in 'set'. Was replacing with nil.
|
|
|
|
fixed a cell-leak in 'set' when using mutliple arg pairs.
|
|
|
|
allow symbols for the name in (context <ctx> <name> [<value>]), previously
|
|
only strings where allowed.
|
|
|
|
speedup in symbol deletion
|
|
|
|
in (signal <sig-no> <handler | flag> the nil flag now specifies SIG_IGN
|
|
and the true flag SIG_DFL. Before 9.2.4 nil would specifiy an empty newLISP
|
|
handler and the true flag was not available.
|
|
|
|
reworked 'process' now creates the new process without the previous
|
|
time and memory overhaead (on UNIX) of an extra newlisp fork which stayed
|
|
in memory until the newly created process had finished.
|
|
In most cases the full path must be given for the command in 'process'.
|
|
|
|
new 'destroy' to destroy processes created with 'process' or 'fork'
|
|
see reworked docmentation for 'fork' and 'process'
|
|
|
|
fixed a bug when sorting (ordered compare) mixed boolean values/symbols
|
|
|
|
9.2.5
|
|
'dup' without the repetition number parameter will assume 2, i.e:
|
|
(dup 'x) == (dup 'x 2) => (x x) ; Thanks to Lance Bradley for this idea.
|
|
|
|
'find-all' will return an empty list '() when nothing is found, previously
|
|
nil was returned.
|
|
|
|
':' now also works like a function and can be attached to symbol following
|
|
it. The colon operator forms a context symbol from the symbol following it
|
|
and the context symbol found as the first element of the list contained
|
|
in the next argument.
|
|
|
|
(define (rectangle:area p)
|
|
(mul (p 3) (p 4)))
|
|
|
|
(define (circle:area c)
|
|
(mul (pow (c 3) 2) (acos 0) 2))
|
|
|
|
(set 'myrect '(rectangle 5 5 10 20)) ; x y width height
|
|
(set 'mycircle '(circle 1 2 10)) ; x y radius
|
|
|
|
(:area myrect) => 200 ; same as (rectangle:area myrect)
|
|
(:area mycircle) => 314.1592654 ; same as (circle:area mycircle)
|
|
|
|
This can be used for simple OO programming where objects are represented
|
|
as lists and methods are packaged contexts / namespaces serving as object
|
|
classes. The colon ':' operator implements polymorphism by looking up
|
|
the class / context of the object as the first symbol in the object list.
|
|
|
|
'integer' the long writing of 'int' will be eliminated in the next
|
|
development version!!!
|
|
new versions newlisp-ide-4.1.tgz and newisp-wiki-4.2.tgz have changed
|
|
'integer' to 'int'
|
|
|
|
better platform independent library detection routines in modules:
|
|
crypto.lsp, gmp.lsp, sqlite3.lsp and zlib.lsp
|
|
|
|
crypto.lsp has new 'crypto:hmac' as of RFC 2104 used for Amazon REST API
|
|
|
|
new util/newlisp.vim, for matching .vimrc see http://newlisp.org/code/vimrc.txt
|
|
|
|
9.2.6
|
|
Moved to MinGW 5.1.3 with gcc v.3.4.5 and eliminated declarations for
|
|
struct timezone and gettimeofday(). Changed sleep() to Sleep().
|
|
-> grep 3\.4\.5 *.c <- shows all changes
|
|
|
|
Improved random number generation with 'rand' now gives better integer quality
|
|
random numbers on Win32, which only does 16 bits in 'C' random(), even for
|
|
ranges close to or > 16bit.
|
|
|
|
newLISP GS 1.07 now automatically restarts monitor shell, if required by run-command.
|
|
|
|
newLISP GS 1.07 now loads, saves and displays UTF-8 correctly in editor and
|
|
interactive monitor area
|
|
|
|
new manual chapter: "Object Oriented Programming in newLISP" explaining
|
|
newLISP object format and how to use the new : (colon) operator.
|
|
|
|
9.2.7
|
|
changes in newLISP-GS to automatically detect and switch to UTF-8 mode, depending
|
|
on the newLISP executable. Edited chapter "17. Object-Oriented Programming in newLISP"
|
|
(thanks Michael Michaels)
|
|
|
|
In Guiserver 1.08:
|
|
new gs:window-moved and gs:window-resized. See new demo file move-resize-demo.lsp
|
|
|
|
9.2.8
|
|
get-url, post-url, put-url and delete-url have been extended and reworked:
|
|
|
|
- now return extended error information if supplied by the server, before only
|
|
the error cocd was reported.
|
|
|
|
- now can take a trailing "debug" in the option string, i.e."list debug" or
|
|
"header debug" or simply "debug" when neither "list" or "header" applies. The
|
|
debug option will print all outgoing info onto the console screen.
|
|
|
|
in some situations an empty document returned was reported as "ERR: empty document"
|
|
when ist was not an error but intended by the server.
|
|
|
|
in some situations customheaders were only taken when the option string was
|
|
present too. The manual showed the option-string optional, which it is.
|
|
|
|
the server response code 204 is now handled correctly
|
|
|
|
when using a custom header "Content-type:" must be defined for put-url, before
|
|
"Content-type: text/html\r\n" was assumed.
|
|
|
|
9.2.9
|
|
last element speed optimization for 'last', 'nth', 'nth-set', 'set-nth' and
|
|
implicit indexing with index -1.
|
|
|
|
'sort' can now be used on arrays too
|
|
|
|
changes in newLISP-GS for editor keyboard short cuts and list-boxes, see
|
|
guiserver/CHANGES file
|
|
|
|
the newlispdoc utility has improved pager headers and a feature to point to
|
|
other module collections from the index page.
|
|
|
|
9.2.10
|
|
new functions to modify nested lists by reference via a key:
|
|
|
|
(set-ref (L key) value)
|
|
(ref-set (L key) value)
|
|
(set-ref-all (L key) value)
|
|
|
|
basically 'set-ref' and 'ref-aset' are shortcuts for doing a ref and
|
|
using set-nth/nth-set on the result:
|
|
|
|
(set-ref (L key) value)) equivalent to (set-nth (L (ref key L)) value)
|
|
(ref-set (L key) value)) equivalent to (nth-set (L (ref key L)) value)
|
|
|
|
all ref functions support either:
|
|
(<func> (L key) [...]) or (<func> key L [...])
|
|
syntax similar to nth functions working with indices instead of keys
|
|
|
|
like with 'set-nth' and 'nth-set' L can be the context of the default
|
|
functor L:L containing the list for passing lists by reference
|
|
|
|
all 8 'nth' and 'ref' functions together now constitute a complete set of
|
|
functions for indexing, referencing, accessing, modifying and search and
|
|
replace on nested lists. All 8 functions are also capable of receiving
|
|
lists passed by reference via context default functors, passed only by
|
|
their context name. All functions now offer the same two syntax patterns
|
|
with either one index and the key followed by the list:
|
|
(<function> <idx>|<key> <list> ...)
|
|
or the parethesized formi, which also can take contexts as default functors:
|
|
(<function> (<list> <idx>|<key>) ...)
|
|
|
|
on Win32 function 'directory?' now will accept training slahes '\' or '/'
|
|
before it would always fails on trailing slashes
|
|
|
|
9.2.11
|
|
'ends-with' with regex options failed when alternative pattersn where used
|
|
and the succeeding pattern was last
|
|
|
|
fixed directory? for drives on Win32
|
|
|
|
define MY_RAND_MAX as 0x7FFFFFFF for TRU64 flavor
|
|
|
|
added mysql51.lsp module for MySQL v.5.1
|
|
|
|
9.2.12
|
|
indices overshooting the list at the end (too big positive index) and
|
|
indices overshooting the list at the beginning (too big negative index)
|
|
now cause a "list index out of bounds" error. Before the last or
|
|
first element of a list was returned instead.
|
|
|
|
This affects the functions: nth, set-nth, nth-set, push and pop
|
|
|
|
If more indices are present than nesting levels, these are discarded as before.
|
|
Popping an empty list will return nil.
|
|
|
|
Fixed a stack overflow in the new 'set-ref-all'
|
|
|
|
Changes in the newlisp-edit.lsp GS editor, see guiserver/CHANGES
|
|
|
|
The environment variable NEWLISPDIR will only be created and set if it does
|
|
not exist. An exisiting definition of NEWLISPDIR will not be overwritten.
|
|
|
|
9.2.13
|
|
a bug fix in set-nth, nth-set, ser-ref, ref-set (in getList() ) when first
|
|
element in an implicit index parameter list evaluates to a context
|
|
|
|
9.2.15
|
|
assoc, set-assoc (old replace-assoc) and new assoc-set all take mutiple keys
|
|
for multilevel association lists
|
|
|
|
fixed stack overflow in ref, set-ref, ref-set
|
|
|
|
9.2.16
|
|
set-assoc and assoc-set redone, fixes for set-ref, ref-set, set-ref-all
|
|
newlisop_manual.html updates
|
|
|
|
9.2.17
|
|
Fixes for 'set-assoc' and 'set-ref' when using the wrong syntax
|
|
|
|
new 'pop-assoc' for removing associations
|
|
|
|
'find' and 'ref' put their last found expression into $0 when used with a
|
|
cpmparison functor as parameter
|
|
|
|
'find-all' has two additional syntax patterns
|
|
|
|
'process' now parses commands and args delimited by single or double quotes.
|
|
This is necessary when using file name or argumemnts containing spaces.
|
|
On Win32 do: (process {newlisp '"test prog.lsp"'})
|
|
On Unix do: (process {newlisp 'test prog.lsp'}) ; single or double quotes work
|
|
|
|
The octal format spcecifier (format "%o" 8) => "10" will work on many
|
|
platforms compilers. This is now documented and useful when inspecting
|
|
the mode number from the 'file-info' function.
|
|
|
|
9.3.0 prerelease January 28th, 2008
|
|
fix in 'sys-info' for some 64-bit compilations, and other int -> size_t
|
|
|
|
reset -w base directory after http requests, this is important in -c mode
|
|
when both, http and net-eval requests may come in, so that http requests
|
|
cannot change the current directory of the server for net-eval requests
|
|
|
|
9.3.0 final release February 1st, 2008
|
|
a fix for newlisp server mode when using IE explorer on Win32
|
|
|
|
documentation changes
|
|
|
|
9.3.1
|
|
doc changes
|
|
|
|
fixes for guiserver v.115 (see guiserver/CHANGES)
|
|
|
|
fixed error message for unclosed curl brace
|
|
|
|
'pop-assoc' should not set $0 as do 'set-assoc', 'assoc-set'
|
|
|
|
: colon operator should not evaluate args after the object
|
|
|
|
new 'read' exposes the internal source code reader. 'read' can be used to
|
|
write preprocessor for newLISP source or specialized newLISP editors and
|
|
evaluators. When using 'read' in string mode, comments are preserved.
|
|
|
|
'read' takes as argument a source string, a callback function and an optional
|
|
context. The callback function is called with each expression as either a string
|
|
including comments or an expression if the context argument is present.
|
|
When a context argument is present the source gets compiled in the namespace
|
|
specified by the context, except when overwritten by context statements in
|
|
the source. The string mode (no context is specified) still will check
|
|
the source if it is well formed, with balanced parenthesis and quotes and
|
|
interrupt processing with an error messages, if finding mal-formed s-expressions.
|
|
|
|
'read' returns the last return value of the callback function.
|
|
|
|
syntax: (read <str-source> <functor-callback> [<context>])
|
|
|
|
example:
|
|
(define (crunch sx) (println "=>" sx))
|
|
|
|
(set 'code "; a statement\n(+ 3 4)\n(define (double x) (+ x x))")
|
|
|
|
> (read code crunch)
|
|
=>; a statement
|
|
(+ 3 4)
|
|
=>
|
|
(define (double x) (+ x x))
|
|
"\n(define (double x) (+ x x))"
|
|
>
|
|
|
|
Note, that string mode conserves orignal formatting in the expression and
|
|
leading comments returned.
|
|
|
|
Following a context is specified forcing 'read' to return compiled expressions:
|
|
|
|
> (read code crunch MAIN)
|
|
=>(+ 3 4)
|
|
=>(define (double x)
|
|
(+ x x))
|
|
(define (double x)
|
|
(+ x x))
|
|
>
|
|
|
|
'read' is renamed to 'read-expr' in 9.3.4
|
|
|
|
9.3.2
|
|
new compile flavor for IPv6 with the following makefiles:
|
|
makefile_darwin_utf8_IPv6
|
|
makefile_linux_IPv6
|
|
makefile_bsd_IPv6
|
|
|
|
elimnate quirky symbol syntax in 'net-send'
|
|
|
|
functions called by dynamic symbols now switch to the dynamic
|
|
context:
|
|
(define (foo:foo) (context))
|
|
(set 'ctx foo)
|
|
(ctx) => foo
|
|
(ctx:foo) => foo ; previously MAIN
|
|
|
|
changed report format in 'net-ping' now includes roundtrip time in
|
|
micro-seconds
|
|
|
|
9.3.3
|
|
fixed display of signon banner, which made newlisp-tk.tcl not work. Also, in order
|
|
to make newlisp-tk.tcl work on 9.3.0 and after, the line in newlisp-tk.tcl:
|
|
(net-send SYS:tk-sock 'result)
|
|
should be changed
|
|
(net-send SYS:tk-sock result)
|
|
|
|
in the runtk.lsp utility (see http://www.newlisp.org/index.cgi?page=Tk_and_newLISP)
|
|
the line:
|
|
(process "wish" tcin tcout)
|
|
changed to:
|
|
(process "/usr/bin/wish" tcin tcout)
|
|
to make it work on v9.3.0 and after
|
|
|
|
'search' has a new flag parameter to put the filepointer after the search to either
|
|
the beginnig (nil) or the end (true) of the searched string.
|
|
|
|
added <hr> as a legal tag in v.1.5 newlispdoc formatted documentation
|
|
|
|
'xml-parse' crashed when not passing a valid symbol or context
|
|
|
|
extra boolean flag in 'bind' forces evaluation of bound parameters:
|
|
|
|
(bind assocList true) same as: (apply set (flat assocList))
|
|
this enables an efficient way to define functions with names parameters:
|
|
|
|
(define-macro (foo)
|
|
(local (len width height)
|
|
(bind (args) true)
|
|
(println "len: " len " width:" width " height:" height)
|
|
))
|
|
|
|
(foo (width 20) (height (+ 5 25)) (len 10))
|
|
|
|
outputs -> len: 10 width:20 height:30
|
|
|
|
a fix for 'expand' when expanding upper-case characters, now limited to 65->90
|
|
to prevent expansion of symbols starting with special characters
|
|
|
|
took out the 'read' from 9.3.1. Just couldn't see the benefit of it. Everything
|
|
which can be done with it can be done by redefining 'define', or create other
|
|
special def- functions which transform top-level expressions.
|
|
|
|
'env' now removes an enviroment variable when setting it to an empty string
|
|
except when on Solaris, where it stays as an empty string.
|
|
(env "VAR" "value") (env "VAR") => "value" (env "VAR" "") (env "VAR") => nil
|
|
On Solaris (env "VAR") = "".
|
|
For a platform independent check use (null? (env "VAR"))
|
|
|
|
fixed a memory leak on Win32 and Solaris when repeatedly setting the same
|
|
environment variable
|
|
|
|
9.3.2 did not compile on Solaris, 9.3.3 now does
|
|
|
|
9.3.4
|
|
creating dictionaries (hashes in other languages) got faster and shorter:
|
|
the default symbol if it contains nil works like a hash function creating
|
|
and setting the symbol made from the string following it:
|
|
|
|
(define Foo:Foo) ; create namespace and default functor
|
|
|
|
(Foo "bar" 123)
|
|
(Foo "bar") => 123
|
|
|
|
'read' which was introduced in 9.3.1 but taken out in 9.3.3, has been put
|
|
back as 'read-expr' and documented. The critical advantage over using
|
|
eval-string on quoted strings is, theat read-epr is reading only one expr
|
|
at a time and its ability to return comments when returning strings
|
|
|
|
a fix when serializing illegal symbols with (save (sym <str> <context>) ...)
|
|
forcing the <context> to be written with MAIN prefix, also: overwrites of
|
|
'set' and 'sym' will not be saved, as they make it impossible to load
|
|
serialized contexts.
|
|
|
|
newlispddoc now does create HTML files without CSS style definitions but HTML
|
|
files try to to read newlispdoc.css from the same directory and load it, if
|
|
they find one. A sample newlispdoc.css with the usual style definitions can
|
|
be found in newlisp-9.3.4/util/newlispdoc.css
|
|
|
|
(sys-info -3) is now the current process id (pid). This pid can be usedd to
|
|
'destroy' (kill) the process on MAc OS X and other UNIX. On Windows the pid
|
|
returned seems to have a different meaning and does not respond to destroy.
|
|
The Win32 SDK function GetCurrentProcessId() is used by newLISP internally to
|
|
get the pid.
|
|
|
|
9.3.5
|
|
Internally when using contexts as hashes, now an unserscore "_" is
|
|
automaically prepended. This eliminates the danger of overwriting
|
|
the default symbol or overwwriting 'set' or 'sym' in the namespace.
|
|
This way hash namespaces can be saves and loaded without taking precautions.
|
|
|
|
This is transparent to the user and the inetface has not changed:
|
|
|
|
(define Foo:Foo) ; create namespace and default functor
|
|
(Foo "bar" 123)
|
|
(Foo "bar") => 123
|
|
|
|
an association list can be passed to create a series of association hashes:
|
|
|
|
(Foo '(("var" 123) ("bar" 456) ("baz" 789))) ; create hashes from a batch
|
|
|
|
(Foo "var") => 123 ; (foo "bar") => 456 ; (foo "baz") => 789
|
|
|
|
without any parameter the context is converted to an association list
|
|
|
|
(Foo) => (("bar" 456) ("baz" 789) ("var" 123))
|
|
|
|
internally symbols are created with a prepended underscore
|
|
|
|
(symbols Foo)
|
|
(Foo:Foo Foo:_bar Foo:_baz Foo:_var)
|
|
|
|
'start-with', 'ends-with' and 'sym' now accept a quoted 'nil like other functions
|
|
taking flags
|
|
|
|
New 'regex-comp' allows to precompile patterns for all functions which take
|
|
regular expression patterns. newLISP already caches the last compiled pattern,
|
|
but 'regex-comp' is useful in case where repeated patterns alternate and the
|
|
single cache never gets reused.
|
|
|
|
(regex-comp <str-pattern> [<int-options>]) => compiled pattern
|
|
|
|
When using a regular expression function the compiled pattern gets passed
|
|
with the special option 0x10000, all other options are already contained in
|
|
the compiled pattern.
|
|
|
|
(set 'cp (regex-comp pattern))
|
|
(replace cp thetext replacement 0x10000)
|
|
|
|
Note that the option 0x8000 for replace once, cannot be compiled into the
|
|
pattern, but can be given together with 0x10000 as: 0x18000
|
|
|
|
fixed a bug for invalid (<list> <key>) syntax
|
|
|
|
9.3.6
|
|
smtp.lsp now can take user-name and password parameters for authorization
|
|
|
|
The behavior of 'wait-pid' has changed for finer control of child processes:
|
|
|
|
If nil is specified instead of the options number in 'wait-pid' then 'wait-pid'
|
|
will not block (WNOHANG option) and return 0 in the pid field of the return list,
|
|
if no childs exited, or -1 if no child processes are present, else the pid
|
|
ands status value of the signalling child are returned in a list. Previous
|
|
versions returned only the status value;
|
|
|
|
Using 'wait-pid' now causes the the SIGCHLD handler be set to the
|
|
default signal handler (SIG_DFL) of the OS as if (signal 20 true) has been
|
|
executed. This way 'wait-pid' can return pid values when handling child signals
|
|
On startup of newLISP the SIGCHLD handler is set to waitpipd(-1, 0, WNOHANG)
|
|
to avoid zombie processes when 'wait-pid' is not used for processes created
|
|
with fork or process.
|
|
|
|
added error message to 'error-event', 'signal' and 'timer' when handler parameter
|
|
supplied is not a symbol, lambda function or primitive
|
|
|
|
fixed an error in new namespace hash functionality when evaulating the value
|
|
expression
|
|
|
|
'lookup' can take an optional default expression, which is returned when the
|
|
association is not found: (looup <key> <assoc-list> [<index>] [<default>])
|
|
|
|
Various smaller speed ond code size optimizations introducing makeCell() helper
|
|
function and inlining getCell() into various functions
|
|
|
|
9.3.7
|
|
Cilk interface: 'spawn', 'sync' and 'abort'. See qa-cilk for workings.
|
|
Only available on Mac OS X and other UNIX like operating systems.
|
|
This API makes it easy to spawn child processes and collect results.
|
|
The API can be used recursively and automizes housekeeping and zombie
|
|
collection of finished processes.
|
|
|
|
'spawn' forks a process and passes a symbol for the result.
|
|
A 'sync' function waits for a max timeout on all processes and assigns the
|
|
results to the symbols spawned by 'spawn'. 'abort' can abort a specific or
|
|
processes. 'spawn' can be used recursively, so spawned child processes can
|
|
in turn spawn other children. newLISP uses shared memory to pass data up
|
|
to 4096 bytes or whatever the pageszie on the platform running. For data sizes
|
|
bigger than the pagesize newLISP automatically switches to a file based
|
|
data transfer using temporary files in /tmp/, where newLISP needs full
|
|
permissions to create, read, write and delete files.
|
|
|
|
SYNTAX:
|
|
|
|
(spawn <quoted-symbol> <function>) ; spawns the child process
|
|
returns the pid of the forked process
|
|
|
|
(sync <int-timeout>) ; waits for result up to milliseconds specified
|
|
returns 'nil' on timeout, or 'true' if all childs have finished. If
|
|
there are still pending childs 'sync' with a timeout parameter can
|
|
be called again.
|
|
|
|
(sync) ; only returns a list of pending child processes or an empty
|
|
list if nothing is pending. Does not do any other child processing.
|
|
|
|
(abort <int-pid>) ; aborts a specific child process and returns 'true'
|
|
(abort) ; aborts all child processes and returns 'true'
|
|
|
|
EXAMPLE:
|
|
|
|
(spawn 'x (foo-x a b c)) ; start first child
|
|
(spawn 'y (foo-y d e f)) ; start second child
|
|
(sync 10000) ; wait a maximum of 10 seconds and collect results
|
|
(println "x=" x " y=" y) ; print results
|
|
|
|
for more examples and a recursive application woth fibonacci see the
|
|
file newlisp-9.3.7/qa-cilk
|
|
|
|
For the original Cilk project (C-library API) see here:
|
|
http://supertech.csail.mit.edu/cilk/
|
|
|
|
9.3.8
|
|
Cilk API in WIN32 now simulates behaviour in UNIX. 'spawn' works
|
|
like 'set', 'sync' always returns an empty list and 'abort' always
|
|
returns 'true'. This way Cilk API code written for UNIX will also
|
|
run in WIN32, albeit slower.
|
|
|
|
bugfixes and improvments in Guiserver for newlis-edit.lsp, see changes
|
|
file for newLISP-GS.
|
|
|
|
added implicit indexing specific error messages.
|
|
|
|
'file-info' can be indexed (was not in docs)
|
|
|
|
second syntax in 'destroy' lets send any signal to UNIX process
|
|
(was not in docs)
|
|
|
|
9.3.9
|
|
'spawn' allowed usage of protected symbols
|
|
|
|
errors in child processes launched by 'spawn' are now automatically
|
|
catched and returned as a result string, before control was lost
|
|
and child processes could not be 'sync'ed
|
|
|
|
some refactoring/streamlining in error handling code
|
|
|
|
9.3.10
|
|
now the default functor as a container for lists or strings can be
|
|
used for any built-in function asking for a string or list. Until
|
|
now only functons of the special form (... (L idx) ...) could use:
|
|
(nth-set (L idx) value) when L:L => '(a b c d)
|
|
now any function can take lists or strings packaged this way:
|
|
(pop L) => a
|
|
or with strings:
|
|
(set 'S:S "abcdefg") (upper-case S) => "ABCDEFG"
|
|
This means that any user defined function when given a list or string
|
|
packed with a default functor will pass this list or string by reference
|
|
to any built-in function.
|
|
|
|
(char "") will return nil, caused out of range error message before,
|
|
'nil' more practical because one can switch on it: (if (char str) ...)
|
|
|
|
char, get-char, get-int, get-float, get-string now give an error for
|
|
missing parameter
|
|
|
|
server mode with -c or -http now disables commandline shell feature
|
|
with ! at the beginning of the commandline
|
|
|
|
9.3.11
|
|
(last S), (first S) and (rest S) did not work when S is a default
|
|
functor S:S with a list or string.
|
|
|
|
Fixed push when pushing at -1 on a sublist with one element
|
|
|
|
Fixed error messages text in list indexing area
|
|
|
|
Added out of bound error messages for 'swap'
|
|
|
|
Sortorder in manual should be as in (symbols) except for number ops.
|
|
Fixed many small HTML formatting inconsistencies in the manual. This
|
|
facilitates parseing out syntax lines for autimatic help functions.
|
|
|
|
'net-eval' now returns the error string if the remote server task ended
|
|
with error. Before the server would first time out then return 'nil'.
|
|
The new behaviour gives the choice of handling errors on the client
|
|
side and wihtout ewaiting for timeout.
|
|
|
|
New 'prompt-event' can redefine the interactive prompt with a newLISP
|
|
routine, e.g:
|
|
|
|
(prompt-event (fn () (append (real-path) "$ ")))
|
|
|
|
changes the prompt to a UNIX shell-like prompt. See manual for more
|
|
details.
|
|
|
|
New 'command-event' can specify a function written in newLISP to pre-process
|
|
the newLISP command line and newLISP server mode requests before they are
|
|
evaluated. This can be used to write customized newLISP shells, and to
|
|
filter or trasform HTTP requests when running in server mode.
|
|
|
|
(command-event
|
|
(fn (s) (if (starts-with s "[a-zA-Z]" 0) (append "!" s) s)))
|
|
|
|
UNIX commands are passed to the shell via the ! operator. Lines starting
|
|
with a parenthesis or space are passed to the newLISP interpretor.
|
|
See the manual reference for 'command-event' with more examples and
|
|
how to write a preprocessor for HTTP requests. This new function obsolotes
|
|
the old 'command-line' and old way of writing 'httpd-conf.lsp' files.
|
|
|
|
9.3.12
|
|
'series' can take lambda expression instead of number factor:
|
|
(series p (fn (x) (div 1 (add 1 x))) 20) => converges to Phi for any p != 0
|
|
|
|
synchronization in the Cilk multiprocessing interface can now be event driven
|
|
by defining a function instead of a timeout in 'sync'
|
|
|
|
Bugfixes in newlisp-edit.lsp for newLISP-GS
|
|
|
|
cleanup in nl-debug.c
|
|
|
|
restore SIGCHLD behavior after Cilk to newLISP startup conditions
|
|
|
|
using 'constant' or creating contexts on local symbols is not permitted
|
|
and causes an error message in: lambda, lambda-macro, ley, letn, letex, local
|
|
|
|
fixed a memory leak in net-receive-udp
|
|
|
|
9.3.13
|
|
Better distribution with new Knuth algorithm for 'randomize'.
|
|
|
|
Several bug-fixes in newlisp-edit.lsp for newLISP-GS and new functions.
|
|
|
|
9.3.14
|
|
New functions for MIDI sequencing several tracks/channels in parallel.
|
|
See the new demo files midi-demo.lsp and midi2-demo.lsp.
|
|
|
|
9.3.15
|
|
Non-default directory install on Win32 now works. Windows must be rebooted
|
|
when not accepting the default directory, so the different path set in
|
|
the environment variable NEWLISPDIR can come into effect.
|
|
|
|
In newLISP-GS loading of external soundbanks and saving of sequences to
|
|
MIDI files and channel pitch bending. See newLISP-GS changes notes for details.
|
|
|
|
Added reference passing to some missing functions.
|
|
|
|
Cilk API for 'sync' changed handling the inlet function as an optional second
|
|
parameter.
|
|
|
|
9.3.16
|
|
bug fixes in p_randomize and p_rand
|
|
|
|
9.3.17
|
|
big speedup when deleting the entire contents of a namespace at once using
|
|
(delete <context-symbol>)
|
|
|
|
9.4.0 release July 1st, 2008
|
|
eliminate mysql.lsp v.4.0 from the distribution
|
|
|
|
fixed an error in MySQL:escape in mysql5.lsp, mysql51.lsp (thanks Tim Johnson)
|
|
|
|
added newlisp.jsf (syntax highlighting for joe editor) and nanorc (syntax high-
|
|
lighting for the GNU nano editor) to the util directory
|
|
|
|
in module cgi.lsp CGI:url-translate did not translate correctly when taking a
|
|
url-encoded UTF-8 strings as input and running UTF-8 enabled newLISP. The new
|
|
version 2.3 does the translation correctly on UTF-8 and non-UTF-8 url-encoded
|
|
strings and on both versions of newLISP.
|
|
|
|
9.4.1 release July 6th, 2008
|
|
Filled some gaps in namespace reference passing and fixed memory leaks in the
|
|
matrix API and 'count' function (on Unix). Passes the Valgrind memory check with
|
|
0 bytes lost memory!
|
|
|
|
In parse-date the default day offset has been changed to more sensible 1 (was 0).
|
|
|
|
9.4.2
|
|
fixed a bug in the hash functionality when doing self-referential expressions:
|
|
(define foo:foo) (foo "x" 0) (foo "x" (+ 1 (foo "x"))) ; now works
|
|
|
|
don't allow 3rd semicolon in newlispdoc documentation line (for Emacs)
|
|
|
|
fixes in guiserver
|
|
|
|
9.4.3 July 13 2008
|
|
cleanup -h help message
|
|
|
|
9.4.4
|
|
fixed reentrance bug in format
|
|
|
|
fixed compilation as Unix library
|
|
|
|
fixed $args losing protection under error conditions
|
|
|
|
updated gmp.lsp module documentation and library load locations
|
|
|
|
new 'if-not' works like current 'unless' which will loose the else-clause
|
|
in a future version to work like a (when (not ... ) ..)
|
|
|
|
'inc' and 'dec' on a variable containing 'nil' assumes 0 contents, this
|
|
makes initialization of variables used in 'inc' and 'dec' un-necessary,
|
|
but is also compatible with existing code
|
|
|
|
additionally to doargs, dolist, dostring, dotree now all other non-counting
|
|
iterators: map, while, until, do-while, do-until upate the internal $idx symbol,
|
|
e.g: (map (fn (x) (list $idx x)) '(a b c)) => ((0 a) (1 b) (2 c))
|
|
|
|
eliminated deprecated (in 9.3) replace-assoc, use set-assoc and pop-assoc
|
|
instead
|
|
|
|
9.4.5 release August 5th, 2008
|
|
cleanup in define constant, define, set, setq assignment group of functions,
|
|
'constant' should not return a reference as the others in the group.
|
|
|
|
9.4.6
|
|
a fix for 'xml-type-tags' parameter passing
|
|
|
|
desktop shortcut in Windows install no optional
|
|
|
|
fixed copy-paste bug in monitor area in newLISP-GS
|
|
|
|
9.4.7
|
|
Eliminated dependence on stack-size in 'find-all' when using the functor
|
|
parameter. Gathering large lists with 'find-all' will not affect the stack.
|
|
|
|
unify took some special, non-alpha characters as variables
|
|
|
|
9.4.8 development release Sept 1st, 2008
|
|
Small speedup in environment, result and lambda stack management and symbol
|
|
access
|
|
|
|
tags in 'xml-type-tags' are now reset to the default on un-caught error
|
|
conditions which cause a reset.
|
|
|
|
code cleanup in share
|
|
|
|
key-handling improvements in the monitor-shell area in newLISP-GS
|
|
|
|
|
|
;;;;;;;;;;;;;;;;
|
|
|
|
9.9.1 and 9.9.2 towards newLISP v10.0
|
|
|
|
- Reference returns
|
|
- Other changes
|
|
- Short conversion guide
|
|
|
|
Reference returns
|
|
=================
|
|
|
|
Any built-in function returning a list or an array or a listelelent or array
|
|
element, will return a reference and not a copy if the list or array is bound
|
|
to a symbol. This make it possible to work on with destructive function on
|
|
on the return value of other function modifying the original list or array:
|
|
|
|
(set 'lst '(a b c))
|
|
(setf (first lst) 99)
|
|
lst => (99 b c)
|
|
|
|
(setf (lst -1) 'C)
|
|
lst => (99 b C)
|
|
|
|
(set 'A '((a 1) (b 2) (c 3)))
|
|
(push 'z (assoc 'c A))
|
|
A => ((a 1) (b 2) (z c 3))
|
|
|
|
(set 'L '(a b (c d e f g)))
|
|
(= (replace 'f (nth (+ 1 1) L) 'z) '(c d e z g))
|
|
(= L '(a b (c d e z g)))
|
|
|
|
... and similar with many other functions ...
|
|
|
|
The following functions now return a reference to the list, array or string
|
|
or element of a list or array, which can be modified by other functions.
|
|
Previously a copy was returned:
|
|
|
|
'assoc'
|
|
'first'
|
|
'last'
|
|
'lookup'
|
|
'ntn'
|
|
'replace'
|
|
'reverse'
|
|
'rotate'
|
|
'set' (returned reference already)
|
|
'setf' (new function)
|
|
'setq' (old function now working like setf)
|
|
'set-ref'
|
|
'set-ref-all'
|
|
'sort'
|
|
'swap'
|
|
|
|
|
|
'setf' is a new introduced function working not only on symbol references like 'setq'
|
|
but also on any other reference returned from an expression. 'setq' now works like
|
|
'setf' and both point to the same internal code and are interchangeable. It is
|
|
recommended to use 'setq' for setting symbol variables and use 'setf' whenever a sublist
|
|
or subarray is referenced, this follows usage in other LISPs:
|
|
|
|
(setq l '(a b c d e f))
|
|
(setf (first l) 99)
|
|
(setf (last l) 9900)
|
|
(setf (nth 3 l) 'Z)
|
|
(setf (l 3) 'z)
|
|
l => (99 b c z e 9900)
|
|
|
|
(setq l '((a 1) (b 2) (c 3)))
|
|
(setf (assoc 'b l) '(b 20))
|
|
l => ((a 1) (b 20) (c 3))
|
|
|
|
The changes make many of the involved functions faster. It also obsoletes the functions
|
|
'set-assoc', 'assoc-set', 'set-nth 'nth-set', 'ref-set'. As these function don't occur
|
|
much in average newLISP, source changes necessary in existing code are minimal.
|
|
|
|
In 55 lisp source files shipped with newLISP only 3 files needed minor changes:
|
|
|
|
modules/stat.lsp /modules/xmlrpc-client.lsp guiserver/newlisp-edit.lsp
|
|
|
|
the parenthesized syntax for assoc, nth, ref, set-ref and set-ref-all
|
|
has been eliminated. Only the traditional flat syntax is allowed. When multiple
|
|
indices or keys are used a list is specified instead of a single index or key:
|
|
|
|
(nth i myList)
|
|
(nth idxList myList)
|
|
(assoc key aList)
|
|
(assoc list-of-keys aList)
|
|
....
|
|
|
|
Index list vectors are the same as returned by 'ref' and 'ref-all'. Index vectors
|
|
have been supported with 'pop' and 'push' for several years. as befor index vectors
|
|
tie together 'nth', 'ref', 'ref-all', 'push' and 'pop' Using index vectors in the
|
|
(only) flat syntax of 'nth', give 'nth' a uniform arity regardless of the number
|
|
of indices involved.
|
|
|
|
In the 9.x.x series of newLISP support of the parenthesized syntax was inconsistent
|
|
and lead to ambiguities when using expression for the key in the 'ref' family of
|
|
functons. Parentheses in this syntax where similar to to parentheses in looping forms
|
|
like (dotimes (x N) ..) etc.. Because they where part of the syntax and not part
|
|
of the normal s-expression these forms where not suitable for 'apply', 'curry' and 'map'.
|
|
In the functions 'ref' and 'ref-all' they createted ambiguities when reading sourc
|
|
about what syntax was used the flat or the parenthesised form.
|
|
|
|
Now the flat syntax is consistenly the only syntax supported. Multiple indices are
|
|
espressed as lists (index vetors).
|
|
|
|
No changes to implicit indexing, which is conveniently used now when using setf:
|
|
|
|
(set 'l '(a b c d e f))
|
|
(setf (nth 3 l) 'Z) ; explicit
|
|
(setf (l 3) 'z) ; implicit and fastest
|
|
|
|
Other changes
|
|
=============
|
|
|
|
'unless' is reintroduced working like (when (not ...) ...) with no else clause
|
|
|
|
'lookup' now can take multiple keys like to 'assoc'
|
|
|
|
All control structures without local variables maintain reference for last return
|
|
value if that value is tied directly or indirectly to a symbol:
|
|
'begin' 'if', 'if-not', 'when', 'unless', 'while', 'until', 'do-while', 'do-until',
|
|
'cond' and 'case'. 'begin' cannot be used anymore to make a copy of an expression,
|
|
use a lambda function instead: (define (copy x) x)
|
|
|
|
the initialization file in either $HOME/.init.lsp or $USERPROFILE/.init.lsp or
|
|
$DOCUMENT_ROOT/.init is loaded if it exists, else if $NEWLISPDIR/init.lsp exists,
|
|
it is loaded
|
|
|
|
'set' and 'setq' will not allow a missing value argument as was possible before
|
|
|
|
("" 0) and ("" -1) will return "". Before ("" 1) also returned "", now will give
|
|
out-of-bounds error
|
|
|
|
added "text/css" and "application/javascript" media types for -http mode
|
|
|
|
'eval-string' has dropped the optional error-handler parameter, use 'catch' instead
|
|
(reintroduced in 9.9.4)
|
|
|
|
'read-expr' redone, simplified, more useful:
|
|
(read-expr <str-expr> [<context>]) => expr
|
|
basically works like 'eval-string' but doesn't evaluate the expression it compiles
|
|
length of string parsed is in $0
|
|
|
|
'net-eval' internal cleanup, now uses sysEvalString() like 'spawn'
|
|
|
|
Short conversion guide
|
|
======================
|
|
|
|
This is a summary of changes necessary to pre 9.9.2 lisp source code to make it
|
|
run under 9.9.2 and versions after:
|
|
|
|
- 'unless' - the new version of this function does not have an else-clause but
|
|
works like: (when (not ...) ...). If old code contains 'unless' with else-clause,
|
|
rename it to 'if-not'
|
|
|
|
- 'set-nth', 'nth-set', 'set-assoc', 'assoc-set' all have to be relaced by a
|
|
combination of the new 'setf' and 'nth' or 'assoc, e.g:
|
|
|
|
(nth-set (lst idx) value) => change to => (setf (lst idx) value)
|
|
(set-assoc (aList key) value) => change to => (setf (assoc key aList) value
|
|
|
|
- Multitple indices in 'nth' have to be put in a list and in flat syntax:
|
|
|
|
(nth i j k aList) => change to => (nth (list i j k) aList)
|
|
|
|
- 'eval-string' and 'read-expr' lost the error handler parameter, use 'catch' instead to
|
|
capture and handle errors.
|
|
|
|
- Nested expressions of built-in destructive functions must not rely on functions
|
|
returning a copy. E.g. in previous versions (pop (sort myList)), myList was sorted
|
|
but the 'pop' of the first element happened on a copy:
|
|
(set 'myList '(b d c a))
|
|
|
|
; in 9.4.5
|
|
(pop (sort myList))
|
|
myList => (a b c d)
|
|
|
|
; in 9.9.2 and later
|
|
(pop (sort myList))
|
|
myList => (b c d)
|
|
|
|
The new behavior leads to faster and more efficiently coded programs. It is also,
|
|
what many newcomers to newLISP coming from other programming languages would
|
|
expect intuitively.
|
|
|
|
- a 'set-nth' or 'nth-set' used on strings must be replaced with either a
|
|
combination of 'push' and 'pop' when working on utf-8 or ascii content or
|
|
combination of 'append' 'slice' when working on ascii or binary content.
|
|
Note that 'push' and 'pop' both can handle more than one character at once.
|
|
|
|
9.9.3 and 9.9.4
|
|
Some default functor handling was broken, giving errorneous protection messages
|
|
and bad results on contexts in 'setf'
|
|
|
|
'apply' now honors ref-returns:
|
|
(push 99 (apply set '(var ())))
|
|
var => (99)
|
|
|
|
Fixed context-symbol <-> context comparison to make assoc in FOOP more
|
|
flexible (may be quoted or unquoted in FOOP)
|
|
|
|
Fixed a stack overflow in eval-string (bug introduced in 9.4.8)
|
|
|
|
Anaphoric $it in all functions, which can do self referential expression evaluation
|
|
like: 'setf', hashes, 'replace', 'set-ref', 'set-ref-all', 'find-all'
|
|
|
|
(setf (l idx) (+ $it 1)) ; increments value
|
|
(setf (str idx) (upper-case $it)) ; upper-cases a letter in a string
|
|
(MyHash "var" (upper-case $it)) ; uppercases string in hash value
|
|
|
|
Note that the anaphoric $it is not reentrant (neither are $0 - $15) and
|
|
will forget its value after exiting the expression (unlike $0 - $15).
|
|
The functions 'replace', 'set-ref', 'set-ref-all' and 'find-all' use both $0
|
|
and $it for the same value. 'setf' and hashes use only $it.
|
|
|
|
Error procedure in 'eval-string' and 'read-expr' returned as last parameter.
|
|
Context and error procedure parameter are swapped compared to 9.4.x series
|
|
this way the error procedure doesn't need to be specified when using context
|
|
spec. Before a nil had to begiven to suppress error-handler.
|
|
|
|
A few more MIME media types have been added: css, js, avi, wav, zip.
|
|
See Users Manual.
|
|
|
|
'env' without any parameters now returns an association list, not a list of
|
|
flat strings as before:
|
|
(env) => ( ("TERM" "xterm-color") ... ("SHLVL" "1") ...)
|
|
This way 'env' simulates hash syntax in all aspects. To generate the old-type
|
|
environmnt list use (exec "env") which returns a list of environment strings
|
|
of the form "key=value".
|
|
|
|
'setf' working on indexed string references:
|
|
|
|
(setf (nth idx str) newStr)
|
|
(setf (str idx) newStr) ; faster
|
|
(setf (last str) newStr)
|
|
(setf (first str) newStr)
|
|
(setf (last s) (dup $it))
|
|
|
|
All will change the original string in s and return newStr. All can also work on
|
|
string returns of other built-in functions, i.e:
|
|
|
|
(set 's "a-b-c-d-e-f-g")
|
|
(setf (first (replace "-" s "")) (upper-case $it))
|
|
s => "Abcdefg"
|
|
|
|
translate old: (set-nth (s idx) value) ; same for nth-set
|
|
into: (setf (s idx) value)
|
|
|
|
9.9.5
|
|
'push' now returns a reference to the changed list instead of the pushed element.
|
|
Now both combinations: (push (pop ...) ...) and now: (pop (push ..) ...)
|
|
are possible. Previously this was avoided, to avoid copying the list, which now
|
|
is returned by reference, without the need to copy it. In the following exampple
|
|
a (pop (push ...)...) combination is used to model a left-moving queue in one
|
|
statement:
|
|
|
|
(set 'L '(a b c d e))
|
|
(pop (push 'f L -1)) => a
|
|
L => '(b c d e f)
|
|
(pop (push 'g L -1)) => b
|
|
L => '(c d e f g)
|
|
|
|
No code has changed in any of the modules or applications shipped with
|
|
newLISP but in many places the code could be written shorter and faster
|
|
executing as a consequence of this change.
|
|
|
|
System variables $0 - $15, $args, $idx, $it and $main-args are now documented
|
|
in the appendix for the "Users Manual and Reference".
|
|
|
|
Corrected sort-order in the reference section of the manual.
|
|
|
|
Changed enhnaced 10.0 release notes
|
|
|
|
'copy' makes a destructive function non-destructive:
|
|
(replace x (copy theList) y) ; leaves theList untouched
|
|
|
|
newLISP-GS editor fixes
|
|
|
|
9.9.6
|
|
'amb' now has reference return too
|
|
|
|
Fixes in 'env' and NEWLISPDIR detection for SOLARIS OS
|
|
|
|
Doc changes
|
|
|
|
New 'net-interface' allows selecting a default network interface card on
|
|
multihoned network nodes. In previous versions only net-listen could
|
|
specify a specific interface IP address, now a different interface card can also
|
|
be selected for outgoing communications by changing the default IP-address.
|
|
|
|
|
|
9.9.7
|
|
protection error was not traceable in 'swap' symbols
|
|
|
|
a fix for 'local' when using setf/setq on uninitialized symbols
|
|
|
|
replaced all evalChekSymbol with getDefaultOrEval
|
|
|
|
doc changes
|
|
|
|
9.9.8
|
|
fixed the reduce parameter in 'apply'
|
|
|
|
9.9.9
|
|
swapped parameters in 'write-line' syntax with device parameter coming first
|
|
as in 'write-buffer', 'write-char', etc. The return value is now the number
|
|
of characters written as in 'write-buffer'. This made changes necessary in
|
|
the following files:
|
|
examples/sqlite.cgi
|
|
examples/tcltk.lsp
|
|
examples/upload.cgi
|
|
modules/postsrcipt.lsp
|
|
modules/stat.lsp
|
|
util/newlispdoc
|
|
util/syntax.lsp
|
|
|
|
(first '()) and (last '()) now throw error as in Scheme. Before 'nil' was
|
|
returned as in other LISPs. The change makes more sense in the new v.10.0
|
|
of newLISP, where 'first' and 'last' can return a place changed by 'setf':
|
|
(set 'l '(a b c))
|
|
(setf (first l) 9)
|
|
(setf (last l) 99)
|
|
l => (9 b 99)
|
|
Leaving the old behavior would ill-define 'setf', because their would be
|
|
no place to change. The change also avoids the ambiguity of (first '(nil))
|
|
Thanks to the community for comments on this topic!
|
|
|
|
'set-locale' now returns the locale name and the decimal point character in
|
|
a list. Previously only the locale string was returned. This makes it easier
|
|
to write locale independent code containing decimal number constants.
|
|
|
|
'file-info' now can take an extra flag to report on the original instead
|
|
of the link, when the node is a link.
|
|
|
|
'integer' (removed from docs a long time ago) now eliminated. Use 'int'.
|
|
|
|
Eliminated odd symbol syntax in write-buffer, no changes where necessary
|
|
in shipped files, as the symbols was never quoted.
|
|
|
|
Code Patterns and Users Manual Reference changes.
|
|
|
|
9.9.91
|
|
The system variable $status-header can be set to a different string. Currently
|
|
"HTTP/1.0 200 OK\r\n" is the fixed response. As an example for a no response
|
|
header you would specify:
|
|
(set '$status-header "HTTP/1.0 204 No Response\r\n")
|
|
and then exit the cgi program without outputting any content.
|
|
|
|
'read-buffer' and 'net-receive' both loose the quote before the buffer
|
|
symbol. Now a context symbol for a default functor can be passed when writing
|
|
user-defined fuctions where the the buffer can be passed in/out by reference.
|
|
The change in 'read-buffer' and 'net-receive' requires taking away the quote
|
|
from the buffer symbol in the following files:
|
|
modules/ftp.lsp
|
|
examples/client
|
|
examples/finger
|
|
examples/server
|
|
examples/udp-client.lsp
|
|
examples/udp-server.lsp
|
|
examples/upload.cgi
|
|
|
|
set and inc/dec are now the only built-in functions where a quote is required before
|
|
a symbol. Correct quoting is one of the difficulties new-comers to Lisp have.
|
|
|
|
In the Reference Manual all destructive functions are marked with an excla-
|
|
mation mark "!" which links to the relevant Users Manual chapter.
|
|
All functions with special behavior on UTF-8 strings are marked as "utf8"
|
|
and linked to the relevant Users Manual section.
|
|
|
|
9.9.92
|
|
'inc' and 'dec' now don't quote the symbol and also can increment or decrement
|
|
a place in a list structure or an unreferenced (unlike setf) number:
|
|
|
|
(inc x) => 1 ; if x is nil initially 0 is assumed (as before)
|
|
(inc x) => 2
|
|
(set 'l '(1 2 3 4))
|
|
(inc (l 1)) => 3
|
|
(dec (nth 0 l) 2) => -1
|
|
(dec (last l) 0.1) = 3.9
|
|
(inc (+ 3 4)) => 8
|
|
l => (-1 3 3 3.9)
|
|
|
|
as before nil is taken as 0 before inc/dec and floats are returned whenever
|
|
the amount is specified else assumes 1 for amount and returns integers
|
|
|
|
The status header feature introduced in 9.9.91 has been reworked and is
|
|
simpler to use now. Whenever the first line output by an CGI program starts
|
|
with "HTTP/", newLISP server mode will suppress putting out the standard
|
|
status "HTTP/1.0 200 Ok" line and "Server: newLISP ..." line. Instead
|
|
*all* header information must be supplied by the CGI program. The following
|
|
example would redirect a request to a different URL:
|
|
|
|
#!/usr/bin/newlisp
|
|
(print "HTTP/1.0 301 Moved Permanently\r\n")
|
|
(print "Location: http://www.newlisp.org/index.cgi\r\n\r\n")
|
|
(exit)
|
|
|
|
works on OSX 10.5 and Safari browser
|
|
|
|
9.9.93
|
|
When answering HTTP requests, newLISP server mode sets the environment
|
|
variable SERVER_SOFTWARE to "newLISP/n.n.n" where n.n.n is the version
|
|
number. This is used to write server independent CGI programs. The same
|
|
environment variable is also written by the Apache and Microsoft-IIS web
|
|
servers.
|
|
|
|
Updated versions newlisp-ide-4.2.tgz and newlisp-wiki-4.3.tgz for 10.0.
|
|
|
|
The library newlisp.dll or newlisp.so will look for the environment variable
|
|
NEWLISPLIB_INIT and load the file specified there instead of looking for
|
|
HOME/.init.lsp or NEWLISPDIR/init.lsp. NEWLISPLIB_INIT must contain the full
|
|
path/file-name of the file to be loaded.
|
|
|
|
'write-line' with just one argument will still take that argument as a
|
|
either a file or string device to write too and write the string found
|
|
in 'current-line'. The previous (9.4.5) behaviour of writing that string to
|
|
the console is a historic relic when there was no 'println'. So the first
|
|
argument is always the device to write too.
|
|
|
|
Fixed error behavior for 'inc', 'dec'.
|
|
|
|
Many manual corrections
|
|
|
|
9.9.94
|
|
suppress loading of any init.lsp or .init.lsp using -n as the first
|
|
command line option, i.e.: newlisp -n
|
|
|
|
fixed a bug in replace when key cell is self referential
|
|
|
|
corrections in accompanying files
|
|
|
|
Users Manual corrections
|
|
|
|
CodePatterns.html corrections, separate chapter about HTTP mode.
|
|
|
|
Experimental 'estack' with variable environment history.
|
|
|
|
9.9.95
|
|
No NEWLISPDIR/init.lsp or HOME/.init.lsp will be loaded by a newlisp.dll
|
|
or newlisp.so shared library module. Only if NEWLISPLIB_INIT is defined
|
|
the full path-name contained in it is loaded, else nothing is loaded.
|
|
|
|
file:// urls now allowed on 'get-url', 'put-url' and 'delete-url'. Was documented
|
|
already for 'get-url' but never implemented.
|
|
|
|
file:// url was missing for 'delete-file'.
|
|
|
|
'save' now throws error when using http:// url just like w/o url mode. Before
|
|
the HTTP error message was returned. This allows writing error
|
|
handlers working equally on all modes specifying the file-path in 'save'
|
|
and 'load'.
|
|
|
|
fixed a crash bug when deleting a symbols containing the context of the symbol
|
|
to be deleted. Strickter syntax now for 'delete', when deleting contexts, the
|
|
symbol of the context must be given, not the evaluated context:
|
|
(delete Ctx) => must now be => (delete 'Ctx)
|
|
|
|
in newLISP console now keyword completion when hitting TAB once/twice for newLISP
|
|
built-in primitives (Mac OS X, Linux and other UNIX only).
|
|
|
|
On Linux and other UNIX .inputrc with the keyword "newlisp" will also be
|
|
recognized.
|
|
|
|
fixed indx/dec for integers when compiling for 64bit CPUs
|
|
|
|
Manual corrections
|
|
|
|
9.9.96
|
|
'write-buffer' reported a wrong parameter on error
|
|
|
|
'prompt-event' now receives the current context as a parameter
|
|
|
|
'curry' now almost 50% faster and hygienic
|
|
|
|
'integer' which has been deprecated and not documented for some time
|
|
is now eliminated, use 'int'
|
|
|
|
'default' documented again
|
|
|
|
a bug fix in infix.lsp for trailing lower priority ops
|
|
|
|
'set-ref-all' now will not overflow the stack on large lists
|
|
|
|
'bits' function for binary conversion now documented
|
|
(bits 1234) => "10011010010"
|
|
(bits 1234 true) => (nil true nil nil true nil true true nil nil true)
|
|
((bits 1234 true) 0) => nil
|
|
|
|
'inc' will throw error on missing argument
|
|
|
|
9.9.97
|
|
misc. cleanup in net-receive and net-select
|
|
updated syntax.cgi and newlispdoc to handle <? ...> XML tags
|
|
|
|
$idx gets also updated in the second syntax of the series function.
|
|
|
|
all HTML files delivered with distribution pass: tidy -utf8
|
|
|
|
HTML generated with newlispdoc and syntax.cgi passes: tidy -utf8
|
|
except when generating for gmp.lsp (special characters +,-,*,/,=,<,> in function names)
|
|
(see http://tidy.sourceforge.net)
|
|
|
|
updated newlispdoc v2.1, syntax.cgi v2.5
|
|
|
|
|
|
10.0 Release December 8th, 2008
|
|
|
|
10.0.1 Release January 8th, 2009
|
|
Eliminated warning messages for new gcc version 4.3.2 compile.
|
|
|
|
Fixed stat:plot and stat:plotXY routines in stat.lsp for gnupot. Tested
|
|
on Gnuplot version 4.2.4 on Mac OS X and Win32. The routines broke in 9.3
|
|
when process required the full pathnam for the process launched.
|
|
|
|
Documentation for syntax pattern for stat:plot was wrong. The stat.lsp
|
|
module now looks for the gnuplot executable and gives a message if gnuplot
|
|
cannot be found. The module also looks for $HOME/tmp or c:/temp on Windows.
|
|
|
|
Additional offset parameter in 'read-expr' and 'eval-string'
|
|
|
|
Allow default functors to contain FOOP objects. This allows writing destructive
|
|
FOOP procedures, e.g.:
|
|
(new Class 'Foo)
|
|
(define (Foo:modify obj val) (setf (obj 1) val))
|
|
(define (Foo:show obj) (default obj))
|
|
(set 'MyFoo:MyFoo (Foo 123)) => (Foo 123)
|
|
(:modify MyFoo 999) => 999
|
|
(:show MyFoo) => (Foo 999)
|
|
|
|
All looping functions with locals variables: for, dotimes, dolist, doargs
|
|
and dotree now can return references too. Now all built-in functions
|
|
except: let, letn, letx and local return references when possible.
|
|
|
|
Fixed potential memory leaks in the Win32 utf16 functions.
|
|
|
|
'bayes-query' produced wrong results for non-existing tokens when using
|
|
Fisher's Chi2 method
|
|
|
|
'last' on strings as reference in non-UTF8 versions always referenced first.
|
|
|
|
The link.lsp feature was broken in 9.9.95
|
|
|
|
'callback' expanded to 8 parameters and 16 callbacks
|
|
|
|
changes in examples/upload.cgi demo
|
|
|
|
redone documentation and examples for UDP communications in Code Patterns
|
|
and reference documentation
|
|
|
|
10.0.2 Release March 9th, 2009
|
|
Addition of READ_ME-OS2 in doc directory and of readline mode in makefile_os2
|
|
|
|
Treatment of trailing slashes in file-names for the 'file?' function is
|
|
now consistent with Mac OS X and other UNIX. (file? <directory-name>)
|
|
should always return true, regardless of trailing slash
|
|
|
|
'sys-error' now returns last OS errno and text in a list similar to net-error
|
|
(sys-error 0) resets (as before), any other number reports the error text
|
|
|
|
overhaul of makefiles for linux/debian and naming of some osx makefiles
|
|
make linux
|
|
or
|
|
make debian
|
|
will allways compile a 32-bit newLISP even when on 64-bit Linux. This is the
|
|
preferred mode to compile for linux, as most libraries and other apps run
|
|
an 32-bit API even if the OS is 64-bit. Same is true for OS X. This gives
|
|
newLISP 4G of workspace, with integer operations and file positioning 64-bit.
|
|
Only if newLISP has access to more than 4G of memory it makes sense to compile
|
|
fully 64-bit using one of the makefiles with '64' in the name.
|
|
|
|
added two amalgamation makefiles in the util directory for Darwin and Linux,
|
|
no advantage over normal compile, but perhaps different results on other
|
|
platforms,
|
|
|
|
new 'read-utf8' like 'read-char' but reads multibyte utf8 chars
|
|
|
|
'eval' did only pass symbol references, now also references from indexed
|
|
expressions:
|
|
(define-macro (foo) (list (args 0) 0))
|
|
|
|
(setf bar '(1 2 3))
|
|
(foo bar) => (bar 0)
|
|
(setf (eval (foo bar)) 3) => 3 ; was not possible before
|
|
bar => (3 2 3)
|
|
|
|
The "Status:" response line for CGI processing has been redone. When newLISP
|
|
server mode sees CGI output starting with Status: it will compose the HTTP
|
|
status header with the rest of the line appearing after "Status:" in the line.
|
|
See the Code Patterns document for an example.
|
|
|
|
Eliminated all references to opsys (OS number from sys-info) in favor of
|
|
Labels "Linux", "Win32" etc. in qa-xxxx files and added "AIX" for future
|
|
makefile_aix and makefile_aix_utf8 .
|
|
|
|
10.0.3
|
|
Expanded 3rd syntax in 'swap' (swap <place-1> <place-2>) The first two old
|
|
call patterns are deprecated and will be removed in a future version.
|
|
|
|
Eliminated a stacksize dependence when using 'find' with 'match'
|
|
|
|
IBM AIX for PPC has been added as a platform and using the IBM xlc_r or gcc
|
|
compiler. Some issues with newLISP server mode are not resolved yet.
|
|
|
|
Fixed a memory mapping problem surfacing on IBM AIX 32-bit compiles
|
|
|
|
Better handling of status in HTTP headers sent back from server
|
|
|
|
'nil' and 'true' confused 'sort' and 'unique', fixed.
|
|
|
|
10.0.4
|
|
Improved precision and shorter source for 'prob-z' function
|
|
|
|
'expand' and 'letex' now also expand a top-level symbol not in expr list or
|
|
quoted:
|
|
(set 'x 123 'y 456)
|
|
(expand 'x 'x) => 123 ; threw error before
|
|
(letex (x 'y) x) => 456 ; returned y before
|
|
(letex (x '(+ 3 4)) x) => 7 ; returned (+ 3 4) before
|
|
previously some of these caused an error in 'expand' and did no expansion
|
|
in 'letex'
|
|
|
|
Definition of 'legal?' for symbols was to strict
|
|
|
|
10.0.5
|
|
makefiles for 64Bit Linux missed the NEWLISP64 flag since 10.0.2
|
|
added makefiles for BSD LP64 mode
|
|
|
|
code cleanup for OpenBSD warnings
|
|
|
|
new 'xfer-event' can monitor byte-transfer in get-url, post-url
|
|
and put-url and all file operations which take URLs.
|
|
(xfer-event (fn (n) (println "->" n)))
|
|
(length (get-url "http://newlisp.org"))
|
|
->10240
|
|
->11221
|
|
11221
|
|
|
|
'write-buffer' now behaves like 'write-line' when supressing second or
|
|
first parameter
|
|
|
|
new 'last-error' replaces 'error-number' and 'error-text' and returns
|
|
number and text in a list consistent with the behavior of 'net-error' and
|
|
'sys-error'. All three now behave the same way and can enumerate all
|
|
errors when given the error number as parameter.
|
|
|
|
'bind' did not allow recursive definitions
|
|
|
|
10.0.6
|
|
some HTTP net errors where not registered with 'net-error'
|
|
|
|
readline tab expanson formatting was broken in 10.0.5
|
|
|
|
fixed a bug in 'replace' remove mode when all list members are nil
|
|
|
|
lambda functions (not lambda-macro) now allow for large or infinite
|
|
running bodies without stack impact
|
|
|
|
10.0.7
|
|
'net-lookup' now sets 'net-error' when lookup fails
|
|
|
|
Miscellanous cleanup in nl-sock.c
|
|
|
|
Two NaNs should compare nil, division by zero will throw a div-zero-error
|
|
now only in integer division (/) with floats (div) it will return inf(inity).
|
|
|
|
New 'inf?' tests for inifinity: (inf? (div 1 0)) => true
|
|
now (NaN? (div 0 0)) => true
|
|
|
|
Thanks to Nelson H.F.Beebe from math.utah.edu to point out the correct IEE-754
|
|
behavior for division by 0.0, and NaN? and inf? tests.
|
|
|
|
The build process now also accepts 'make check' additionally to 'make test'
|
|
for GNU compatibility: 'make all check' and then 'sudo make install' makes
|
|
tests and installs.
|
|
|
|
When installing using 'make install' or when installing from the UBUNTU Linux
|
|
binary installer a newlisp-x.x.x (where x.x.x is the version number) and a i
|
|
symbolic link is created for newlisp -> newlisp.x.x.x. This way older versions
|
|
stay and are still accessible. The binary installers for Win32 and Mac OS X
|
|
have not changed.
|
|
|
|
The newlispdoc utility now accepts custom tags, which can be made up by just
|
|
prepending the custom name with a: @. The text after the custom tag will be
|
|
translated as usual, e.g. it may contain @link tag etc.. Like in most other
|
|
tags, text is limited to the same line.
|
|
|
|
10.0.8
|
|
'pack' now converts floats to integer when the format is integer but the
|
|
argument is a floating point (double). It already converted integers to float
|
|
when the format was float, but didn't handle the other direction.
|
|
|
|
(int "ff" 0 16), (int "+ff" 0 16) and (int "-ff" 0 16) now all work. In former
|
|
versions a leading 0 or 0x was required.
|
|
|
|
An optional boolean flag in 'dotree' allows filtering hash symbols or symbols
|
|
from 'bayes-train' starting with an underscore character in their name.
|
|
|
|
Small fixes for syntax highlighting in newlisp-edit.lsp.
|
|
|
|
newlisp-edit.lsp now can change fonts in both, the editor and monitor areas,
|
|
depending on cursor position.
|
|
|
|
The syntax highlighter in syntax.cgi and newlispdoc now colors newLISPdoc
|
|
tags too.
|
|
|
|
10.1.0 - release June 22nd, 2009
|
|
fixed a memory leak in 'sync' when transferring data bigger memory page-size
|
|
|
|
(add) and (+) now return 0 and (mul) and (*) return 1. Before a missing
|
|
parameter error occured.
|
|
|
|
(and) now returns true. Before it returned nil. (or) still returns (nil).
|
|
|
|
new 'send' and 'receive' message functions for communications between
|
|
parent and 'spawn'ed child processes. Transfers any expression any size.
|
|
|
|
new 'qa-message' file for testing new 'send/receive' message functionality
|
|
|
|
Makefiles with 'solaris' have been renamed to 'sunos' and the built-in
|
|
variable 'ostype' now reports "SunOS" for Sparc SunOS and "Solaris" only for
|
|
OpenSolaris. Before "Solaris" was reported for all.
|
|
|
|
All UNIX except AIX and TRU64 are now compiled for readline and UTF-8 support
|
|
by default: make. Do make -f makefile_xxx. to choose a different configuration.
|
|
|
|
The util/ directory contains an alternate configure script called configure-alt
|
|
this can be copied up to the main distribution directory as an alternate
|
|
comnfigure utility. See util/configure.txt for more info on this.
|
|
|
|
if an 'until' or 'do-until' body is empty the last condition evaluation
|
|
should be returned
|
|
|
|
10.1.1 - release update July 21st 2009
|
|
'string' function now 25% faster on expressions
|
|
|
|
It is not necessary anymore to give the program expression in 'net-eval' as a
|
|
string, if not given as string net-eval will convert automatically:
|
|
(net-eval "remote.com" 12345 "(+ 3 4)") => 7
|
|
; same as
|
|
(net-eval "remote.com" 12345 '(+ 3 4)) => 7
|
|
Same works for the nested syntax with map of sites and expressions.
|
|
|
|
Added optional offset parameter in 'regex' and 'find' (in string syntax)
|
|
(regex <pattern> <string> [option [offset]])
|
|
|
|
'series' with the function argument now can make series of any data type
|
|
|
|
'swap' was not throwing error when second parameter was missing
|
|
|
|
Fixed a bug in 'eval-string' when the error procedure was specified.
|
|
|
|
In newLISP-GS gs:color-tag was documented but not implemented in Java
|
|
|
|
In newlisp-edit.lsp (newLISP-GS IDE) Ctrl-x/v/z/Z and Cmd-x/v/z/Z did not
|
|
set the buffer-dirty red light
|
|
|
|
New 'configure' makes old 'build' script obsolete. After extracting the source
|
|
distribution, simply 'make' will look for a 'makefile_configure' and generate
|
|
it calling 'configure' if it doesn't exist, then it builds the newlisp excutable
|
|
using 'makefile_configure'. An alternative: configure-alt can be found in the
|
|
main distribution directory. See doc/INSTALL for more details.
|
|
|
|
SunOS makefiles now have support for readline by default
|
|
|
|
makefile_linuxLP64_urf8 had nl-utf8.o missing in OBJS
|
|
|
|
makefile for ARM CPU on Nokia N810 tablet. To make for ARM:
|
|
make -f makefile_linux_maemo_armel
|
|
|
|
New module smtpx.lsp like smtp.lsp but allows attachments
|
|
|
|
10.1.2 Windows only release update , August 3rd, 2009
|
|
to correct printing to stdout problem
|
|
|
|
10.1.3 development release Aug. 9th, 2009
|
|
'inf?' and 'NaN?' where not working correctly on Win32, a new qa-float
|
|
can be used to check several aspects of IEE 754 Floating point compliance
|
|
regarding inifinitive and NaN (not a number) floating point values.
|
|
|
|
In 'now' the last 2 fields "minutes west of UCT" and "daylight savings"
|
|
are now working correctly on Linux, Mac OS X, SunOS, BSDs and Win32.
|
|
Daylight savings on Win32 as minutes on all others as 0 to 6 flag depending
|
|
on geographical area. On AIX, OS2 and TRU64 0 is returned for both fields.
|
|
|
|
The 'time' function now returns float milliseconds with fractional part
|
|
instead integer milliseconds.
|
|
|
|
The return string size from 'command-event' is now unlimited, before
|
|
254 length was maximum.
|
|
|
|
New -t <connection-timeout> commandline option, specifies timeout in
|
|
micorsoseconds after connection when in demon mode. This avoids an un-
|
|
responsive server when a client connects, but doesn't do anything else.
|
|
|
|
New makefile_darwin_utf8_llvm on OSX for building newLISP using the LLVM
|
|
compiler. Improves performance by about 10%, needs developer tools installed.
|
|
|
|
New versions of syntax.cgi and newlispdoc correct highlighting for & and ^.
|
|
|
|
New version of nls (combined newLISP and BASH shell) adapts the help function
|
|
to the manual formatting introduced in 10.1.1.
|
|
|
|
Long overdue removal of internal cell mark/sweep routines.
|
|
|
|
Net sessions list now avoids socket doubles in server mode.
|
|
|
|
10.1.4
|
|
'now' offset parameter crashed broken in 10.1.3, working again
|
|
|
|
10.1.5 Maintenance Release September 15th, 2009
|
|
|
|
Fix for OS2 compile in nl-filesys.c
|
|
|
|
Fixed stray i in fetch-all in mysql.lsp,
|
|
|
|
Return milliSec float with decimals for 'time-of-day'; on modern systems
|
|
this enables microsecond resolution.
|
|
|
|
On Mac OSX 10.6 Snow Leopard, the make/configure script will make a 32-bit
|
|
newLISP although 64-bit is detected as the default. To make 64-bit newLISP
|
|
use one of the supplied makefiles explicitly as in earlier Mac OSX versions.
|
|
|
|
Copying a zero-length file will not throw an error anymore.
|
|
|
|
10.1.6 Maintenance Release October 20th, 2009
|
|
Fixes for 'net-error' and 'sys-error' when supplying out-of range numbers
|
|
o 0s.
|
|
|
|
Documentation fixes in the 'Users Manual and Reference'.
|
|
|
|
'inf' is now signed in floating point opertions: (div -1 0) => -inf
|
|
'mod' will return NaN for a 0 divisor, % will still throw an exception
|
|
when divisor is 0.
|
|
|
|
Fixed a memory bug in 'starts-/ends-with' when using regular expressions.
|
|
|
|
'nil' and 'true' symbols where not always taken as boolean value which
|
|
affected 'sort' and 'difference'.
|
|
|
|
New 'reader-event' triggers when an expression was read. The function
|
|
specified in 'reader-event' can translate the expression before
|
|
evaluation returning a modified version of the input. This can be used
|
|
to create a reader macro facility.
|
|
|
|
New module file macro.lsp implements reader/rewrite macros by means
|
|
of the new 'reader-event' function.
|
|
|
|
Change in sqlite3.lsp in bind-parameter, how text and blobs are retrieved.
|
|
|
|
deprecate usage of $0 in set-ref and set-ref-all .
|
|
|
|
throw error when trying to do a replace on a system symbol
|
|
|
|
some cleanup of itSymbol
|
|
|
|
10.1.7 maintenance release November 24th, 2009
|
|
|
|
URLs now decoded correctly when compiled in IPv6 mode.
|
|
IPv6 compiled version now runs qa-net.
|
|
|
|
'net-ping' does not require root/superuser privileges anymore when on Mac OS X.
|
|
|
|
Small speed improvement in map and fixing treatment of missing arguments:
|
|
(map list '(a b) (A)) => ((a A) b) ; not ((a A (b nil))
|
|
(map string '(a b) '(1)) => ("a1" "b") ; not ("a1" "bnil")
|
|
|
|
'swap' can work in-place like: inc, dec, pop, push, replace, rotate, sort,
|
|
write-buffer and write-line always could.
|
|
|
|
Optional true-flag parameter in ref/ref-all returns item(s) found instead of
|
|
index vectors when a compare function is specified. Instead of:
|
|
(map mylist (ref-all pattern mylist match)
|
|
do:
|
|
(ref-all pattern mylist match true)
|
|
|
|
Bad application of errorProcExt2() in netReceive() could crash on error.
|
|
|
|
Protect local symbols in caller hierarchy from 'constant' and 'context'.
|
|
|
|
All event fuctions now can take either nil or 'nil (quoted) to disable an
|
|
event handler, before only quoted 'nil was working, unquoted nil could crash.
|
|
|
|
Removed experimental 'estack' from code and newlisp.vim (introduced in v9.9.94)
|
|
|
|
Throw reference error in 'setf' on string when base ptr is not from sub-expression
|
|
string. Wouldn't do anything before.
|
|
|
|
Accept chars > 127 in HTTP headers received from remote servers in web functions.
|
|
|
|
Do URL translation of path-file names in HTTPD server mode.
|
|
|
|
A 'sql3:colnames' function has been added to the sqlite3.lsp module.
|
|
|
|
|
|
Dec 6, 2009
|
|
10.1.8 This development version starts the v.10.2 generation of newLISP
|
|
|
|
Fixed a bug when replicating primitives with 'new'.
|
|
|
|
FOOP objects are now mutable, anonymous or not. The old obj parameter has been
|
|
dropped from FOOP methods. Instead a new function 'self' is used to access and
|
|
index the target object:
|
|
|
|
(new Class 'Circle)
|
|
|
|
(define (Circle:move dx dy)
|
|
(inc (self 1) dx)
|
|
(inc (self 2) dy))
|
|
|
|
(set 'aCircle (Circle 1 2 3))
|
|
|
|
(:move aCircle 10 20)
|
|
|
|
aCircle => (Circle 11 22 3)
|
|
|
|
Old FOOP methods have to be rewritten to drop the obj parameter:
|
|
|
|
old : (define (Foo:method obj p1 p2) ...)
|
|
new : (define (Foo:method p1 p2) ...)
|
|
|
|
This has also reduced the overhead required in FOOP methods. Allthough this
|
|
change creates an incompatibility with older FOOP code, the advantage
|
|
of having mutable objects compensates for that incompatibility. Destructive
|
|
methods was the FOOP feature most asked for ind newLISP.
|
|
|
|
10.1.9 Jan 12, 2010
|
|
Fixed executeCommandLine() for 64-bit UBUNTU, which could cause writeStreamStr()
|
|
related functions to crash.
|
|
|
|
(delete <sym> nil) will delete symbols without checking any references. The
|
|
symbol can be a context symbol. Note that this mode of 'delete' can crash
|
|
the system if if symbols are referenced from anywhere else.
|
|
|
|
Fixed double evaluation in nil? predicate
|
|
|
|
Fixed a bug in 'legal?'.
|
|
|
|
Better error reporting for url based file operations.
|
|
|
|
A sign-extension fix for 'get-int' under 64-bit
|
|
|
|
Fix in gmp.lsp for 64-bit >,<,>=,<= but still problems with 'factor'
|
|
|
|
Fix for push on fresh symbols. Did return the element pushed not the list.
|
|
|
|
Fix for push -1 optimization when copying contexts with 'new'
|
|
|
|
Fix for a memory leak in certain applications of 'new'
|
|
|
|
Fix for 'self' in nested FOOP functions, also eliminated FOOP stack
|
|
|
|
New smtpx.lsp module for (multiple) attachements and UTF-8 safe encoding
|
|
|
|
|
|
10.1.10 Jan 26, 2010
|
|
New 'extend' works like 'append' but modifies first list or string
|
|
parameter.
|
|
|
|
New ++ and -- increment/decrement in integer mode.
|
|
|
|
Functions 'inc/dec' now always work in floating point mode.
|
|
|
|
In 'find' the regex option can be specified as nil when offset is present,
|
|
this way 'find' with offset does not have to be a regex search.
|
|
|
|
In 'starts-with/ends-with' nil is not allowed as a parameter for
|
|
case insensitivity anymore use the regex option 1 instead (nil always
|
|
did regex anyway).
|
|
|
|
Changed configure-alt now allows defintion of different install and
|
|
exe prefixes. For questions and support for configure-alt, please
|
|
contact Ted Walther: ted@reactor-core.org.
|
|
|
|
Makefile has been simplified and the install part extracted as:
|
|
makefile_original_install, (used by configure).
|
|
|
|
10.1.11
|
|
Various documentation fixes and changes.
|
|
|
|
Additional, optional list-index parameter in 'now' makes it return a list
|
|
member instead of the whole list:
|
|
(now 0 0) => 2010 ; year
|
|
(now 0 -2) => 300 ; offset west of GMT (in EST)
|
|
|
|
A string slice offset out of bounds now throws error as in lists.
|
|
|
|
'pretty-print' can addtionally define the default print format for
|
|
floating point numbers.
|
|
|
|
New 'prefix' returns the context of a symbol.
|
|
|
|
New 'term' replaces deprecated 'name'.
|
|
|
|
New 'caller' returns the symbol of the caller function.
|
|
|
|
'read' and 'write' may be used as shorter writings of the elementary
|
|
'read-buffer' and 'write-buffer' I/O functions.
|
|
|
|
Addtional chapter in doc/INSTALL for package creators and installation
|
|
customization.
|
|
|
|
Updated syntax highlighing for nano, joe, and vim editors.
|
|
|
|
Added back cleaning into 'make dist'.
|
|
|
|
Re-added Cygwin flavor with 'make -f makefile_cygwin'. The make file gets
|
|
also chosen by 'configure' and makes a newlisp.exe, but has to be installed
|
|
manually together with cygwin1.dll in %NEWLISPDIR%; on Win32 normally
|
|
defined as C:\Program Files\newlisp.
|
|
Many thanks to Niek from http://daansystems.com for helping with this.
|
|
|
|
10.1.12
|
|
Symbol protection for containers of mutable FOOP objects
|
|
|
|
Functions 'crit-chi2' and 'prob-chi2' produced value too low on odd degrees
|
|
of freedom. 'bayes-query' in Chi2 mode was not affected.
|
|
|
|
moved most qa-xxx files into qa-specific, only qa-do and qa-comma stay in
|
|
main source directory. The commands 'make test' alias 'make test' work like
|
|
before, but now taking qa-xxx files from qa-specific. A new 'make testall'
|
|
can be used to test with allmost all qa-xxx files.
|
|
To reduce output do: make test | grep '>>>>>'
|
|
|
|
Rework of setf for in-place changes.
|
|
|
|
'caller' introduced in previous development version 10.1.11 has been
|
|
eliminated.
|
|
|
|
'define-macro's (fexpr's) are now included in error reporting:
|
|
define (foo) (bar))
|
|
(define-macro (bar) (+ a s f))
|
|
(foo) =>
|
|
|
|
; in older verssion 'bar' doesn't show
|
|
ERR: value expected in function + : a
|
|
called from user defined function foo
|
|
|
|
; now 'bar' is reported
|
|
ERR: value expected in function + : a
|
|
called from user defined function bar
|
|
called from user defined function foo
|
|
|
|
In newLISP-GS on Win32 a messagebox pops up if a connection cannot be
|
|
established between the newLISP process ad Java GUI server.
|
|
|
|
10.2.0 stable release March 16th, 2010
|
|
new 'configure-alt' fixes a problem for debian package making.
|
|
|
|
The enviroment variable REQUEST_METHOD is now set by newLISP server mode
|
|
to one of the strings GET, HEAD, PUT, POST, DELETE.
|
|
|
|
'det' and 'inv' now return 'nil' on singular matrices, but fall back
|
|
to the old behaviour when specifying a new optional 'true' flag. With
|
|
the flag pivot elements of 0 will assume a very small value as in
|
|
older versions of newLISP.
|
|
|
|
'xml-parse' did ot parse UTF-8 chracters correctly.
|
|
|
|
'make test' and 'make testall' now by default do the short display
|
|
with only the end result. 'make check' and 'make checkall' produce
|
|
the long output.
|
|
|
|
Fixed wrong error message in context creation.
|
|
|
|
The int-type field in all financial functions is optional.
|
|
|
|
10.2.1 stable release March 17th, 2010
|
|
'setf' and 'swap' could change the values of 'true' and 'nil'.
|
|
|
|
10.2.2
|
|
'time' did overflow after 35 minutes now can count to about 68 years.
|
|
|
|
Speed up of Hash deletion with: (<tree> <token> nil). No reference
|
|
checks are made. This means that tree hashes should only be used as
|
|
such and symbols not be referenced directly with the prepended
|
|
underscore, as is usual practice already, or be deleted explicitely
|
|
using 'delete'.
|
|
|
|
'xml-parse' with context option did not convert names of built-in
|
|
primitives.
|
|
|
|
New second syntax pattern for 'net-service':
|
|
(net-service <port> <protocol>) => service-name
|
|
(net-service 22 "tcp") => "ssh"
|
|
|
|
10.2.3
|
|
The 'net-connection' functons now can take a timeout ms parameter:
|
|
(net-connnect <str-host> <int-port> <int-milli-sec>)
|
|
on UNIX the function will fail returning 'nil' before the timeout
|
|
expires. On Win32 the 'net-connect' will not fail until the timout
|
|
is run out. This makes the function return 'nil' on closed ports
|
|
much faster on UNIX.
|
|
|
|
New documentation for 'net-service' and 'net-connect'
|
|
|
|
10.2.4
|
|
'find-all' will not exit anymore on loop conditions but retry
|
|
incrementing the the search offset by 1.
|
|
|
|
'load' in HTTP mode did not return to previous context, but always
|
|
went into MAIN.
|
|
|
|
"file://C:/example.txt" and "file:///C:/example.txt" both forms are
|
|
now valid on Win32.
|
|
|
|
On Win32 negative Inf lost the sign when converting to maxint
|
|
|
|
Shorten p_setLocale() code.
|
|
|
|
A fix for ref-passing out of loop primitives.
|
|
|
|
10.2.5
|
|
Additions, modifications to qa-xxx files
|
|
|
|
The 'true' flag in 'delete' was not handled correctly since 10.2.0
|
|
|
|
10 times speedup of 'save'
|
|
|
|
new 'net-packet' function, UNIX only tested on Mac OSX 10.4 PPC G4,
|
|
Mac OSX 10.6 Intel, Linux UBUNTU 9.10 (root privileges required).
|
|
See newlisp-10.2.5/qa-specific-tests/qa-packet for working TCP examples.
|
|
Change target IP numbers in packet examples in qa-packet to working ones.
|
|
Protocols TCP, UDP and ICMP have all been tested on OSX X PPC, OSX Intel
|
|
and Linux UBUNTU 9.10 communicating with raw packets between Big-Endian
|
|
and Little-Endian CPUs, sending a raw-packet and receiving a correct
|
|
response packet.
|
|
|
|
handling on short lists when mapping strings now consistent:
|
|
'map' stops collecting as soon as one argument list is short. This
|
|
ensures that elements in the nth row appear always in the nth column
|
|
after the transposition caused by 'map'. This was working on lists
|
|
but did not work accordingly on strings.
|
|
|
|
10.2.6
|
|
In 'get-url' the "list" option in combination with the "debug" options
|
|
did return a string instead of a list.
|
|
|
|
'net-packet' now also works with OpenBSD addtonally to: Mac OS X on
|
|
PPC and Intel and Linux on Intel CPUs.
|
|
|
|
The timeout parameter in 'get-url', 'post-url' and 'put-url' did not
|
|
work correctly since 10.2.3 after introducing the 'net-connect' timeout
|
|
parameter.
|
|
|
|
OpenBSD 4.6 now added as a regular test environment additionally
|
|
to Mac OSX, FreeBSD, UBUNTU Linux, SunOs Sparc and Windows XP/7.
|
|
|
|
10.2.7
|
|
In 'pmt', 'ipv', 'nper' int -> long for Linux 64-bit
|
|
|
|
Cell leak in 'find-all' when new handling of looping condition (v.10.2.4)
|
|
|
|
Fixes in qa-net for IPv6
|
|
|
|
Note, that net-packet is currently coded only for IPV4
|
|
|
|
Fixed a bug in URL parsing for IPv6
|
|
|
|
'find' did not evaluate regex option parameter since 10.1.10
|
|
|
|
10.2.8 stable maintenance release May 20th 2010
|
|
Backed out some IPv4/6 changes in 10.2.7 reverting to 10.2.6 plus some
|
|
IPv6 fixes. Next development version will split up nl-sock.c into UNIX
|
|
and Windows versions; recoding the UNIX version using getaddrinfo() and
|
|
getnameinfo() for dynamic IPv4 and IPv6 support in the same version.
|
|
|
|
10.2.9 development release May 27th, source only
|
|
Large portions of nl-sock.c have now been re-written to switch between
|
|
IPv4 and IPv6 during runtime using the new 'net-ipv' function:
|
|
(net-ipv) ; show current protocol as 4 and 6
|
|
(net-ipv 4) ; switch to IPv4
|
|
(net-ipv 6) ; switch to IPv6
|
|
|
|
By default newLISP starts in IPv4 mode, to start up in IPv6 mode:
|
|
newlisp -6
|
|
When the IPv4 to IPv6 transition is completed in a few years, the
|
|
default will be changed to IPv6 and a 'newlisp -4' startup option
|
|
will be introduced. The current -6 option is only necessary when starting
|
|
newLISP in server mode. In normal mode a (net-ipv ...) code switch can be used.
|
|
|
|
The nl-sock.c uses the newer POSIX 'C' getaddrinfo() and getnameinfo()
|
|
functions. Wondows 95 is not supported anymore. The minimum MS Windows version
|
|
for newLISP is now Windows NT 5.01. This allowed mostly similar code
|
|
on Windows and UNIX and made a split into platform dependent files unnecessary.
|
|
|
|
|
|
New 'qa-specific-tests/qa-net6' for IPv6 testing included in:
|
|
make testall
|
|
UNIX like OSs test fine on IPv4 and IPv6. Currently I have no IPv6
|
|
capable MS Windows, FreeBSD and SunOS installations for testing.
|
|
But on all platforms this version compiles and links well.
|
|
|
|
Following systems test fine:
|
|
Mac OS X 10.6, IPv4 and 6, 32 and 64-bit
|
|
Windows XP SP2, IPv4 only, 32-bit
|
|
Linux UBUNTU 10.4, IPv4 and 6, 32-bit
|
|
OpenBSD 4.6, IPv4 and 6, 32 and 64-bit
|
|
FreeBSD 7.2, IPv4 only, 32-bit
|
|
SunOS 5.8 on Sparc Ultra-2, IPv4 only, 32-bit
|
|
|
|
10.2.10
|
|
Allow binary zeros in 'exec' piped-in data
|
|
|
|
Cleanup for sendHTTPpage()
|
|
|
|
Fixed a bug in 'copy', which passed on a wrong protection status, when
|
|
copying protected variables since 10.1.12
|
|
|
|
IPv6 not currently working on the Win32 MinGW compiled version
|
|
|
|
Changed winsock initialization to v.2.2
|
|
|
|
10.2.11
|
|
Windows versions now compiled using wspiapi.h in nl-sock.c. This guarantees
|
|
working of freeaddrinfo(), needed for IPv6, on some older Win 2000 systems.
|
|
|
|
New multiline mode on the commandline, without using [cmd], [/cmd] tags:
|
|
just hitting [enter] on an empty line gets into and out of multiline mode.
|
|
The [cmd], [/cmd] still work too and are needed internally when newLISP is
|
|
working in server mode, for some IDEs and when pasting source containing
|
|
empty lines into the terminal. Tab-expansion (on Unix only) for built-in
|
|
function names also works in multiline mode.
|
|
|
|
Minor changes in version 1.37 of the Java based Guiserver.
|
|
|
|
In 'net-ping' specify optional third parameter to get an error string instead
|
|
of response time, if the host did not respond. This behavior was present in
|
|
previous versions, but was not documented.
|
|
|
|
10.2.12
|
|
Fixes and additions for newLISP-GS guiserver.jar. See guiserver/CHANGES
|
|
|
|
10.2.13
|
|
More fixes in guiserver see guiserver/CHANGES
|
|
no changes in newlisp interpreter
|
|
|
|
New 'date-list' returns list of year, month, day, hours, minutes, seconds from
|
|
time value in seconds since January 1st, 1900 (reverse of 'date-value')
|
|
|
|
'date-parse' is new name of old 'parse-date'
|
|
|
|
The week-day value in 'now' and the new 'date-list' has been changed to
|
|
conform to the ISO-8601 standard (international standrad for time and date
|
|
related data). Now 1-7 for Monday thru Sunday.
|
|
|
|
Font size in syntax.cgi now bigger on iOS devices iPad and iPhone
|
|
|
|
newlisp_manual.html, CodePatterns.html, ExpressionEvaluation.html and
|
|
MemoryManagement.html are now XHTML 1.0 Transitional compliant.
|
|
|
|
New users manual chapter "3. Interactive Lisp mode" explains all the
|
|
features of the read-eval-print-loop (REPL) in newLISP.
|
|
|
|
Guisererver: Fix in TextShape.java to fox crashes when painting canvas.
|
|
|
|
10.2.14 Development Release Sept 2nd, 2010
|
|
|
|
10.2.15
|
|
Increased maximum length of command-line to 511. This affects the interactive
|
|
command line and line length in HTTP request headers.
|
|
|
|
Default connection timeout set to 10 secs, up from 3 secs. Always can be
|
|
overwritten by timeout parameters in net-connect and get,post,put and
|
|
delete -url functions.
|
|
|
|
The boolean flag in 'title_case' in non-UTF8 versions was not calculated
|
|
correctly.
|
|
|
|
All HTML files in the doc directory are UTF8 and XHTML 1.0 Trans. compliant.
|
|
|
|
Additional parameter in '!' on MS Windows can be used to enter process creation
|
|
flags, e.g. for suppressing creation of a command window. Not using the parameter
|
|
assumes the old '!' method. When the parameter is present (can be 0) an alter
|
|
native method of process creation is used without dependence on a command shell
|
|
window. On Unix this parameter is ignored.
|
|
|
|
Fixed a bug in symbol compare routines when comparing dynamic symbols.
|
|
|
|
Result of 'map' should always be unprotected.
|
|
|
|
More adjustments in switchable IPv4/6 mode.
|
|
|
|
Last sys-info field should change 7th bit (512) with 'net-ipv'
|
|
|
|
A change in guiserver.lsp to fix instabilities when gs:check-event was called
|
|
from gs:listen invoked event handler functions.
|
|
|
|
10.2.16
|
|
New table widget and supporting functions in Guiserver.
|
|
|
|
10.2.17
|
|
Fixes in error handlers of xmlrpc-client.lsp and xmlrpc.cgi
|
|
|
|
Fixes in guiserver.jar in Table UI
|
|
|
|
The sniff and scan utilities are added to newlisp-x.x.x/examples
|
|
directory in the source distribution.
|
|
|
|
On 64-bit versions 'date' and 'date-value' will work for dates year 2038
|
|
and up to January 2100.
|
|
|
|
The 'mod' function assumes the second parameter to be 1 if missing, thus
|
|
returning the fractional part of a number.
|
|
|
|
Updates to configure-alt for Windows 7.
|
|
|
|
POST with multipart/form-data content-type now works with newLISP HTTPD
|
|
and CONTENT_TYPE is added to the environment by newLISP server.
|
|
now added.
|
|
|
|
10.2.18
|
|
'extend' will take an un-initialized variable and create a list or string
|
|
depending on the second argument (similar to 'push'). Before a variable
|
|
in the first argument had to be initialized to a string or list.
|
|
|
|
Added path for Fedora Linux in mysql.lsp
|
|
|
|
PCRE was not configured correctly for utf8 when using configure-alt.
|
|
pcre-config.h now includes config.h when using configure-alt to build.
|
|
Builds with the standrad configure where never affected.
|
|
versions.
|
|
|
|
Added a "divert" option to 'net-listen'. In this case a IPPROTO_DIVERT
|
|
option is added to a raw socket. 'net-receive-from' and 'net-send-to'
|
|
are used to serve the divert-socket returned by 'net-listen'. The
|
|
interface address is given as an empty string for INADDR_ANY.
|
|
BSD 'ipfw' or Linux 'ipchains' rules must be defined in the configuration
|
|
of the FreeBSD, OpenBSD or Linux platform for the divert-port and the
|
|
ports to be diverted. 'net-receive-from' will contain the local interface
|
|
address for incoming packets and will contain 0.0.0.0 for outgoing packets.
|
|
See the man page for divert. The same address received by 'net-receive-from'
|
|
is used in the 'net-send-to' call when re-injecting the packet:
|
|
|
|
(set 'divertSocket (net-listen divertPort "" "divert"))
|
|
|
|
(until (net-error)
|
|
(set 'rlist (net-receive-from divertSocket maxBytes))
|
|
(set 'buffer (rlist 1))
|
|
; buffer can be processed here before reinjecting
|
|
(net-send-to (rlist 0) divertPort buffer divertSocket)
|
|
)
|
|
|
|
newLISP must be run in superuser mode to be able to create divertSocket.
|
|
|
|
Some internal cleanup for p_first(), p_last()
|
|
|
|
Bug fixes for modules/json.lsp
|
|
|
|
Fixed cell leaks when 'ref', 'ref-all' failed with error in
|
|
compareFunc()
|
|
|
|
The return value for 'ref' has changed from () to nil, when not
|
|
finding anything.
|
|
|
|
Fixed cell leak when 'setf/q' failed with protection error
|
|
|
|
symbolCheck cleanup in 'assoc', 'lookup', 'ref', 'set-ref' and all
|
|
flow constructs results in some speedup for these functions.
|
|
|
|
10.3.0 Stable Release, February 2nd, 2011
|
|
newLISP HTTP server now also sets CONTENT_LENGTH environment
|
|
variable when present in incoming client header.
|
|
|
|
In cgi.lsp added (outcommented) alternative method for reading
|
|
POST data. This relies on CONTENT_LENGTH set in the environment.
|
|
|
|
Fixed a problem in assoc, lookup and pop-assochen nil is passed
|
|
as key.
|
|
|
|
cgi.lsp now uses CONTENT_LENGTH if present to receive POST data
|
|
|
|
Fisher Chi-2 derived probabilities in bayes-query are not normalized
|
|
any more.
|
|
|
|
10.3.1 development release May 17th, 2011
|
|
Documentation changes
|
|
|
|
When a list reference changes while being indexed an error is thrown.
|
|
Code written this way will normally not make sense, but now fails
|
|
more gracefully.
|
|
|
|
(set 'lst '(1 2 3 4 5))
|
|
(lst (set 'lst '(1 2 3)))
|
|
---> ERR: list reference changed
|
|
|
|
MBCS coded characters in pathnames in the Windows UTF-8 version.
|
|
|
|
Better worded error message when wrong parameter type in implicit
|
|
indexing of strings and lists.
|
|
|
|
Fixed a buffer overflow for interactive multiline mode for long
|
|
input lines.
|
|
|
|
Fix for 'filter', 'index', 'clean', 'exist' and 'for-all' when
|
|
handling empty list elements (). Also, these functions are now
|
|
several times faster.
|
|
|
|
Check for missing parameter in inc, dec, ++, --. Using these
|
|
without any parameter messed up the value of 'nil'.
|
|
|
|
Fixed crash bug with boolean 'true' parameter in 'dotree'
|
|
|
|
Minimum SDK changed to 10.5 Leopard for makefiles:
|
|
makefile_darwin_utf8_leopardPPC
|
|
makefile_darwin_utf8_leopardIntel
|
|
to make a universal Tiger 10.4 based version the file:
|
|
makefile_darwin_universal_utf8_compat
|
|
still exists (for questions about this -> Greg Slepak).
|
|
|
|
bug fix for 'timer' when using recursively and not using symbols
|
|
but lambda expressions, e.g.: (timer foo 1) instead of (timer 'foo 1)
|
|
when the (timer ...) statement is part of foo.
|
|
|
|
New version 0.3 of json.lsp module now processes backslashed characters
|
|
as of JSON spec (thanks Ted Walther).
|
|
|
|
Speedup and memory lossless error recovery in 'map'.
|
|
|
|
Better memory management in error recovery of evaluateStream()
|
|
and sysEvalString()
|
|
|
|
Did not clear EOF error in 'read-line'.
|
|
|
|
10.3.2 stable maintenance release July 20th, 2011
|
|
New 'debugConsole' in newlisp.dll can be imported and called for
|
|
re-opening std I/O to CONOUT$ and CONIN$.
|
|
|
|
Fixed memory leak in library mode.
|
|
|
|
Doc changes and additions.
|
|
|
|
makefile_darwin_utf8_lib for newlisp.dylib
|
|
|
|
Fix for "debug" option in 'get-url' when passing url-encoded
|
|
strings (thanks to Kosh for catching and fixing this)
|
|
|
|
The newlisp.1 man page showed an old invalid method to define
|
|
redirections in http-conf.lsp.
|
|
|
|
Significant speedup of 'series' with function in second argument.
|
|
|
|
Speedup of 'find-all' (for lists and strings) when function is used
|
|
as third argument.
|
|
|
|
Quoted strings now can contain unicode characters encoded using
|
|
\u.... , where .... are four hex digits e.g. "\u03b1\u03b2\u3b3"
|
|
for the Greek letters "αβγ" (alpha, beta, gamma). When reading
|
|
the string, newLISP will translate it to UTF8 encoded characters
|
|
on UTF8 enabled versions of newLISP.
|
|
|
|
More work on 'map': speedup now also on smaller lists.
|
|
|
|
Avoid redundant cellCopy() when cell already on result stack
|
|
(needed change in array initialization).
|
|
|
|
Fixed and error message in gs:save-sequence
|
|
|
|
10.3.3 stable maintenance release September 20th, 2011
|
|
Manual updates.
|
|
|
|
On MS Windows newlisp.dll now lives in windows/system32 or whatever
|
|
the main 32bit DLL directory is on the specific Windows platform,
|
|
chosen by the $SYSDIR variable in the NSIS installer.
|
|
|
|
Fixed broken memory sharing for date sizes > 4084 bytes.
|
|
This affected 'spawn' and 'share' for memory transfers > 4084 bytes.
|
|
Also inlined stream writing for this fucntion again for better
|
|
memory cleanup.
|
|
|
|
Share file in tmp is now deleted when unmapping under UNIX. Unmapping is
|
|
not available in Windows but in all OS a (share mymem nil) will
|
|
always delete any existing tmp file for this share.
|
|
|
|
When in trace/debug mode and an error occurs in a function call
|
|
inside a 'catch' statement, an error message will now be printed,
|
|
Processing will continue as before with the offending function
|
|
returning either 0 or nil depending on the nature of the function.
|
|
This allows to inspect the current state of the program.
|
|
|
|
2 new example programs in newlisp-10.3.3/examples/ :
|
|
Script 'async' show how to do asynchronous web page retrieval.
|
|
Script 'query' shows how to retrieve 20 pages in parallel spawned
|
|
child processes.
|
|
|
|
Fixed return value from callback funtions when 64-bit integers
|
|
are returned.
|
|
|
|
From newLISP library a new function "newlispCallback" can be imported
|
|
to register callback functions (see manual for details)
|
|
|
|
-l -L now always create a logfile if it doesn't exist. Evaluation
|
|
results prepended with "-> ". [cmd],[/cmd] are not logged
|
|
|
|
Save memory in 'string' and 'format'.
|
|
|
|
10.3.4
|
|
Reworked 'send'/'receive' message API is multiple times faster and has
|
|
more consistent performance on different platforms. Better on BSDs
|
|
than on Linux. The channel for each child is now a dual read/write
|
|
message queue. In previous version only one message could be written
|
|
to the queue with send, now mutiple message can be send on the same
|
|
channel and retrieved on the receiving side with multiple 'receive'
|
|
until returning 'nil'.
|
|
|
|
In the new syntax of 'receive' the <message> parameter is optional:
|
|
|
|
(receive <pid>) ; returns the message or nil
|
|
(receive <pid> <message>) ; returns true or nil
|
|
|
|
Both 'send' and 'receive' now have syntax to return a list of all
|
|
ready child channels using either (send) to get a list of child
|
|
pid's ready to receive data or (receive) to get a list od child
|
|
pid's ready to be read. This greatly speeds up asyncrounous
|
|
messaging, where multiple child processes, but not all, have sent
|
|
messages. Previously:
|
|
|
|
(dolist (p (sync)) (until (receive p msg))) ; (sync) -> child pids
|
|
|
|
Now using only a ready subset, 'receive' can be used non-blocking
|
|
and only a subset of all child pids is iterated through:
|
|
|
|
(dolist (p (receive)) (receive p msg))
|
|
|
|
Now, when a 'spawn'ed child process ends abormally the variable in the
|
|
spawn command will contain an error message and a result number,
|
|
e.g. '9' from a kill signal sent by an external process.
|
|
|
|
Fixed longstanding bug for list-mode 'net-select'. Now returns
|
|
socket numbers in the ready list not 0's.
|
|
|
|
Documention for the messaging API has been updated in the reference
|
|
manual and code patterns documents.
|
|
|
|
10.3.5
|
|
'invert' over-allocated memory
|
|
|
|
Fixed a crash bug in purgeSpawnList()
|
|
|
|
icmp6.h include for cygwin in nl-sock.c (thanks KOSH)
|
|
|
|
The creation of a communications channel between and parent process
|
|
and 'spawn'ed child processes for usage with the message API of
|
|
'send' and 'receive', is now optional:
|
|
|
|
(spawn <sym-variable> <child-process> [true])
|
|
|
|
If the'send' or 'receive' is used on the child process spawned, the
|
|
optional flag must be set to 'true'.
|
|
|
|
The fakes versions on 'spawn', 'sync' and 'abort' in Win32 have been
|
|
taken out.
|
|
|
|
The newLISP shell "newlisp-x.x.x/util/nls" now works on MS Windows too.
|
|
|
|
The link feature using util/link.lsp did no works with 64-bit versions
|
|
of newLISP.
|
|
|
|
In the MinGW compile of nl-sock.c the include file wspapi.h has been
|
|
replaced with ws2spi.h. This file is part of the normal MinGW install.
|
|
|
|
newlisp.dll now lives in NEWLISPDIR again as it did before 10.3.3
|
|
|
|
10.3.6 development release November 18th, 2011
|
|
|
|
Speedup of string stream conversion for 'format', 'string'.
|
|
|
|
A bug fix in 'spawn' when aborting child processes
|
|
|
|
Preparations for expanded FFI (grep for FFI in all files)
|
|
|
|
10.3.7 development release
|
|
|
|
Fix in printing FFI primitives (FFI is disabled by default)
|
|
|
|
Updated newlispdoc now all tags (including custom) are title-case'ed
|
|
|
|
Simple libffi calls working on Mac OSX, UBUNTU Linux (Intel) and Win32
|
|
three (and more) new ffi makfiles:
|
|
makefile_darwin_utf8_ffi # std OSX install has libs and headers
|
|
makefile_linux_utf8_ffi # must install package libffi-dev
|
|
makefile_mingw_ffi # must install libffi.a library for build
|
|
|
|
New qa-specific-tests/qa-ffi for ffi API testing
|
|
|
|
The new ffi extension work with the existing 'import' functon:
|
|
(import "libc.dylib" "atof" "double" "char*")
|
|
(atof "123.456") => 123.456
|
|
|
|
No "cdecl" or "stdcall" mustbe specified. The parameter after
|
|
the function name is the return type. The remaining parameters
|
|
are the function arguments.
|
|
|
|
As before, the imported function can be renamed:
|
|
|
|
(set 'strtof (import "libc.dylib" "atof" "double" "char*"))
|
|
(strtof "123.456") => 123.456
|
|
|
|
The following types are implemented for LP64, LLP64 and ILP32
|
|
|
|
"byte"
|
|
"char"
|
|
"short int"
|
|
"unsigned short int"
|
|
"unsigned int"
|
|
"int"
|
|
"long long"
|
|
"float"
|
|
"double"
|
|
"char*"
|
|
"void*"
|
|
|
|
For pointer return values "char*" and "void*", the address
|
|
is returned as a number. Use 'get-string' or 'unpack' to retrieve
|
|
contents. This method allows returning binary info. THIS IS CHANGED
|
|
IN 10.3.9 where "char*" returns a string directly and "void*" a number.
|
|
|
|
10.3.8
|
|
Make sure FFIMPORT struct memory gets freed when doing multiple
|
|
'import' of the same function or deleting the func symbol.
|
|
|
|
When using 'configure' and 'make' FFI will be chosen by
|
|
default on Mac OSX, Linux and Windows (MinGW)
|
|
|
|
Both "char*" and "void*" accept either a newLISP string buffer or an
|
|
address number as input. On return "char*" will return a newLISP
|
|
string buffer and "void*" will return an address number.
|
|
|
|
Comprehensive qa-specific-tests/qa-ffitest compiles util/ffitest.c
|
|
on the current platform then tests all data types.
|
|
|
|
Now ffi checks for nummber of arguments matching call pattern.
|
|
|
|
The opengl-demo-ffi.lsp now runs on both 32-bit and 64-bit newLISP
|
|
and libraries. On Windows glut32.dll is required. On Mac OSX everything
|
|
is installed by default.
|
|
|
|
ffi callback (ffi closure) working now on Mac OS X, Win32 and UBUNTU Linux
|
|
with standard installed libraries. Only for compiling/linking
|
|
libfffi-dev is necessary on UBUNTU linux.
|
|
|
|
The extended 'callback' API will not work on 64-bit Mac OSX newLISP,
|
|
but there is no problem to mix extended 'import' and simple 'callback' API
|
|
(see examples/opengl-demo.lsp)
|
|
|
|
Bit 11 for 0x400 in the last field of 'sys-info' is set for extended ffi
|
|
enabled versions requiring ffilib.
|
|
(not (zero? (& 0x400 (sys-info -1)))) => true for FFI support
|
|
|
|
Avoid passing on list or string references in primitives taking strings
|
|
or lists but creating new objects. This caused an error when doing
|
|
(inc (char str)) when str is protected. symbolCheck = NULL only neccessary
|
|
if not set to NULL by previous evaluateExprtession() to non-string/list.
|
|
Fixed on selected primitives.
|
|
|
|
qa-ffi and qa-libffi are now part of 'make testall'. They will not be
|
|
executed on versions not compiled for libffi based FFI.
|
|
|
|
10.3.9 development release December 21st 2011
|
|
'struct' function for extended FFI usage now working for 32 and 64 bit
|
|
(struct 'foo "char" "int" "short int")
|
|
Foo can now be used as a data type in the extended FFI API:
|
|
(import "thelib" "afunc" "foo" "foo") ; takes ans returns a struct foo
|
|
(unpack foo (afunc (pack foo 1 2 3))) => returns a list with 3 numbers
|
|
The additional syntax forms of 'pack' and 'unpack' take care for packing
|
|
and unpacking wirth the correct number of pad bytes to make align
|
|
structures on different Architectures.
|
|
|
|
See qa-special-tests/qa-libffi for an example.
|
|
|
|
Accept data lists in struct packing just like in traditional 'pack':
|
|
(struct 'pair "int" "int") => pair
|
|
(pack pair 1 2) => "\001\000\000\000\002\000\000\000"
|
|
(pack pair '(1 2)) => "\001\000\000\000\002\000\000\000"
|
|
|
|
Nested structure now can be packed:
|
|
(struct 'pair "char" "char") => pair
|
|
(struct 'comp "pair" "short int") => comp
|
|
(pack comp (pack pair 1 2) 3) => "\001\002\003\000"
|
|
|
|
Sub-structures are unpacked manually (may be changed):
|
|
(unpack comp (pack comp (pack pair 1 2) 3)) => ("\001\002" 3)
|
|
(set 'p (first (unpack comp (pack comp (pack pair 1 2) 3))))
|
|
(unpack pair p) => (1 2)
|
|
|
|
Because of memory management issues with cells in FFI symbols
|
|
extended ffi functions, structs and callbacks can only be defined
|
|
once. Subsequent definitions return nil and the existing definition
|
|
stays untouched.
|
|
|
|
Miscellanous fixes for 64-bit newLISP and ffilib usage.
|
|
|
|
Added custom ffi_type ffi_type_charpointer for displayable strings
|
|
now 'unpack' unpacks strings for "char*", not address numbers.
|
|
|
|
On Mac OSX 64-bits extended callback (ffi closure) does now work.
|
|
|
|
SHA256 crypto algorithm has been added to the module crypto.lsp.
|
|
Thanks to Marc Hildman for this contribution.
|
|
|
|
10.3.10 Development release Janaury 10th, 2012
|
|
Repeating ffi 'callback' with the same symbol will just return the old
|
|
address but not redefine the callback or return nil (as in 10.3.9).
|
|
|
|
examples/opengl-demo-ffi.lsp now also working with extended callback API
|
|
on 32-bit and 64-bit.
|
|
|
|
Huge speed improvement in 'read-line' with file handle parameter,
|
|
now as fast as STDIN. For file and pipe operations.
|
|
|
|
'struct's returned by the extended FFI will now be unpacked automatically.
|
|
Nested structures will be unpacked recursively too:
|
|
|
|
(struct 'pair "char" "char") -> pair
|
|
(struct 'comp "pair" "int") => comp
|
|
(pack comp (pack pair 1 2) 3) => "\001\002\000\000\003\000\000\000"
|
|
(unpack comp "\001\002\000\000\003\000\000\000") => ((1 2) 3)
|
|
|
|
Imported functions can now be default functors:
|
|
(define myprintf:myprintf (import "libc.dylib" "printf"))
|
|
(myprintf "%s %d" "hello world" 123)
|
|
|
|
All makefile_mingwdll* tweaked for MinGW gcc 4.6.2. But binaries are still
|
|
delivered compiled on gcc 4.4.0 and made on Windows XP SP2, run fine on
|
|
Windows 7. 10.3.6 to 10.3.9 had newlisp.dll compiled for cdecl now in
|
|
10.3.10 newlisp.dll calling conventations are back to stdcall.
|
|
|
|
10.4.0 stable release February 14th, 2012
|
|
UCT offset minutes as reported by the 'now' function now have reversed the
|
|
sign conform to ISO 8601. Positive for locations east of UCT and negative
|
|
for locations west of the UCT meridian (formerly GMT). Days of the year are
|
|
now reported from 1 - 365 (366 in leap years) instead of starting with
|
|
offset 0.
|
|
|
|
'read-char' w/o file handle reads from the current I/O device.
|
|
|
|
New version Guiserver 1.45 avoids error loops when midi system is unavailable.
|
|
|
|
In 'unify' the underscore symbol '_' matches any atom or list or variable.
|
|
|
|
Two new make files for the Raspberry PI development VM from:
|
|
http://russelldavis.org/2012/01/20/new-raspberry-pi-development-vm-v0-2/
|
|
These makefikes don't need the readline library, although it could be installed
|
|
as shown here:
|
|
http://russelldavis.org/2012/01/23/building-newlisp-for-the-raspberry-pi-using-the-development-vm/
|
|
|
|
newlisp.dll now also on Winsock version 2.2 (like the main executable since 10.2.10)
|
|
|
|
10.4.1 Development release April 3rd, 2012
|
|
The day-of-year value in 'date-list' now also starts with 1, like in 'now'.
|
|
|
|
Added CELL_IMPORT_FFI to various output functions (source, save etc.).
|
|
|
|
Added UTF-8 meta tag to newlispdoc HTML output.
|
|
|
|
Protect internally variable $x used in 'curry' and predefined 'module'.
|
|
|
|
When extended 'import' FFI is compiled, show 'libffi' in banner.
|
|
|
|
Added new function 'union' (composed of (unique (append ...))).
|
|
|
|
New functions 'odd?' and 'even?'
|
|
|
|
Fixed unix.lsp for new overwrite protection of imported symbols in ffilib version
|
|
|
|
An additional 'true' flag in (char str idx true) returns the byte value instead
|
|
of the UTF-8 character value at index idx in the string.
|
|
|
|
Handle probablilities less 0.5 in crit-z.
|
|
|
|
New 'prob-t', 'crit-t', 'prob-f', 'crit-f' for Student's t and F statistic.
|
|
'crit-chi2' redone for extreme values. All report small, significant
|
|
one-tailed probabilities for higher values of t, or F.
|
|
|
|
Adjustments in 'normal' for better fit.
|
|
|
|
Optional 'true' flag in 'file?' lets it return filename string.
|
|
|
|
Windows version should cut off trailing CR-LFs in string passed to 'command-event'.
|
|
|
|
10.4.2 stable maintenance release May 2nd, 2012
|
|
In extended ffi "char*" will now only accept strings not integer addresses to
|
|
string buffers. For passing integer addresses use "void*" - internally libffi
|
|
treats them as the same, but the new approach gives automatic type-checking
|
|
at the newLISP level without causing a segfault. Already for return values
|
|
"char*" always returns a newLISP string and "void*" an integer address.
|
|
|
|
A fix for 'pack' when packing structures made with 'struct' in 64-bit newLISP.
|
|
|
|
In 'import' for OSX/Linux/Unix allow libraries to be opened without importing
|
|
functions. This is necessary if an imported library refers to another one, e.g.:
|
|
(import "libgslcblas.dylib")
|
|
|
|
New module gsl.lsp with SVD, QR and Cholesky decompositions.
|
|
|
|
Added 'corr', 't-test' and 'stats' statistical functions.
|
|
|
|
New standard module gsl.lsp for SDV, QR and Cholesky decomp. and solver routines.
|
|
|
|
Updated plot.lsp with line and XY plot now a standard module.
|
|
|
|
10.4.3 stable maintenance release May 7th, 2012
|
|
(seek <file-handle>) after (read-line <file-handle>) was broken in 10.4.0 when
|
|
introducing faster file stream reading on 'read-line' and file closing could
|
|
leak memory.
|
|
|
|
10.4.4 Stable Maintenance Release September 15th, 2012
|
|
Eliminated getFloatFromCell() and replaced by getDirectFloat() in nl-math.c
|
|
|
|
Fixed error message for missing [/text] -tag when loading source from file.
|
|
|
|
read-file, write-file, append-file, delete-file when used with http:// URLs will
|
|
now return nil under error conditions instead of throwing an error. This is
|
|
consistent with error behavior on local files. When nil is returned, net-error
|
|
gives more error information. For remote server-side errors on URLs the server
|
|
HTTP error page is returned.
|
|
|
|
Check for UTF8 string validity in functions which are UTF8 sensitive.
|
|
An error message "invalid UTF8 string" is issued for invalid UTF8 strings.
|
|
|
|
Several - and continuing - manual updates, most of them also going into current
|
|
online version of manual.
|
|
|
|
guiserver.jar 1.47 fixes getting text from an empty gs:text-field.
|
|
|
|
Binary number format can be used with either 0b or 0B as prefix to up to 64
|
|
1's and 0's, e.g. 0b101010 for the number 42.
|
|
|
|
A 'true' flag as optional parameter in base64-enc will force the empty string
|
|
to be translated as "" instead of "====". Both cases translate correctly to
|
|
the empty string when fed into base64-dec.
|
|
|
|
Fixed a result stack overflow problem on callback's.
|
|
|
|
On OSX Mountain Lion 10.8.0 compiles also using clang instead of gcc.
|
|
|
|
|
|
10.4.5 Maintenance Release, November 21st, 2012
|
|
Doc changes.
|
|
|
|
Avoid overrun of invalid utf8 strings in utf8_wlen() in nl-utf8.c and
|
|
new error message "invalid UTF8 string". Used by several string functions
|
|
and indexing.
|
|
|
|
'process' on Windows now returns a real pid (process id) as on UNIX. Before
|
|
a Windows specific process handle was returned - thanks Johu -
|
|
|
|
Fix for loading .init.lsp on OpenBSD.
|
|
|
|
cgi.lsp now can handle mutipart form data in POST requests - thanks Unya -
|
|
|
|
Additions to postgres.lsp - thanks Unya -
|
|
|
|
Fixed a bug in 'ref' when multiple nested matching expressions.
|
|
|
|
Fixed a bug when using 'float' on list members (took the next element as
|
|
conversion default).
|
|
|
|
Added comments in newlisp.h and makefile_linuxLP64_utf8_ffi for CentOS 6.
|
|
|
|
Added makefile_linuxLP64_redhat_utf8_ffi and makefile_linux_redhat_utf8_ffi.
|
|
Work Centos and Fedora. Use ./configure to configure these makefiles for correct
|
|
libffi version. Thanks to Ivan Ribeiro for this contribution.
|
|
|
|
10.4.6 development version released on 2013-02-05
|
|
When using option 8 in xml-parse (translation of XML tags into newLISP symbols),
|
|
then the colon : in XML tags with namespace part, will be translated into a dot.
|
|
|
|
macro.lsp now works when defining default functors as macros.
|
|
|
|
A fix in cgi.lsp for receiving large POST data.
|
|
|
|
Fix for newlisp-edit.lsp for usage in OSX homebrew distribution.
|
|
|
|
In 'file?' the 'true' flag not only causes the filename to be returned but now
|
|
also implies that the filename is not a directory, else 'nil' is returned.
|
|
|
|
Crtl-D in Unix now will emit a line feed before exiting.
|
|
|
|
Added 'make android_dist' and 'make android_dist_utf8' for making
|
|
newlisp-ndk-x.x.x.tgz and newlisp-ndk-utf8-x.x.x.tgz package.
|
|
|
|
A fix in sort when the sorting function is generated at run-time.
|
|
|
|
On LINUX and BSD when compiled with GNU libreadline support a matching paren will
|
|
blink on the simple or multiple newLISP command line. For this the following line:
|
|
set blink-matching-paren on
|
|
should be put into Bash .inputrc
|
|
|
|
When making for Linux Android, 'share' and 'spawn' now work for data > 4072 bytes,
|
|
when a /data/tmp directory is created on the Android device.
|
|
|
|
This /data/tmp directory must also be present for CGI when running newLISP HTTP
|
|
server on Android.
|
|
|
|
Lower 4 bits of (sys-info -1) on Android is 11 but 'ostype' is "Linux".
|
|
|
|
JSON parser function (json-parse <string>) translates a JSON formatted string
|
|
into a S-expression. (json-error) returns error information of the form:
|
|
(<text str> <int-position>) when (json-parse <string>) returned 'nil'.
|
|
ECMA-262 compliant as defined at http://json.org
|
|
|
|
big/small -endian initilaization wasn't happening in LIBRARY compile flavor,
|
|
always assumed big-endian.
|
|
|
|
The module files: cgi.lsp, macro.lsp, plot.lsp and sqlite3.lsp have been updated.
|
|
|
|
Added error checking on net-select mode parameter.
|
|
|
|
Server mode now sets the REMOTE_ADDR environment variable to the IP-string of
|
|
the connecting client.
|
|
|
|
Last cell speed optimization for lists made with 'append', 'sequence', series
|
|
and 'rotate'.
|
|
|
|
10.4.7
|
|
Eliminate unused JSON error message.
|
|
|
|
Elminated usage of $0 in replace on lists (no regular expressions). The count
|
|
of replacements now is contained in the new $count system var, not $0. The usage
|
|
of $0 - $15 now is strictly for regular expressions. This also speeds up replace.
|
|
|
|
read-expr now uses $count instead of $0 for the number of characters processed.
|
|
|
|
Eliminated undocumented usage of $0 for found elements in find-all on lists.
|
|
Only $it is used. $0 only on find-all on strings with regular expressions.
|
|
The system variable $count is updated for all forms of find-all, ref-all and
|
|
set-ref-all.
|
|
|
|
Link feature now built in with comandline flag -x for all OS flavors:
|
|
newlisp -x <source-file> <executable-file>
|
|
The file util/link.lsp is not required anymore but has been included and
|
|
adapted to changes for the -x linkage. The file illustrates the internals
|
|
of the linkage process when using the -x option.
|
|
|
|
An additional true flag in the real-path function allows finding the executable
|
|
path of executables - similar to the "which" utility on UNIX. This is a by-
|
|
product of fixing the link.lsp feature for UNIX. The additional flag works
|
|
on all platforms. 'real-path' on Windows and BSD now also veryfies that path
|
|
and file are valid, as it already did on non-BSD Unix (OSX, Linux).
|
|
|
|
Enforce MAX_SYMBOL for tags in xml-parse and symbol creation using sym.
|
|
|
|
Security fixes for strncpy and strncat.
|
|
|
|
Windows CGI server mode was broken in development version 10.4.6 (isDir()).
|
|
|
|
Preparation for 64-bit Windows (in early summer).
|
|
|
|
10.4.8
|
|
Cleanup of the factor function.
|
|
|
|
Like date-parse, date-value will produce negative values for dates before 1970-1-1
|
|
til 1901-12-14.
|
|
|
|
The function 'flat' now can take an optioal depth parameter to limit flattening
|
|
a list up to certain level: (flat <list> [<level>])
|
|
|
|
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) ) => (1 2 3 4 5 6 7 8 9 10)
|
|
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) 1) => (1 2 3 4 (5 6) 7 8 (9 10))
|
|
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) 2) => (1 2 3 4 5 6 7 8 9 10)
|
|
|
|
A fix for 'extend' when passing wrong type to unitialized symbol.
|
|
|
|
A fix in the parser to accept -.9 as -0.9 or +.9 as +0.9
|
|
|
|
=, +, -, *, /, %, ++, --, >, <, <=, >=, != operators and the functions 'abs',
|
|
'even?', 'odd?', 'length', 'number?' and 'zero?' are all working on big-integers
|
|
of unlimited size. 'float' and 'int' convert bigints into double floats and
|
|
64-bit integers and the function 'bigint' converts integers and floats to big
|
|
integers. See the section "Big integer, unlimited precision arithmetik" in
|
|
chapter 8. of the Users Manual for more information.
|
|
|
|
Extended commandline buffer to 1024 bytes.
|
|
|
|
The "debug" option in: (get-url "http://newlisp.org" "header debug") will now also
|
|
output the status header line of the server response in the console.
|
|
|
|
10.5.0 Stable Release May 21st, 2013
|
|
Further speed improvements on big integer multiplication and division/modulus.
|
|
|
|
Check for division by zero in big integer division/modulus.
|
|
|
|
Memory fix for ++, -- on big integers.
|
|
|
|
The OSX Intel version is now 64-bit by default.
|
|
|
|
10.5.1 development release Jun 4th, 2013
|
|
bigint will take mal-formed integers:
|
|
(bigint "hello") -> nil
|
|
(bigint "123hello") -> 123L
|
|
(bigint "+123hello") -> 123L
|
|
(bigint "-123hello") -> -123L
|
|
(bigint "123.456") -> 123L
|
|
but should not be used on string of scientific notation, it only converts the mantissa
|
|
(bigint "123.456e10" -> 123L
|
|
|
|
Fixed division when aligned or not aligned embedded bigint 0s (9 zeros).
|
|
|
|
Fixed more big integer division problems and added more tests to qa-bigint.
|
|
|
|
Compiler optimizations are now supressed in part of the big integer
|
|
division code to make it work on Linux. Does not affect performance.
|
|
|
|
10.5.2 development release June 26th, 2013
|
|
Fix for Java 7u21 in guisserver.jar, guiserver.lsp and newlisp-edit.
|
|
function gs:run-shell now takes separate command and args parameters.
|
|
|
|
New functions 'kmeans-train' and 'kmeans-query' for cluster analysis. The
|
|
Function 'kmeans-train' allows starting centroids to be either generated
|
|
randomly or be passed as an extra parameter. This allows clustering like
|
|
in Kmeans++ or other advanced schemes of pre-calculated start centroids.
|
|
When pre-calculated centroids are given, they are allowed to have less
|
|
columns, thus forcing kmeans clustering with less columns. This allows
|
|
to pre- or post-label the data set by including cluster-membership labels
|
|
in the last column.
|
|
|
|
(kmeans-train matrix-data int-k context [matrix-centroids])
|
|
return => list of inner SSQs for all iterations
|
|
|
|
matrix-data -> n rows by m columns (list or array)
|
|
int-k -> number of desired clusters
|
|
context -> new or existing context for results
|
|
matrix-centroids -> optional k * m starting centroids (list or array)
|
|
|
|
ctx:centroids -> k * m matrix of k centroids
|
|
ctx:deviations -> list of average intra cluster deviations = sqrt(ssq-cluster/n-cluster)
|
|
ctx:clusters -> list with k sublists each containing indices into data
|
|
ctx:labels -> list of n cluster labels, one for each data record
|
|
|
|
(kmeans-query list-data centroids)
|
|
return => list of k Eucledian distances from the k centroids
|
|
|
|
list-data -> data record to be classified
|
|
centroids -> result in namespace from previous kmeans-train or any other
|
|
list of data records to calculate Eucledian distances
|
|
|
|
|
|
'kmeans-query' can also be used for KNN (K Nearest Neighbour) analysis,
|
|
as it calculates the Eucledean distances for any matrix given in
|
|
the second argument, not only centroids, but e.g. the original
|
|
dataset. If the data-set is pre-labeled, then list-data has less
|
|
columns forcing to not include the label in analysis.
|
|
|
|
Fixed handling escaped " (quote) in JSON strings.
|
|
|
|
|
|
10.5.3 stable release July 10th, 2013
|
|
|
|
fixed escaping of back slashes in json-parse
|
|
|
|
file nl-xml.c renamed to nl-xml-json.c and makefiles changed accordingly
|
|
|
|
refactored nl-matrix.c/multiply() to avoid memory leak on wrong parameters
|
|
|
|
|
|
10.5.4 stable release October 1st, 2013
|
|
|
|
3.7 newlispdoc cleanup ";; *" regex
|
|
|
|
New FFI ffi.h include directory in makefile_linux* when installing libffi
|
|
|
|
Fix for last list element optimization in push, pop and pop-assoc when
|
|
popping and inserting last element
|
|
|
|
Accessing a deleted context will never hang but give an error message
|
|
|
|
Some changes in nl-filesys.c for AIX and new makefile for AIX ILP32
|
|
|
|
On Windows: a fix for correctly closing logfiles initiated by newlisp -l or
|
|
newlisp -L and for closing files created by the HTTP PUT operation.
|
|
|
|
Two sample 't-test' when variances are different (independent samples) with
|
|
new syntax:
|
|
(t-test <list-vector-A> <list-vector-B> <float-probabilty>)
|
|
When <float-probabilty> is specified, an internal F-test for variance
|
|
equality in data A and B is performed. If the probablity of F is
|
|
smaller than <float-probabilty>, then Welch's variant of the t-test for
|
|
independent samples is performed. Using 1.0 <float-probabilty>, Welch
|
|
can be forced even when variances are not significantly different.
|
|
|
|
One sample 't-test' using new syntax pattern:
|
|
(t-test <list-vector-data> <float-value>)
|
|
Gives the two-tailed probability that observed mean is differs from <float-value>
|
|
Instead of sdev for second list-vector the standard error for the observed mean
|
|
is reported.
|
|
|
|
Some cleanup and changes in scripts (makefiles) for binary installers
|
|
|
|
|
|
10.5.5 2013 November 20th, development release
|
|
Allow trailing , (comma) in JSON arrays. The new JSON ECMA-404 seems not
|
|
to allow it but the JavaScript standard ECMA-262 and many browsers do.
|
|
|
|
Added makefile_linux_openwrt for for TP-link TL-WR703N travel router
|
|
contributed by Dexter.
|
|
|
|
In arithmetik big integer operations + - * / % more than two operands
|
|
are allowed as in normal precision integer operations.
|
|
|
|
On Windows support UNIX conventions for formatting 64-bit integers.
|
|
I.e.: %lld %llu %llx %llX additionally to %I64d %I64u %I64x %I64X
|
|
|
|
Added ++, -- to qa-bigint. Fixed sign change on second operand of
|
|
bigint -- when second operand was negative.
|
|
|
|
Some cleanup in Cilk API when releasing resources.
|
|
|
|
The 'gcd' function now also works on big integers and > 2 operands.
|
|
|
|
On UBUNTU Linux decimal numbers can be formatted using a GNU extension
|
|
in libc, e.g: (format "%'d" 12345) => 12,345
|
|
The optional ' (single quote) after the % character causes thousands
|
|
to be separated with the appropiate character for the current locale.
|
|
|
|
Fixed a cell leak introduced in 10.5.5 when deleting contexts.
|
|
|
|
The default pretty-print float setting has been changed to "%1.15g".
|
|
|
|
'reset' now also cancels command line parameter processing.
|
|
|
|
A fix in 'round' when number is exacty 0.5.
|
|
|
|
'map', 'apply', 'stats', 'corr', 't-test' now also can take arrays
|
|
|
|
'bayes-query' with Fisher's Chi2 method calculated wrong probabilities
|
|
when training in more than two categories. When training in two
|
|
categories the result probabilities were swapped - reporting the
|
|
probability for the second category first. 'bayes-query' calculating
|
|
probabilities with the Chain Bayesian method - using the true flag -
|
|
was not affected.
|
|
|
|
Many documentation changes and corrections.
|
|
|
|
10.5.6 December 10th, 2013, development release
|
|
Since OSX 10.9 Maverick (format "%'d" 12345) => 12,345 will work too.
|
|
Will not work on any locale but works on en_US.UTF-8.
|
|
|
|
Fixed 'apply' for arrays introduced in 10.5.5 for a cell/memory leak.
|
|
|
|
When making hash trees using the predefined context 'Tree',
|
|
the default symbol in the new context is protected as is 'Tree:Tree'.
|
|
Default symbols in hash trees must be 'nil' in order for the hash
|
|
statement syntax for namespaces to work.
|
|
|
|
When copying symbols from a source context to a target contest using 'new'
|
|
or 'def-new', the 'protected?' property is copied too.
|
|
|
|
An empty list as index vector for a list or array yields the original
|
|
list or array as return value:
|
|
(set 'L '(1 2 (3 4)))
|
|
(L '()) => (1 2 (3 4))
|
|
(nth '() L) => (1 2 (3 4))
|
|
|
|
Many document changes, additions and corrections.
|
|
|
|
'int' can convert binarys numbers like (int "0b11111") => 31
|
|
This format is recognized by the code reader/loader since v.10.4.4.
|
|
|
|
Integers are accepted as hash keys. This allows creating sparse vectors:
|
|
(new Tree 'V)
|
|
(V 123 "hello")
|
|
(V 123) => "hello"
|
|
|
|
'reverse' can be used on arrays.
|
|
|
|
Anaphoric system variable $it is now set to the value of the conditional
|
|
expression in 'if'.
|
|
|
|
Speed improvements in evaluateExpression(). For this The -pendatic option
|
|
has been turned off in Linux to avoid ISO C90 mixed declaration warnings.
|
|
|
|
'length' on integers will return the number of digits, just like it already
|
|
does on bigint numbers, on floats returns the number of decimal digits before
|
|
the decimal separator.
|
|
|
|
|
|
10.5.7
|
|
Fixes for deprecated CYGWIN compile. See also makefile_cygwin for more info.
|
|
|
|
Clear potential error condition when doing 'import'.
|
|
|
|
In guiserver.jar: When adding columns with empty string headers, this will not
|
|
any more put the column number as header. This allows to add columns to
|
|
headerless tables, as possible when supplying empty string headers in the
|
|
initial gs:table statement.
|
|
|
|
Debugger will now always highlight the correct expression, not highlight
|
|
the first one if multiple instances exist.
|
|
|
|
Eliminated strncat() for BSD and better speed with memcpy() in most places.
|
|
|
|
Delay signal-behavior change in spawn after getting parameters. Makes better
|
|
error recovery.
|
|
|
|
In guiserver.jar: New table functions. Thanks to Ferry de Bruin.
|
|
gs:table-remove-row, gs:table-set-column-name and gs:table-set-row-count.
|
|
To avoid API naming confusions, the naming of old gs:table-set-row-number
|
|
is deprecated and should be called as gs:table-show-row-number.
|
|
The old naming will continue to work. Three new optional parameters for
|
|
'gs:scroll-pane' can specify colun header, row headers and a widget
|
|
for the top left corner of a table used in the scroll pane.
|
|
|
|
'find-all' should return an empty list as documented when nothing is found
|
|
on strings too.
|
|
|
|
Some renaming of functions and constants for better code readability and
|
|
some small refactoring in several files.
|
|
|
|
qa-bench has been redone with changes for Emscripten compiled newLISP.
|
|
Now calibrates for comparison with Mac OSX 9.1 on 2.3GHz Intel Core i5.
|
|
|
|
Fixed a crash bug when colon operator has missing or wrong-type args
|
|
on 64-bit compiles.
|
|
|
|
newLISP compiled to JavaSript with Emscripten
|
|
---------------------------------------------
|
|
Added makefile_emscripten_lib_utf8. For this
|
|
Must download and install the Emscripten-SDK from here:
|
|
https://github.com/kripken/emscripten/wiki/Emscripten-SDK
|
|
Tested on OSX 10.9 installing emsdk-portable.tar.gz v.1.7.8
|
|
|
|
The newlisp-js-lib.js is made using makefile_emscripten_lib_utf8.
|
|
|
|
The new function 'eval-string-js' takes a JavaSript string.
|
|
New 'display-html' can either replace the current page or display
|
|
a page in a new tab of the host browser. 'display-html' must be
|
|
defined in Emscripten appplication .html
|
|
|
|
Some functions (filter, index, clean, exists, forl-all) will not show
|
|
error messages under certain circumstanmces in the monitor, although
|
|
newLISP behaves correctly throwing the exception (setjmp/longjmp), they
|
|
just don't reach the Emscripten console (log). In this case, if the error
|
|
is not 'catch'ed newLISP exits without advising why. This problem goes away
|
|
when compiling with Emscriptem without any optimizations, but slows
|
|
everything down by a factor of 40 to 50. Normal performance is around
|
|
1.5 of native on Mac OSX when excluding all time/date related functions
|
|
and a few other outliers. Including outliers about 2.65.
|
|
See also here: https://github.com/kripken/emscripten/issues/810
|
|
(volatile declaration did not help)
|
|
|
|
All file and directory functions work (almost all did all the time),
|
|
but changes are lost after leaving the page or reloading the page.
|
|
Storage is 'session storage' only. No URLs are in allowed in file
|
|
functions as is on native compiled newLISP.
|
|
|
|
As editor, CodeMirror from codemirror.net is used and mode/newlisp.js
|
|
was created for syntax high-lighting.
|
|
|
|
10.5.8
|
|
'macro' is now a built-in primitive function working exactly as described
|
|
in the macro.lsp module, which is now obsolete. Macros cannot be redefined
|
|
using 'macro'. Macros can be nested. A symbol used as a macro can only be
|
|
used as a macro, even if changing the definition of it.
|
|
|
|
Another speed improvement for 'read-line' on file handles (the first speed
|
|
improvement happend in 10.3.10).
|
|
|
|
10.6.0
|
|
Eliminated emscripten-lib.c, gets handled by unix-lib.c.
|
|
|
|
A fix for 'file?' and 'directory?' predicates when applied to root
|
|
directories on Windows.
|
|
|
|
Updated examples/udp-server.lsp to nmake it work on Windows.
|
|
|
|
10.6.1 Development release September 16th, 2014
|
|
Added typedefs for CPPFunction and CPFuncition to compile on UBUNTU 14.04
|
|
with libreadline v.6.1.
|
|
|
|
Make qa-bigint and qa-bench work for UTF8 versions on all platform locales
|
|
by forcing the "C" "." locale at the beginning.
|
|
|
|
Report the result of the 'flt' function on all platforms as an unsigned
|
|
integer. Previously on 32bit newLISP versions a signed integer was
|
|
reported and an unsigned integer on 64bit versions.
|
|
|
|
'rotate' on (copy str) corrupted memory when using optimized copyCell().
|
|
|
|
Delay cell deletion for indexed strings if not referenced by a symbol;
|
|
already happens for lists.
|
|
|
|
In 'regex' in utf8 versions and when specifying the PCRE_UTF8 parameter
|
|
- 2048 or "u" - give offset and length in number utf8 characters:
|
|
(regex "Ω" "ΨΩ") => ("Ω" 2 2)
|
|
(regex "Ω" "ΨΩ" "u") => ("Ω" 1 1)
|
|
(regex "Ω" "ΨΩ" 2048) => ("Ω" 1 1)
|
|
|
|
A second call pattern for 'copy'
|
|
(copy <s-expr>) ; <- original syntax
|
|
(copy <int-addr> true) ; <- new syntax
|
|
The new syntax marked by the true 'flag' takes a memory address of a cell
|
|
and copies it. The following expressions are equivalent:
|
|
(copy cell) <=> (copy (first (dump cell)) true)
|
|
|
|
|
|
'get-string' now can take one or two additional optional parameters:
|
|
(get-string <address>) ; gets an zero terminated ASCII or UTF-8 string
|
|
(get-string <address> <bytes>) ; gets a buffer of <bytes> of binary data
|
|
(get-string <address> <max-bytes> <str-limit) ; reads to <str-limit> or max
|
|
|
|
The second pattern would work for UTF-32/UCS-4 this way:
|
|
|
|
(get-string <address> <max-bytes> "\000\000\000\000")
|
|
|
|
Any other string in <str-limit> can be specified to stop reading
|
|
|
|
If comparing with \000\000 or \000\000\000\000 comparison is aligned
|
|
to 2 or 4 byte boundary for specifying UCS-2 or UCS-4 string limits.
|
|
|
|
Highest bit of crc32 does should not get sign extended in 32-bit newLISP.
|
|
|
|
New function (collect <exp>) collects in a list while <exp> evaluates to
|
|
not nil:
|
|
(let (x 0) (collect (if (<= (inc x) 5) x))) => (1 2 3 4 5)
|
|
|
|
the int-option parameter in functions using regular expressiona can now be
|
|
a string for PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_EXTENDED
|
|
PCRE_UTF8, PRECOMPILED using the letters i,m,s,x,u,p.
|
|
example: (find "x.z" "abcX\nZ" "is") => 3
|
|
in functions: directory, ends-with, find, find-all, parse, regex, regex-comp,
|
|
replace, search and starts-with
|
|
|
|
The protected? function did not recognize macro symbols as protected.
|
|
|
|
Cleanup for 64-bit time_t on 32-bit Windows. Thanks Kosh!
|
|
|
|
The 'macro?' function also works on 'macro' symbols.
|
|
|
|
A wrong UDP option in net-connect and net-listen now throws an error.
|
|
|
|
Distribution packages for Linux are now with a newLISP executable compiled
|
|
for 64-bit.
|
|
|
|
In Emscripten v.1.22.0 compiled newLISP exception handling now works.
|
|
|
|
10.6.2 January 20, 2015
|
|
When parsing binary, hex, decimal, float and integer numbers, now up to
|
|
1000 digits are parsed when present. The rest will be read as new token(s).
|
|
Note that IEEE 754 64-bit doubles distinguish only up to 16 significant
|
|
digits. For big integers the 1000 limitation exists only when parseing
|
|
source. There is no limit when a result of big integers math exceeds 1000
|
|
digits.
|
|
|
|
Added makefile_bsdLP64_utf8_ffi
|
|
|
|
varPrintf() now always avoids printing format strings without args.
|
|
|
|
Improve libffi detection with newlisp-x.x.x/configure on RedHat Linux.
|
|
|
|
On BSDs if /usr/local/include/ffi.h is present the libffi versions gets
|
|
compiled when using: ./configure, which is used by default when just
|
|
issuing: make
|
|
|
|
Fixed multi-line shell mode on Windows when comments are present.
|
|
|
|
New definition of stuffFloat() to avoid compiler error in p_getFloat()
|
|
which needed inlining old stuffFloat(). Test using:
|
|
(get-float (address (get-long (address 17.4)))) => 17.4
|
|
|
|
Optional int-max-count parameter for the 'collect' primitive.
|
|
|
|
Cacheing crc-table in crc32 function for speedup in repeated use.
|
|
|
|
The default print floating point format changed from "%1.15g" to "%1.16g".
|
|
(can always be user changed using pretty-print function)
|
|
|
|
A third syntax of 'reset' allows resetting the maximum cell count without
|
|
restarting the system. The minimum is 4095. Trying to allocate more cells
|
|
than the minimum allocated makes the program exit.
|
|
|
|
When using 'json-parse', null now gets translated to a symbol 'null' in
|
|
newLISP not 'nil' as before. So all three JSON values true, false and null
|
|
keep their appearance in newLISP symbolic expressions.
|
|
|
|
Many small additions and changes to newlisp_manual.html.
|
|
|
|
10.6.3 July 8th, 2015 Development release
|
|
Starting with this version only use the TDM-GCC-64 toolchain, it
|
|
uses mingw32 and can compile for both, 32-bit and 64-bit.
|
|
|
|
On some Windows versions negative time value in 'date-list' for dates
|
|
before 1970-1-1 are not handled by gmtime() and could crash newLISP.
|
|
Now an error 44 is thrown when gmtime() cannot handle negative values.
|
|
|
|
Fixed 'det' and 'mat' for Ubuntu Linux when using wrong dimensions.
|
|
Tested on OSX, OpenBSD, FreeBSD Ubuntu Linux, Windows.
|
|
|
|
Changes in several files for compiling a 64-bit version for Windows
|
|
using mingw64. Thanks to Shigeru Kobayashi for doing this work.
|
|
|
|
Filenames win32xxx.c change to win-xxx.c.
|
|
|
|
The 'dolist' function now also works on arrays.
|
|
|
|
The 'net-eval' functions now return the result of the last expression
|
|
in the string argument, not the first.
|
|
(net-eval host port "(+ 3 4) (* 3 4)" => 12 ; previously 7
|
|
In previous versions, although all expressions in 'net-eval' would be
|
|
evaluated, the result of the first was returned. The possibility
|
|
of multiple expressions in a string was not documented. The new
|
|
behaviour is more in line with the behaviour of 'eval-string' and
|
|
'load'.
|
|
|
|
Fixed a bug on Windows when APACHE was starting newlisp and no
|
|
NEWLISPDIR wnd PROGRAMFILES environment variables were defined.
|
|
|
|
New makefiles for Windows:
|
|
makefile_mingw64 makefile_mingw64_ffi
|
|
makefile_mingw64_utf8 makefile_mingw64_utf8_ffi
|
|
makefile_mingw64dll makefile_mingw64dll_ffi
|
|
makefile_mingw64dll_utf8 makefile_mingw64dll_utf8_ffi
|
|
are working. Tested using tdm gcc 64 (MinGW based).
|
|
|
|
The configure utility now uses the mingw64 makefiles if LLP64 is present.
|
|
The configure-alt utility still only compiles for 32-bit.
|
|
|
|
Both, 32-bit and 64-bit newLISP on Windows, now have ostype "Windows".
|
|
In modules canvas.lsp and gsl.lsp ostype has been changed to "Windows"
|
|
from "Win32". Same change in many qa-* files and web applications.
|
|
|
|
C type cleanup for string size_t length in some C-functions.
|
|
|
|
Server mode -http did not reject net-eval requests.
|
|
|
|
'net-eval' connection timeout changed to 15 secs from 60 secs.
|
|
Processing timeout still set by user in 'net-eval' parameter.
|
|
|
|
Added HTTP_AUTHORIZATION to environment variables in HTTP server.
|
|
|
|
Additional syntax for 'date-value' -> (date-value list-date-time).
|
|
Additional syntax (date-list) now same as (date-list (date-value)).
|
|
|
|
The 'trim' function without trim-char parameters will trim all
|
|
white-space characters, not only spaces.
|
|
|
|
Fixed 'expand' bug when evaluating binding lists.
|
|
|
|
'dump' now returns the number of cells dumped not 'true'
|
|
|
|
New 'trace' syntax: (trace device-no) prints an evaluation trace to
|
|
device-no. Example:
|
|
(trace (open "trace.txt" "w")) ; open trace file (or "a")
|
|
... ; one or more expressions to evaluate
|
|
(trace nil) ; close trace file
|
|
|
|
Stack trace in error message changed from function name to full
|
|
expression.
|
|
|
|
tmp directory is now defined on newLISP startup. For UNIX it is /tmp
|
|
for Windows it is taken from TMP environment variable or assumed /tmp.
|
|
This directory is used by the 'share' functions and the built-in http
|
|
server.
|
|
|
|
When char* in libffi returns 0 (NULL) then an error message will be
|
|
thrown: "cannot convert NULL to string".
|
|
|
|
A new newLISP library call (newlispLibConsole 1) forces console output
|
|
for stdout instead of writing it to the return string of newlispEvalStr.
|
|
The same also enables console input on stdin.
|
|
|
|
The 'json-parse' function now handles 64-bit number also in 32-bit versions
|
|
of newLISP.
|
|
|
|
Fixed shape sign error in canvas.lsp for bezier curves in shapes.
|
|
|
|
10.6.4 September 24th, 2015 Development Release
|
|
Now can retrieve 0-length document with 'get-url'.
|
|
|
|
A fix for 'share' on Linux (bug introduced in development v.10.6.3)
|
|
|
|
In 'get/put/post-url' the new string option "raw" inhibits 'Location'
|
|
redirection. "raw" can also be combined with the "list" and "debug" options.
|
|
When in "list" mode now the server status code is added as a third list
|
|
member.
|
|
|
|
Fixed a error date-value introduced in 10.6.3.
|
|
|
|
Fixed potential error in my_vasprintf() only used on Windows, OS2, TRU64,
|
|
Solaris and AIX.
|
|
|
|
Avoid calling varargs function sendf() with empty argptr nl-web.c.
|
|
|
|
Avoid allocating too much stack space in getPutPostDeleteUrl().
|
|
|
|
Response string from 'get/put/post-url' was not zero-terminated for
|
|
HTTP error returns.
|
|
|
|
When a HTTP server returns an error code and also returns content,
|
|
the string "ERR: " with the HTTP server response line gets prepended when
|
|
not in list mode. This is necessary for compatibility with previous
|
|
versions, as delete/get/put/post -url always return a string and errors
|
|
are marked by a beginning "ERR: " of the string.
|
|
In list mode the second string in the list contains only the returned content.
|
|
The third list member is the server HTTP response line. The fourth list
|
|
member contains the status-code, which is 0 for an invalid HTTP response.
|
|
|
|
date-value did not evaluate month, day parameters.
|
|
|
|
Last element list optimization now always retained when using pop on the list.
|
|
|
|
PCRE options PCRE_NOTBOL, PCRE_NOTEOL and PCRE_NOTEMPTY did not work.
|
|
|
|
Expansion 'macro' definitions can be redefined with 'contanst' not 'define'
|
|
as described in the manual.
|
|
|
|
Installation prefix changed from /usr to /usr/local for OSX and other Unix.
|
|
|
|
The 'save' function now saves symbols with strings longer 2047 chars
|
|
appending multiple partial lines of "," delimited strings of up to 72
|
|
characters. This allows to \ escape non-displayable characters, which
|
|
[text],[/text] delimited text not allows.
|
|
|
|
New version 1.7 canvas.lsp fixes ellipse, petal, pie, polygon, shape:
|
|
now first fill() then stroke() as in postscript.lsp.
|
|
|
|
Loading an empty file should return nil.
|
|
|
|
On Mac OS X guiserver expects newlisp in /usr/local/bin/newlisp on all other
|
|
OS it is only is expected in the executable path, as in previous versions.
|
|
|
|
10.6.5
|
|
In the crypto.lsp module "cdecl" must be used when importing on Windows.
|
|
(since v.10.6.3 a new compiler setup is used)
|
|
|
|
A second PRNG with variable initial N for seed initialization
|
|
via (seed S true N) and inquiry of current seed state via (seed).
|
|
This PRNG is built-in with same results across all platforms and
|
|
compilers. The current PRNG will stay as it offers a bigger set of
|
|
random numbers on Unix platforms. This new PRNG is necessary for doing
|
|
computer simulations and AI art, which is reproducable across
|
|
platforms and where random number sequences can be broken up in
|
|
repeatable layers using the (seed) instruction to save state.
|
|
When using the default libc based PRNG (seed) now returns the last
|
|
seed set by the programmer. On the new PRNG (seed) returns the last
|
|
seed state. - Not yet documented, may replace old PRNG in the future.
|
|
|
|
A (ssq vector) sum of squares function has been added. The vector can
|
|
be either a list or array vector.
|
|
|
|
guiserver.jar version 1.65 now correctly forces updates of a gs:canvas
|
|
in a gs:scroll-pane.
|
|
|
|
When a deleted symbol was prefix in a dynamic symbol, memory got corrupted.
|
|
The dynamic symbol reference is now replaced with nil like other symbol
|
|
references.
|
|
|
|
A illegal symbol when trying to create a context could crash the system,
|
|
when referenced again after the error message.
|
|
|
|
10.7.0 version 10.6.5 released as stable release January 2016.
|
|
|