The Squirrel programming language / News: Recent posts

Squirrel 2.2.3 stable released

***version 2.2.3 stable***
-added sq_getfunctioninfo
-added compile time flag SQUSEDOUBLE to use double precision floats
-added global slot _floatsize_ int the base lib to recognize single precision and double precision builds
-sq_wakeupvm can now resume the vm with an exception
-added sqstd_format
-generators can now be instantiated by calling sq_call() or
-fixed a bug in sqstd_printcallstack(thx takayuki_h)
-fixed modulo by zero(thx jup)
-fixed negative enums and constants
-fixed generator crash bug if invoked as tail call (thx Mr.Accident)
-fixed some minor bug

Posted by Alberto Demichelis 2009-06-30

Squirrel 2.2.2 stable released

squirrel 2.2.2 stable has been released :

-fixed some behaviour inconsistencies in and thread.wakeup()
-fixed coroutine error propagation
-fixed lingering return value from native function
-fixed a bug if array.sort() is given a bad sort function -fixed some minor api bug
-added sq_arrayremove() and sq_arrayinsert()

Posted by Alberto Demichelis 2008-09-23

Squirrel 2.2 stable released

Squirrel 2.2 stable released:

-added _newslot metamethod in classes
-added enums added constants
-added sq_pushconsttable, sq_setconsttable
-added default param
-added octal literals
-fixed debug hook, 'calls' and 'returns' are properly notified in the same number.
-fixed a coroutine bug

Posted by Alberto Demichelis 2008-02-17

Squirrel 2.1.2 stable released

-new behaviour for generators iteration using foreach
now when a generator is iterated by foreach the value returned by a 'return val' statement
will terminate the iteration but will not be returned as foreach iteration
-added sq_setclassudsize()
-added sq_clear()
-added table.clear(), array.clear()
-fixed sq_cmp()
-fixed various minor bugs

Posted by Alberto Demichelis 2007-07-29

Squirrel 2.1.1 stable released

-vm refactoring
-optimized internal function memory layout
-new global symbol _version_ (is the version string)
-code size optimization for float literals(on 32bits float builts)
-now the raw ref API(sq_addref etc...) is fully reentrant.
-fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB)
-improved C reference performances in NO_GARBAGE_COLLECTOR builds
-sq_getlocal() now enumerates also outer values.
-fixed regexp library for GCC users.

Posted by Alberto Demichelis 2006-08-20

Squirrel 2.1 stable released

-added static class fields, new keyword static
-added 64bits architecture support
-added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds
-added functions with fixed environment, closure.bindenv() built-in function
-all types except userdata and null implement the tostring() method
-string concatenation now invokes metamethod _tostring
-new metamethods for class objects _newmember and _inherited
-sq_call() sq_resume() sq_wakeupvm() have a new signature
-new C referencing implementation(scales more with the amount of references)
-refactored hash table
-new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv()
-the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot
-sq_setreleasehook() now also works for classes
-stream.readstr() and stream.writestr() have been deprecated(this affects file and blob)
-fixed squirrel.h undeclared api calls
-fixed few minor bugs
-SQChar is now defined as wchar_t
-removed warning when building with -Wall -pedantic for GCC users
-added new std io function writeclosuretofile()
-added new std string functions strip(),rstrip(),lstrip() and split()
-regular expressions operators (+,*) now have more POSIX greedyness behaviour
-class constructors are now invoked as normal functions

Posted by Alberto Demichelis 2006-03-18

Squirrel 2.0.5 stable released

-fixed some 64bits incompatibilities (thx sarge)
-fixed minor bug in the stdlib format() function (thx Rick)
-fixed a bug in dofile() that was preventing to compile empty files
-added new API sq_poptop() & sq_getfreevariable()
-some performance improvements

Posted by Alberto Demichelis 2005-10-02

Squirrel 2.0.3 stable released

***version 2.0.3 stable***
-dofile() and compilefile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian
-sq_setparamscheck() : now typemesk can check for null
-added string escape sequence \xhhhh
-fixed some C++ standard incompatibilities

Posted by Alberto Demichelis 2005-06-23

Squirrel 2.0.2 stable released

-performances improvements (expecially for GCC users)
-removed all dependencies from C++ exception handling
-various bugfixes

Posted by Alberto Demichelis 2005-05-14

Squirrel 2.0.1 stable released

-various bugfixes
-sq_setparamscheck() now allows spaces in the typemask

Posted by Alberto Demichelis 2005-04-11

Squirrel 2.0 stable released

*Squirrel 2.0 stable released
-added API sq_gettypetag()
-added built-in function to tha bool type(tointeger, tostring etc...)

Posted by Alberto Demichelis 2005-04-03

Squirrel 1.02 stable has been released

-fixed a couple of minor bugs

Posted by Alberto Demichelis 2004-11-25

Squirrel 1.0 stable has been released

-first stable release
-fixed some minor bug
-improoved operator 'delete' performances
-added scientific notation for float numbers( eg. 2.e16 or 2.e-2)

Posted by Alberto Demichelis 2004-10-31

Squirrel 1.0 release candidate 2(RC2) has been released

-fixed bug in the vm(thx Pierre Renaux)
-fixed bug in the optimizer(thx Pierre Renaux)
-fixed some bug in the documentation(thx JD)
-added new api functions for raw object handling
-removed nested multiline comments
-reduced memory footprint in C references

Posted by Alberto Demichelis 2004-08-29

Squirrel 1.0 release candidate 1(RC1) has been released

fixed division by zero
the 'in' operator and obj.rawget() do not query the default delegate anymore
added function sq_getprintfunc()
added new standard library 'auxlib'(implements default error handlers)

Posted by Alberto Demichelis 2004-08-22

Squirrel 1.0 beta 4 has been released

***version 1.0 beta 4***
fixed a bug in the integer.tochar() built-in method
fixed unary minus operator
fixed bug in dofile()
fixed inconsistency between != and == operators(on float/integer comparison)
added javascript style unsigned right shift operator '>>>'
added array(size) constructor built-in function
array.resize(size,[fill]) built-in function accepts an optional 'fill' value
improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename()

Posted by Alberto Demichelis 2004-07-11

Squirrel 1.0 beta 3 has been released

***version 1.0 beta 3***
-minor vm bug fixes
-string allocation is now faster
-tables and array memory usage is now less conservative(they shrink)
-added regular expression routines in the standard library
-The 'c' expression now accepts only 1 character(thx irbrian)
-multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string")
-added new keyword 'parent' for accessing the delegate of tables and unserdata
-The metamethod '_clone' has been renamed '_cloned'
-the _delslot metamethod's behaviour and prototype have been changed
-new default function in the integer and float object 'tochar()'
-the built-in function chcode2string has been removed
-the default method [table].getdelegate() has been removed
-new api sq_rawdeleteslot()
-new table built-in method rawdelete(key)
-the dynamic mudule loading has been removed from the standard distribution
-some optimizations in the VM

Posted by Alberto Demichelis 2004-05-23

Squirrel 1.0 beta 2 has been released

-minor compiler/parser bug fixes
-sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck()
-sq_setparamscheck allows to add automatic parameters type checking in native closures
-sq_compile() lost the lineinfo parameter
-new api sq_enabledebuginfo() globally sets compiler's debug info generation
-added consistency check on bytecode serialization
-fixed += operator, now works on strings like +
-added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime
-added registry table
-new api call sq_pushregistrytable()
-added type tag to the userdata type sq_settypetag()
-sq_getuserdata now queries the userdata typetag
-the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons
-new standard libraries(sqlibs are now obsolete)

Posted by Alberto Demichelis 2004-04-20

Squirrel 1.0 beta 1 has been released

-fixed a bug in the compiler (thanks Martin Kofler)
-fixed bug in the switch case statement
-fixed the _unm metamethod
-fixed minor bugs in the API
-fixed automatic stack resizing
-first beta version
first pass code clean up in the VM and base lib
first pass code coverege test has been done on VM and built-in lib
-new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete)
-new api allows to specifiy a "print" function to output text(sq_printfunc)
-added some small optimizations
-new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread")
-new built in functions have been added for manipulating the new "thread" type
-friend virtual machines share the same root table, error handler and debug hook by default
-new compile time options

Posted by Alberto Demichelis 2004-02-20

Squirrel 0.9 alpha has been released

***version 0.9 alpha***
-fixed a garbage collection bug
-fixed some API bugs(thx Joshua Jensen)
-fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled)
-new function parameters semantic, now passing a wrong number of parameters generates an exception
-native closures have now a built in parameter number checking
-sq_rawget and sq_rawset now work also on arrays
-sq_getsize now woks also on userdata
-the userdata release hook prototype is changed(now passes the size of the userdata)
-the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen)
-faster compiler
-try/catch blocks do not cause any runtime memory allocation anymore

Posted by Alberto Demichelis 2004-01-19

Squirrel 0.8 alpha has been released

-fixed a bug that was preventing to have callable userdata throught the metamethod _call
-fixed a garbage collection bug
-fixed == operator now can compare correctly different types
-new built in method getstackinfos(level)
-improoved line informations precision for the debug hook
-new api call sq_compilebuffer()
-new built-in api function compilestring()
-new syntactic sugar for function declarations inside tables
-the debug API has been finalized

Posted by Alberto Demichelis 2003-12-06

Squirrel 0.7 alpha has been released

-fixed critical bug int the tail call system
-fixed bug in the continue statement code generation
-fixed func call param issue(thanks to Rewoonenco Andrew)
-added _delslot metamethod(thanks to Rewoonenco Andrew)
-new multiline string expression ( delimited by <[ and ]> )
-normal strings ("") do not allow embedded new line anymore
-reduced vm memory footprint(C refs are shared between friend VMs)
-new api method sq_deleteslot()
-new debug hook event 'r' is triggered when a function returns

Posted by Alberto Demichelis 2003-11-17

Squirrel 0.6 alpha has been released

-fixed switch statement(was executing the default case after a break)
-sq_call() doesn't pop the closure (just the params)
-the vm execution can be suspended from the C API anytime (micro-threads)
-new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack()

Posted by Alberto Demichelis 2003-11-04

Squirrel 0.5 alpha has been released

-fixed some minor bug
-tested with non ASCII identifiers in unicode mode
-added built-in function string.find()
-the built-in function array.sort() optionally accepts a cmp(a,b) function
-the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname)
-fixed some debug info imprecision

Posted by Alberto Demichelis 2003-10-12

Squirrel 0.4 alpha has been released

-faster VM
-sq_call will pop arguments and closure also in case of failure
-fixed a bug in sq_remove
-now the VM detects delegation cycles(and throws an exception)
-new operators ++ and --
-new operator ',' comma operator
-fixed some expression precedence issue
-fixed bug in sq_arraypop

Posted by Alberto Demichelis 2003-10-01