NESLA NullLogic Embedded Scripting Language ChangeLog
Copyright
© 2007-2009 Dan Cahill. All rights reserved.
0.9.3 (2009-??-??)
- added ternary conditional expression operator ?:
- added catch, finally and throw to try
- added 'new' to control behaviour of object constructor functions
- fixed odbc data retrieval
- added string.itoa and string.atoi function pair
- added foreach (x in y) loops
- added \0 to string<->character mapping
- added 'this' between local and global var lookups to create a transparent illusion of oo support
- moved 'this' from the last function argument to the first to fix bug with missing args
- added === operator for strict comparisons
- fixed explicit variable declaration of locals when matching globals exist
0.9.2 (2008-06-01)
- added basic signal handling to allow shutdown requests in multithreaded environments, etc.
- fixed broken eval of break and exit values
- fixed output of large values in printvar()
- added simple MIME parser able to digest e-mails (and probably HTTP MIME POST data)
- added quoted-printable and rfc2047 header decoding for MIME
- added support for libssh2 (sftp and shell support)
- added crude support for reading from and writing to pipes
- added file.append(), file.mkdir(), tcp.info()
- added DNS query code to libtcp
- added tcp ftp helper functions to upload/download files and list dirs
- fixed io.flush to not cause an error when being used to report an error
0.9.1 (2007-11-07)
- updated xyssl lib to support v0.8
- fixed redefinition of an existing function
- fixed cases where function existence was evaled to 0 (should be true if exists, or false)
- added AES encryption to the source tree
- added password prompt form to win32 api
- added eval()
- added line number tracking during tokenizing phase
- added support for string multiplication ('x'*5 is equal to 'xxxxx')
- added dirhash, factorial, and sqrt examples
- fixed memory leaks caused by error trapping
- fixed segfaults caused by error calls in c functions and subsequent attempts to free the base pointer of script functions
- fixed display limit of numbers larger than 2 billion (kinda)
0.9.0 (2007-09-05)
- all time functions are now grouped in a single table
- major xmlread rewrite, including an optional tree trimmer
- added sha1 hash algorithm to libcrypto
- fixed returned strings defaulting to zero length in string.sub()
- added ival() to compliment iname()
- added extension module to convert source to html
- added popsync.ns - a working pop3/pop3s client
- added httpd.ns - a working http server (with and without ssl)
- added tcp server support for xyssl and openssl
- added support for xyssl encryption lib (aes, md5 and sha1 sums, tcp, etc...)
- fixed broken table comparisons
- added 'try' to trap errors within scripts
- added regex lib based on code by Henry Spencer
0.8.0 (2007-08-08)
- added 'this' object for that object-oriented stuff some people like
- functions can now be declared inside a statement
- x=x+1 no longer clobbers x before evaluating the expression
- all extension libraries can now be built as shared objects (except for the one that adds shared object support)
- added native postgresql support
- values are now completely destroyed when setting them to null
- mixed string and number math now works as expected
- evaluating expressions is now more than twice as fast as before
- major overhaul of the internal binary format of scripts
- variable assignment inside an expression now works
- fixed several cases of bogus return values from mixed object type comparisons
- fixed the use of direct table declarations inside function parameters
- added dl extension lib for dynamic module loading
- added gmtime(), localtime(), string.tolower(), string.toupper() and string.join() to core lib
- added winapi extension lib
- changed type() and size() to typeof() and sizeof()
- += now works for strings
- rewrote the extension makefiles in pure nesla
0.7.0 (2007-07-13)
- added md5 support
- added native mysql support
- added native sqlite v3 support
- numerous inprovements to the windows tray host including improved forms, and process spawning
- fixed bad sorting of numeric indexes
- improved documentation
- added stat and unlink to file functions
- added zlib support for reading and decompressing tgz files
- added api function to sort tables by subkeys
- readded api function to sort tables
0.6.0 (2007-06-05)
- 'else if' is no longer evaluated after a previous comparison returns true
- added a simple dependency tester written in nesla
- added support for Windows ODBC and unixODBC (tested with mysql and mdb)
- added working tcp functions, i.e. open, close, read, write, bind, accept ...
- basic ssl client and server code is now working
- added working demos of raw http, ftp, pop3, etc... controlled entirely by nesla code
- added working management for externally defined c structures
- added a very basic ldap.search() function
- changed nes_tostr from macro to function. it was making my binaries look fat.
- minor improvements to the Win32 taskbar host
- added support for c comments
0.5.0 (2007-04-25)
- Added a Win32 taskbar host for primitive desktop scripting
- fixed several possible segfaults triggered by random or malicious data being fed to the parser
- fixed the limited output size in print()
- Added a CGI host to serve Nesla scripts via web servers
- numbers can now be appended directly to strings using + (without tonumber())
- tostring() now allows an optional decimal precision for numbers
- core lib can now be used without libm
- added do loops
- fixed mixed references to function pointers and data pointers (i think some compilers just like to whine)
- documentation is 1% less cryptic, and even has a couple examples
- if, for and while loops no longer require braces for single statements
- values now hold their own attributes, not the vars that point to them
- fixed the hugely defective operator precedence resolution stuff (new and improved with 10% less defectiveness)
0.4.0 (2007-04-18)
- All major core language issues resolved (i think). Next release will either be the last alpha, or the first beta.
- added primitive file.read() and file.write() functions
- added string.split() to turn strings into tables
- fixed bug declaring signed numbers and functions as vals in new tables
- nesla now understands the concept of operator precedence
- functions can now return tables (or just subtables)
- variables and values are now completely separate from each other. now multiple vars can point to the address of the same val without conflict
- minor tweaks to fix cygwin compatibility
- xml parsing code can now more-or-less read html documents
- complete rewrite of the http client makes it almost useful
- fixed a minor mem leak in string comparisons (valgrind rocks)
- old string vals are freed _after_ the new val has been set
- escape char processing is now done when the string is read, not on output
0.3.0 (2007-04-04)
- fixed segfault caused by unsafe longjmp in n_error
- table autosorting can now be toggled (on by default)
- passing a table as a function arg no longer makes the sky catch fire
- added NST_LINK as a flag for static var links
- added nes_readtable and nes_readtablef to api
- added nes_eval to api
- blank loop conditions (for(;->this<-;)) fixed
- fixed free table references (free = anything not enslaving table refs to vars)
- added a basic http client
0.2.0 (2007-03-09)
- replaced most libc string functions with portable (and faster) substitutes
- added working boolean var handling
- added internal output buffering system (much faster than standard buffering)
- added minimal and portable snprintf
- added simple(minded) xml parsing
- added _VARS[] and _ARGS[] table initialization to the cli
- added string math and comparisons using basic ops
- new vars are automatically alphabetized
- added rot13 to the extension lib
0.1.0 (2007-02-15)