1 ***version 3.0.6 stable***
\r
2 -fixed compiler bug that can cause memory corruption, the bug was introduced in 3.0.5(thx Alex95)
\r
5 ***version 3.0.5 stable***
\r
6 -fixed crash in compiler when trying to write 'base'
\r
8 -fixed few bugs in the compiler
\r
11 ***version 3.0.4 stable***
\r
12 -sq_deleteslot slot now pops the key in case of failure
\r
13 -fixed bug when _get metamethod throws null
\r
14 -fixed a bug in rstrip
\r
15 -added some error handling
\r
19 ***version 3.0.3 stable***
\r
20 -improved error messages for _cmp(when a non integer value is returned) (thx Yexo)
\r
21 -added class.newmember() built in method (thx Nam)
\r
22 -added class.rawnewmember() built in method (thx Nam)
\r
23 -added sq_rawnewmember() (thx Nam)
\r
24 -added sq_getversion()
\r
26 -added sq_getclosurename()
\r
27 -added file.close() in stdlib
\r
28 -documented closure.getinfos() built-in method
\r
29 -fixed string iteration doesn't return negative numbers for characters > 127
\r
30 -fixed bug in tofloat() when converting a string with scientific notation without a decimal point (thx wr2)
\r
31 -fixed potential infinite loop in array.sort() when the _cmp function is inconsistent (thx Yexo)
\r
32 -fixed obscure bug in the compiler(thx yishin)
\r
33 -fixed some minor bug
\r
36 ***version 3.0.2 stable***
\r
37 -added sq_gethash API
\r
38 -now array.sort() is implemented with heapsort
\r
39 -now floats in scientific notation also accept numbers with no '.' (eg. 1e+6 or 1e6)
\r
41 -fixed some documentation
\r
45 ***version 3.0.1 stable***
\r
46 -added # as alternative symbol for "line comment"(mostly useful for shell scripts)
\r
47 -added sq_throwobject() to throw an arbitrary object from the C API
\r
48 -added alignement flag for userdata types, SQ_ALIGNMENT (thx Shigemasa)
\r
49 -added rawset() and rawget() to class and instance default delegate
\r
50 -changed bytecode format now ensures matching integer size and float size
\r
51 -now inherited classes also inherit userdatasize
\r
52 -added SQUIRREL_VERSION_NUMBER in squirrel.h and _versionnumber_ global symbol
\r
53 -fixed sq_getmemberhandle
\r
54 -fixed sq_getrefcount
\r
55 -refactored some sqstdio code
\r
56 -refactored some clone code
\r
57 -refactored some stuff in the string lib
\r
58 -added -s and -fno-exceptions in GCC makefile(better performance when using GCC)
\r
61 ***version 3.0 stable***
\r
62 -added sq_getcallee()
\r
63 -sq_getfreevariable() also works for native closures
\r
64 -minior optimizations
\r
65 -removed several warning when compiling with GCC 4.x
\r
66 -fixed some errors in the documentation
\r
67 -fixed bug when using SQUSEDOUBLE and 32bits intengers
\r
68 -fixed bug when invoking generators with closure.call() (thx huntercool)
\r
71 ***version 3.0 release candidate 1(RC 1)***
\r
72 -improved metamethods error handling
\r
73 -added parameter 'isstatic' to _newmember metamethod(thx G.Meyer)
\r
74 -added sq_getrefcount() to return number of refences from C++(thx G.Meyer)
\r
77 ***version 3.0 beta 3***
\r
78 -license changed to "MIT license"
\r
79 -added sq_resurrectunreachable() and resurrectunreachable()
\r
80 -added callee() built in function, returns the current running closure
\r
81 -added thread.getstackinfos()
\r
82 -added sq_objtouserpointer()
\r
83 -added sq_newtableex()
\r
84 -various refactoring and optimizations
\r
85 -fixed several 64bits issues regarding integer to string conversions
\r
86 -fixed some bugs when SQUSEDOUBLE is used in 32bits systems
\r
89 ***version 3.0 beta 2.1***
\r
90 -fixed bug in class constructor
\r
91 -fixed bug in compound arith
\r
94 ***version 3.0 beta 2***
\r
95 -class methods can be added or replaced after the class as been instantiated
\r
96 -JSON compliant table syntax, this is currently an experimental feature (thx atai)
\r
97 -sq_getsize() now returns userdatasize for classes and instances
\r
98 -now setroottable() and setconsttable() return the previous value of the respective table
\r
99 -fixed bug in compound arith operators when used on a free variable (thx ellon)
\r
100 -fixed some x64 minor bugs
\r
101 -fixed minor bug in the compiler
\r
102 -refactored some VM internals
\r
103 -documented sq_getmemberhandle, sq_getbyhandle, sq_setbyhandle to set and get value from classes
\r
106 ***version 3.0 beta 1***
\r
107 -various refactoring and optimizations
\r
108 -fixed bug in free variables (thx mokehehe)
\r
109 -fixed bug in functions with default parameters (thx ara & Yexo)
\r
110 -fixed bug in exception handling
\r
111 -improved error propagation in _set and _get metamethods ( and 'throw null' for clean failure)
\r
112 -added sq_getmemberhandle, sq_getbyhandle, sq_setbyhandle to set and get value from classes
\r
115 ***version 3.0 alpha 2***
\r
116 -added real free variables(thx Paul Ruizendaal)
\r
117 -added refactored function call implementation and compiler(thx Paul Ruizendaal)
\r
118 -added sq_getfunctioninfo
\r
119 -added compile time flag SQUSEDOUBLE to use double precision floats
\r
120 -added global slot _floatsize_ int the base lib to recognize single precision and double precision builds
\r
121 -sq_wakeupvm can now resume the vm with an exception
\r
122 -added sqstd_format
\r
123 -now blobs can be cloned
\r
124 -generators can now be instantiated by calling sq_call() or closure.call()
\r
125 -fixed debughook bug
\r
126 -fixed cooroutine error propagation
\r
129 ***version 3.0 alpha 1***
\r
130 -first branch from 2.x source tree
\r
131 -added 'base' keyword
\r
132 -removed 'delegate' keyword
\r
133 -now compiled scripts are vararg functions
\r
134 -added setdelegate() and getdelegate() table builtin methods
\r
135 -added <=> 3 ways compare operator
\r
136 -added lambda expression @(a,b) a + b
\r
137 -added local function statement
\r
138 -added array built-in map(),reduce(),apply(),filter() and find()
\r
139 -generators hold only a weak reference of the enviroment object
\r
140 -removed 'vargv' and 'vargc' keywords
\r
141 -now var args are passed as an array called vargv(as a paramter)
\r
142 -removed 'parent' keyword
\r
143 -added class getbase() built in method
\r
144 -instanceof doesn't throw an exception if the left expression is not a class
\r
145 -lexical scoping for free variables(free variables are no longer in the second parameter list)
\r
146 -sq_setprintfunc accept error func
\r
148 -added sq_arrayremove() and sq_arrayinsert()
\r
149 -error() built in function(works like print but prints using the errorfunc)
\r
150 -added native debug hook
\r
153 ***version 2.2 stable***
\r
154 -added _newslot metamethod in classes
\r
155 -added enums added constants
\r
156 -added sq_pushconsttable, sq_setconsttable
\r
157 -added default param
\r
158 -added octal literals(thx Dinosaur)
\r
159 -fixed debug hook, 'calls' and 'returns' are properly notified in the same number.
\r
160 -fixed a coroutine bug
\r
163 ***version 2.1.2 stable***
\r
164 -new behaviour for generators iteration using foreach
\r
165 now when a generator is iterated by foreach the value returned by a 'return val' statement
\r
166 will terminate the iteration but will not be returned as foreach iteration
\r
167 -added sq_setclassudsize()
\r
169 -added table.clear(), array.clear()
\r
170 -fixed sq_cmp() (thx jyuill)
\r
174 ***version 2.1.1 stable***
\r
176 -optimized internal function memory layout
\r
177 -new global symbol _version_ (is the version string)
\r
178 -code size optimization for float literals(on 32bits float builts)
\r
179 -now the raw ref API(sq_addref etc...) is fully reentrant.
\r
180 -fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB)
\r
181 -improved C reference performances in NO_GARBAGE_COLLECTOR builds
\r
182 -sq_getlocal() now enumerates also outer values.
\r
183 -fixed regexp library for GCC users.
\r
186 ***version 2.1 stable***
\r
187 -added static class fields, new keyword static
\r
188 -added 64bits architecture support
\r
189 -added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds
\r
190 -added functions with fixed environment, closure.bindenv() built-in function
\r
191 -all types except userdata and null implement the tostring() method
\r
192 -string concatenation now invokes metamethod _tostring
\r
193 -new metamethods for class objects _newmember and _inherited
\r
194 -sq_call() sq_resume() sq_wakeupvm() have a new signature
\r
195 -new C referencing implementation(scales more with the amount of references)
\r
196 -refactored hash table
\r
197 -new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv()
\r
198 -the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot
\r
199 -sq_setreleasehook() now also works for classes
\r
200 -stream.readstr() and stream.writestr() have been deprecated(this affects file and blob)
\r
201 -fixed squirrel.h undeclared api calls
\r
202 -fixed few minor bugs
\r
203 -SQChar is now defined as wchar_t
\r
204 -removed warning when building with -Wall -pedantic for GCC users
\r
205 -added new std io function writeclosuretofile()
\r
206 -added new std string functions strip(),rstrip(),lstrip() and split()
\r
207 -regular expressions operators (+,*) now have more POSIX greedyness behaviour
\r
208 -class constructors are now invoked as normal functions
\r
211 ***version 2.0.5 stable***
\r
212 -fixed some 64bits incompatibilities (thx sarge)
\r
213 -fixed minor bug in the stdlib format() function (thx Rick)
\r
214 -fixed a bug in dofile() that was preventing to compile empty files
\r
215 -added new API sq_poptop() & sq_getfreevariable()
\r
216 -some performance improvements
\r
219 ***version 2.0.4 stable***
\r
220 -weak references and related API calls
\r
221 -added sq_objtobool()
\r
222 -class instances memory policies improved(1 mem allocation for the whole instance)
\r
223 -typetags are now declared as SQUserPointer instead of unsigned int
\r
224 -first pass for 64bits compatibility
\r
225 -fixed minor bug in the stdio stream
\r
226 -fixed a bug in format()
\r
227 -fixed bug in string.tointeger() and string.tofloat()
\r
230 ***version 2.0.3 stable***
\r
231 -dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian
\r
232 -sq_setparamscheck() : now typemesk can check for null
\r
233 -added string escape sequence \xhhhh
\r
234 -fixed some C++ standard incompatibilities
\r
237 ***version 2.0.2 stable***
\r
238 -performances improvements (expecially for GCC users)
\r
239 -removed all dependencies from C++ exception handling
\r
243 ***version 2.0.1 stable***
\r
245 -sq_setparamscheck() now allows spaces in the typemask
\r
248 ***version 2.0 stable***
\r
249 -added API sq_gettypetag()
\r
250 -added built-in function to the bool type(tointeger, tostring etc...)
\r
253 ***version 2.0 release candidate 1(RC 1)***
\r
254 -added API sq_reseterror()
\r
255 -modified sq_release()
\r
256 -now class instances can be cloned
\r
260 ***version 2.0 beta 1***
\r
262 -class properties can be redefined in a derived class
\r
263 -added ops *= /= and %=
\r
264 -new syntax for class attributes declaration </ and /> instead of ( and )
\r
265 -increased the max number of literals per function from 65535 to 16777215
\r
266 -now free variables have proper lexical scoping
\r
267 -added API sq_createinstance(), sq_pushbool(), sq_getbool()
\r
268 -added built-in function type()
\r
269 -added built-in function obj.rawin(key) in table,class and instance
\r
270 -sq_rawget() and sq_rawset() now work also on classes and instances
\r
271 -the VM no longer uses C++ exception handling (more suitable for embedded devices)
\r
275 ***version 2.0 alpha 2***
\r
276 -globals scoping changed, now if :: is omitted the VM automatically falls back on the root table
\r
278 -added class level attributes
\r
281 ***version 2.0 alpha 1***
\r
282 -codebase branch from version 1.x
\r
284 -added functions with variable number of parameters(vargc & vargv and the ...)
\r
285 -0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while)
\r
286 -added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes()
\r
287 -modified api sq_settypetag()
\r
290 ***version 1.0 stable***
\r
291 -fixed some minor bug
\r
292 -improved operator 'delete' performances
\r
293 -added scientific notation for float numbers( eg. 2.e16 or 2.e-2)
\r
296 ***version 1.0 release candidate 2(RC 2)***
\r
297 -fixed bug in the vm(thx Pierre Renaux)
\r
298 -fixed bug in the optimizer(thx Pierre Renaux)
\r
299 -fixed some bug in the documentation(thx JD)
\r
300 -added new api functions for raw object handling
\r
301 -removed nested multiline comments
\r
302 -reduced memory footprint in C references
\r
305 ***version 1.0 release candidate 1(RC 1)***
\r
306 -fixed division by zero
\r
307 -the 'in' operator and obj.rawget() do not query the default delegate anymore
\r
308 -added function sq_getprintfunc()
\r
309 -added new standard library 'auxlib'(implements default error handlers)
\r
312 ***version 1.0 beta 4***
\r
313 -fixed a bug in the integer.tochar() built-in method
\r
314 -fixed unary minus operator
\r
315 -fixed bug in dofile()
\r
316 -fixed inconsistency between != and == operators(on float/integer comparison)
\r
317 -added javascript style unsigned right shift operator '>>>'
\r
318 -added array(size) constructor built-in function
\r
319 -array.resize(size,[fill]) built-in function accepts an optional 'fill' value
\r
320 -improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename()
\r
323 ***version 1.0 beta 3***
\r
324 -minor vm bug fixes
\r
325 -string allocation is now faster
\r
326 -tables and array memory usage is now less conservative(they shrink)
\r
327 -added regular expression routines in the standard library
\r
328 -The 'c' expression now accepts only 1 character(thx irbrian)
\r
329 -multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string")
\r
330 -added new keyword 'parent' for accessing the delegate of tables and unserdata
\r
331 -The metamethod '_clone' has been renamed '_cloned'
\r
332 -the _delslot metamethod's behaviour and prototype have been changed
\r
333 -new default function in the integer and float object 'tochar()'
\r
334 -the built-in function chcode2string has been removed
\r
335 -the default method [table].getdelegate() has been removed
\r
336 -new api sq_rawdeleteslot()
\r
337 -new table built-in method rawdelete(key)
\r
338 -the dynamic mudule loading has been removed from the standard distribution
\r
339 -some optimizations in the VM
\r
342 ***version 1.0 beta 2***
\r
343 -minor compiler/parser bug fixes
\r
344 -sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck()
\r
345 -sq_setparamscheck allows to add automatic parameters type checking in native closures
\r
346 -sq_compile() lost the lineinfo parameter
\r
347 -new api sq_enabledebuginfo() globally sets compiler's debug info generation
\r
348 -added consistency check on bytecode serialization
\r
349 -fixed += operator, now works on strings like +
\r
350 -added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime
\r
351 -added registry table
\r
352 -new api call sq_pushregistrytable()
\r
353 -added type tag to the userdata type sq_settypetag()
\r
354 -sq_getuserdata now queries the userdata typetag
\r
355 -the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons
\r
356 -new standard libraries(sqlibs are now obsolete)
\r
359 ***version 1.0 beta 1***
\r
360 -fixed a bug in the compiler (thanks Martin Kofler)
\r
361 -fixed bug in the switch case statement
\r
362 -fixed the _unm metamethod
\r
363 -fixed minor bugs in the API
\r
364 -fixed automatic stack resizing
\r
365 -first beta version
\r
366 first pass code clean up in the VM and base lib
\r
367 first pass code coverege test has been done on VM and built-in lib
\r
368 -new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete)
\r
369 -new api allows to specifiy a "print" function to output text(sq_printfunc)
\r
370 -added some small optimizations
\r
371 -new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread")
\r
372 -new built in functions have been added for manipulating the new "thread" type
\r
373 -friend virtual machines share the same root table, error handler and debug hook by default
\r
374 -new compile time options
\r
377 ***version 0.9 alpha***
\r
378 -fixed a garbage collection bug
\r
379 -fixed some API bugs(thanks to Joshua Jensen)
\r
380 -fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled)
\r
381 -new function parameters semantic, now passing a wrong number of parameters generates an exception
\r
382 -native closures have now a built in parameter number checking
\r
383 -sq_rawget and sq_rawset now work also on arrays
\r
384 -sq_getsize now woks also on userdata
\r
385 -the userdata release hook prototype is changed(now passes the size of the userdata)
\r
386 -the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen)
\r
388 -try/catch blocks do not cause any runtime memory allocation anymore
\r
391 ***version 0.8 alpha***
\r
392 -fixed a bug that was preventing to have callable userdata throught the metamethod _call
\r
393 -fixed a garbage collection bug
\r
394 -fixed == operator now can compare correctly different types
\r
395 -new built in method getstackinfos(level)
\r
396 -improved line informations precision for the debug hook
\r
397 -new api call sq_compilebuffer()
\r
398 -new built-in api function compilestring()
\r
399 -new syntactic sugar for function declarations inside tables
\r
400 -the debug API has been finalized
\r
403 ***version 0.7 alpha***
\r
404 -fixed critical bug SQInteger the tail call system
\r
405 -fixed bug in the continue statement code generation
\r
406 -fixed func call param issue(thanks to Rewoonenco Andrew)
\r
407 -added _delslot metamethod(thanks to Rewoonenco Andrew)
\r
408 -new multiline string expression ( delimited by <[ and ]> )
\r
409 -normal strings ("") do not allow embedded new line anymore
\r
410 -reduced vm memory footprint(C refs are shared between friend VMs)
\r
411 -new api method sq_deleteslot()
\r
412 -new debug hook event 'r' is triggered when a function returns
\r
415 ***version 0.6 alpha***
\r
416 -fixed switch statement(was executing the default case after a break)
\r
417 -sq_call() doesn't pop the closure (just the params)
\r
418 -the vm execution can be suspended from the C API anytime (micro-threads)
\r
419 -new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack()
\r
422 ***version 0.5 alpha***
\r
423 -fixed some minor bug
\r
424 -tested with non ASCII identifiers in unicode mode(I've tried chinese chars)
\r
425 -added built-in function string.find()
\r
426 -the built-in function array.sort() optionally accepts a cmp(a,b) function
\r
427 -the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname)
\r
428 -fixed some debug info imprecision
\r
431 ***version 0.4 alpha***
\r
433 -sq_call will pop arguments and closure also in case of failure
\r
434 -fixed a bug in sq_remove
\r
435 -now the VM detects delegation cycles(and throws an exception)
\r
436 -new operators ++ and --
\r
437 -new operator ',' comma operator
\r
438 -fixed some expression precedence issue
\r
439 -fixed bug in sq_arraypop
\r
442 ***version 0.3 alpha***
\r
443 -fixed a bug in array::insert()
\r
444 -optional Unicode core(define SQUNICODE or _UNICODE on Win32)
\r
445 -sq_compiler uses a new reader function SQLEXREADFUNC
\r
446 -the debug hook passes 'l' instead of 'line' for line callbacks
\r
447 and 'c' instead of 'call' for call callbacks
\r
448 -new array.extend() bulit-in function
\r
449 -new API sq_clone()
\r
452 ***version 0.2 pre-alpha***
\r
453 -new completely reentrant VM (sq_open and sq_close are now obsolete)
\r
454 -sq_newvm() has a new prototype
\r
455 -allocators are now global and linked in the VM
\r
456 -_newslot meta method added
\r
457 -rawset creates a slot if doesn't exists
\r
458 -the compiler error callback pass the vm handle(thanks Pierre Renaux)
\r
459 -sq_setforeignptr() sq_getforeingptr() are now public
\r
460 -sq_resume() now is possible to resume generators from C
\r
461 -sq_getlasterror() retrieve the last thrown error
\r
465 ***version 0.1 pre-alpha***
\r