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