5 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
ryoon
|
74459e5973 |
Update to 10.4.5
Changelog: 2012-11-21 # Changes and additions * On Windows, process now returns real process ids as in UNIX, not Windows process handles. * The cgi.lsp module now handles multiform data in POST requests. * Two new make files for compiling RedHat Fedora and CentOS distributions. The configure utility called by make will handle these two subflavors of RedHat Linux automatically. # Bug fixes * Memory overrun of invalid UTF8 strings now causes an error message "invalid UTF8 string". * The function ref did sometimes not handle correctly multiple, nested matching expressions. * The float function did sometimes not work correctly when used on list members. * OpenBSD did not load .init.lsp. # Compatibility with previous versions * This version is compatible with previous versions in the 10.4 series of newLISP. |
||
ryoon
|
cfc8c4beff |
Update to 10.4.4
Changelog: 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 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. |
||
asau
|
88feb4ac62 | Drop superfluous PKG_DESTDIR_SUPPORT, "user-destdir" is default these days. | ||
ryoon
|
e696b25e94 |
Update to 10.4.0
Changelog: 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 ffi 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 followong 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 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) |
||
ryoon
|
69cb28b82c |
Import newlisp-10.3.3 as lang/newlisp from wip/newlisp.
newLISP is a Lisp-like, general-purpose scripting language. It is especially well-suited for applications in AI, web search, natural language processing, and machine learning. Because of its small resource requirements, newLISP is also excellent for embedded systems applications. Most of the functions you will ever need are already built in. This includes networking functions, support for distributed and parallel processing, and Bayesian statistics. |