May 8th, 2012Additions and changes:
· A new set function union works like (unique (append ... )).
· Two new predicates even? and odd? test the parity of integers.
· The new prob-t function returns the one-tailed probablitiy of a Student's t statistic to be equal or greater than the observed value.
· The new prob-f function returns the probablitiy of F statistic to be equal or greater than the observed value.
· The new crit-t function calculates the critical value of Student's t for a given one-tailed probability.
· The new crit-f function calculates the critical value of F for a given probability level.
· The prob-z and crit-z functions now handle probabilities less than 0.5 for negative Z-values.
· The new corr function calculates a Pearson product-moment correlation coefficient between two variables.
· The new stats function calculates some basic statistics for a data vector.
· The new t-test function performs a Sudent's t-test for dependent and independent date samples.
· An additional true flag in the char function can turn on 8-bit byte indexing and translation instead of multibyte UTF-8 indexing and translation in UTF-8 enabed versions of newLISP.
· A true flag in the file? forces the return value to the name string of the file, if it exists.
· Versions compiled for the new extended FFI now show "libffi" in the banner.
· Better mean-value adherence of the normal function.
· In the extended ffi the char* type will now only accept strings as arguments. For string or buffer integer addresses void* must be used.
· import now can load a library without importing a function. This is necessary on Mac OSX, Linux and other Unix when external functions are referenced from an imported function and the library is not loaded automatically.
Modules:
· newlispdoc now outputs a UTF-8 meta tag in the HTML header.
· A new module gsl.lsp imports SV, QR and Cholesky decomposition and solver functions from the GNU Scientific Library GSL. Both SV and QR can handle rectangular non-square matrices for decomposition of A and solving Ax = b for x.
· Updated plot.lsp now also has a plot:XY command and has been added to the standard modules in the source and binary distributions.
Bug fixes:
· The day-of-year value in date-list now starts with 1 instead of 0. The previous version made the same change for the now function.
· The command-event function now trims trailing line-feed characters in all compile and platform flavors. Previously only UNIX and readline lib enabled versions would trim the string passed by command-event.
· A fix for pack when packing structures made with struct in 64-bit newLISP.
· A fix for seek when used after read-line.
· close had a memory leak introduced in 10.4.0.
May 2nd, 2012· Additions and changes
· A new set function union works like (unique (append ... )).
· Two new predicates even? and odd? test the parity of integers.
· The new prob-t function returns the one-tailed probablitiy of a Student's t statistic to be equal or greater than the observed value.
· The new prob-f function returns the probablitiy of F statistic to be equal or greater than the observed value.
· The new crit-t function calculates the critical value of Student's t for a given one-tailed probability.
· The new crit-f function calculates the critical value of F for a given probability level.
· The prob-z and crit-z functions now handle probabilities less than 0.5 for negative Z-values.
· The new corr function calculates a Pearson product-moment correlation coefficient between two variables.
· The new stats function calculates some basic statistics for a data vector.
· The new t-test function performs a Sudent's t-test for dependent and independent date samples.
· An additional true flag in the char function can turn on 8-bit byte indexing and translation instead of multibyte UTF-8 indexing and translation in UTF-8 enabed versions of newLISP.
· A true flag in the file? forces the return value to the name string of the file, if it exists.
· Versions compiled for the new extended FFI now show "libffi" in the banner.
· Better mean-value adherence of the normal function.
· In the extended ffi the char* type will now only accept strings as arguments. For string or buffer integer addresses void* must be used.
· import now can load a library without importing a function. This is necessary on Mac OSX, Linux and other Unix when external functions are referenced from an imported function and the library is not loaded automatically.
Modules:
· newlispdoc now outputs a UTF-8 meta tag in the HTML header.
· A new module gsl.lsp imports SV, QR and Cholesky decomposition and solver functions from the GNU Scientific Library GSL. Both SV and QR can handle rectangular non-square matrices for decomposition of A and solving Ax = b for x.
· Updated plot.lsp now also has a plot:XY command and has been added to the standard modules in the source and binary distributions.
Bug fixes:
· The day-of-year value in date-list now starts with 1 instead of 0. The previous version made the same change for the now function.
· The command-event function now trims trailing line-feed characters in all compile and platform flavors. Previously only UNIX and readline lib enabled versions would trim the string passed by command-event.
· A fix for pack when packing structures made with struct in 64-bit newLISP.
April 4th, 2012Additions and changes:
· A new set function union works like (unique (append ... )).
· Two new predicates even? and odd? test the parity of integers.
· The new prob-t function returns the one-tailed probablitiy of a Student's t statistic to be equal or greater than the observed value.
· The new prob-f function returns the probablitiy of F statistic to be equal or greater than the observed value.
· The new crit-t function calculates the critical value of Student's t for a given one-tailed probability.
· The new crit-f function calculates the critical value of F for a given probability level.
· The prob-z and crit-z functions now handle probabilities less than 0.5 for negative Z-values.
· An additional true flag in the char function can turn on 8-bit byte value translation instead of multibyte UTF-8 translation in UTF-8 enabed versions of newLISP.
· A true flag in the file? forces the return value to the name string of the file, if it exists.
· newlispdoc now outputs a UTF-8 meta tag in the HTML header.
· Versions compiled for the new extended FFI now show "libffi" in the banner.
· Better mean-value adherence of the normal function.
Bug fixes:
· The day-of-year value in date-list now starts with 1 instead of 0. The previous version made the same change for the now function.
· The command-event function now trims trailing line-feed characters in all compile and platform flavors. Previously only UNIX and readline lib enabled versions would trim the string passed by command-event.
February 15th, 2012Additions and changes:
· import now has a second syntax to specify return and parameter value data types. This new extended API usese libffi. This extension to the current foreign functions interface is available in all standard binary installs of newLISP.
· The extended callback API allows specifying return and parameter value data types. Like the extended import, the enhanced callback syntax uses libffi.
· The now time function now returns the GMT offset with opoposite signs, positive for east and negative for west of the UCT Meridian. The day-of-the-year number now starts with 1 instead of offset 0. Both changes make now more ISO 8601 compliant.
· Bit 11 - hex 0x400 - in the last field of sys-info is set for extended FFI enabled versions requiring libffi.
· The speed of read-line, when used with a file handle, has been increased many times to the same speed as when used with STDIN.
· A reworked send, receive message API is multiple times faster and has consistent performance on different OS platforms. The channel for each child is now a dual read/write message queue internally using Unix, local domain sockets. In previous version only one message could be written with send. Now mutiple message can be placed into a queue on the same channel and retrieved on the receiving end with multiple receive statements, until returning nil when the queue is empty. On the sending side, send will return nil when the queue is full.
· New call patterns for send and receive let the parent process filter child PIDs to target only those child processes, which are either ready to receive or target those from which messages can be be read. The (send) form allows the parent process to filter all those child PIDs, which are ready to receive messages sent by the parent. The (receive) form returns a list of child PIDs ready with messages in their sending queues to be read by the parent process.
The creation of a communications channel between and parent process and spawned child processes for usage with send and receive, is now optional:
· (spawn sym-variable child-process [true])
· If the send or receive is used with child-process spawned, the optional flag must be set to true.
· The dummy versions of spawn, sync and abort in the MS Windows version have been taken out.
· struct allows creating structure data types for usage with the extended import API.
· In unify the underscore symbol: _ matches any atom, list or bound or unbound variable.
· The library file newlisp.dll is now installed in its old location in the main newlisp program directory. No administrator rights are necessary for installing in that location. This library is only required for third party applications, not for newLISP itself.
· The minumum Java version to run Guiserver is now Java JRE version 1.6.
Bug fixes:
· A longstanding bug for ithe list-mode of net-select has been fixed. Now, net-select does return socket numbers in the ready list not 0's (zeros).
· The link feature using newlisp-x.x.x/util/link.lsp now also works when linking with 64-bit versions of newLISP.
January 11th, 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"))
· 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.
December 22nd, 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.
· SHA256 crypto algorithm has been added to the module crypto.lsp.
· Thanks to Marc Hildman for this contribution.
November 9th, 2011· '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 [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.
September 22nd, 2011Bug fixes:
· Fixed broken memory sharing for data sizes greater than 4084 bytes. This affected the built-in functions spawn and share for memory transfers greater than 4084 bytes.
· When in debug or trace mode, error messages caysed by the debugged source are now printed to the console. Debugging is not interruped and can continue. As previously, the return value of the failing function will be 0 or nil depending on the function causing the exception.
· Return values from library callbacks not work correctly under some circumstances. This did not affect the example programs opengl-demo.lsp and win32-demo.lsp.
Other addtions and changes:
· On MS Windows newlisp.dll is now installed in windows/system32 or what the main 32-bit DLL directory may be on a specific Windows platform.
· From newLISP library a new function newlispCallback can be imported to register callback functions called from the library back into the controlling parent.
· Improved handling of -l and -L log file options. The log file will always be crated, if it does not exist, and the output format has been improved.
· Much better memory and speed efficiency in string and format functions when formatting large amounts of data.
July 21st, 2011Additions:
· Quoted strings now can contain unicode characters encoded using \u.... , where .... are four hex digits e.g.: "\u03b1\u03b2\u3b3" for the Greek letters "αβγ" (aplha, beta, gamma). When reading the string, newLISP will translate it to UTF8 encoded characters on UTF8 enabled versions.
Other improvements:
· Better error message on self-referential list changes.
· Improved error messages in implicit indexing.
· Recognize MBCS characters in MS Windows pathnames.
· Siginificant speedup in functions: filter, index, clean, exists and for-all
· Significant speedup on series when second argument is a function.
· Significant speedup on find-all when the third argument is used.
· Better memory management and speed improvements for map.
· A new version of json.lsp module now processes backslashed characters as of JSON spec
Bug fixes:
· Fix for filter, index, clean, exists and for-all when handling empty list elements ().
· inc, dec, ++ and -- did not check for missing parameters.
· The boolean parameter in dotree could cause a crash.
· Fix for a buffer overflow in interactive multi-line mode.
· A bug fix for timer when using recursively.
· An EOF error in read-line was not cleared and made all subsequent calls to read-line fail with nil.
· xfer-event now reports netto bytes sizes transferred. Before, accumulated bytes were reported. As one get-url, put-url or post-url request can contain several subrequests, the accumulated numbers were sometimes confusing. Now the sum of the numbers reported will always reflect the total size transferred. If an accumulated number is needed, it should be calculated in the xfer-event function.
May 19th, 2011· This development release fixes bugs and makes efficiency improvements.
February 2nd, 2011· This stable release introduces runtime switching between internet protocols IPv4 and IPv6, adds other miscellaneous features and fixes a few bugs.
January 7th, 2011· 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.
· 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.
November 16th, 2010· 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.
November 16th, 2010· New table widget and supporting functions in Guiserver.
November 16th, 2010· 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.
· 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.
September 3rd, 2010· Development version 10.2.14 has bug fixes and other small adjustments
August 4th, 2010· 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.
May 20th, 2010Additions and improvements to networking functionality:
· A new net-packet function can be used to inject custom configured IP packets. The function is only available on UNIX like operating systems and has been configued and tested for Mac OS X on PPC and Intel CPUs, UBUNTU Linux on Intel CPUs and OpenBSD on Intel CPUs.
· The net-connect function now has a timeout parameter. In older versions connection timeout behavior was controlled by the OS. Now connection timeout is under programmer control.
· The timeout parameter in the web functions get-url, post-url, put-url and delete-url now also controls the connection phase. In older versions, it only controlled the processs after connecting. This gave web functions the appearance of hanging when the target server was disconnected or down. Now these functions already can timout during the connection phase.
· The net-service function now works in both directions. Now port number can be translated to service names too. In older versions only translation from service names to port numbers was possible.
· Other changes and additions
· The timing function time did overflow after 35 minutes in the 10.x generation of newLISP; now it can count to about 68 years.
· Speedup of hash entry deleletion. No reference checks are made anymore when deleting hash entries using ( nil).
· find-all has improved behavior on looping conditions, where it no will increment the search offset by 1. Looping conditions occur, when regular expressions result in zero-length strings found. In previous versions find-all did exit on looping conditions.
· In MS Windows both URLs forms: file://C:/example.txt and file:///C:/example.txt are now valid.
· The save function has been made faster up to a factor of 10x.
· OpenBSD 4.6 now added as a regular test environment additionally to Mac OSX, FreeBSD, UBUNTU Linux, SunOs Sparc and Windows XP/7.
· Bug fixes
· The map function now handles short parameter lists in a consistent manner when mapping string manipulating functions onto lists of strings.
· xml-parse with context option did not convert names of built-in primitives.
· load in HTTP mode did not return to previous context, but always went into MAIN.
· On Win32 negative -Inf lost the sign when converting to the maximum integer value.
· The true flag in delete was not handled correctly since 10.2.0.
· In get-url the "list-debug" option did return a string instead of a list.
· The find function accepted the regex option number only as a constant.
May 15th, 2010· adjustments for IPv6 and bugfixes
May 8th, 2010· Support for OpenBSD in net-packet and bug fixes
December 9th, 2009· 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.