restore trunk
[supertux.git] / src / squirrel / HISTORY
1 ***version 2.1.2 stable***\r
2 -new behaviour for generators iteration using foreach\r
3 now when a generator is iterated by foreach the value returned by a 'return val' statement\r
4 will terminate the iteration but will not be returned as foreach iteration\r
5 -added sq_setclassudsize()\r
6 -added sq_clear()\r
7 -added table.clear(), array.clear()\r
8 -fixed sq_cmp() (thx jyuill)\r
9 -fixed minor bugs\r
10 \r
11 ***2006-08-21        ***\r
12 ***version 2.1.1 stable***\r
13 -vm refactoring\r
14 -optimized internal function memory layout\r
15 -new global symbol _version_ (is the version string)\r
16 -code size optimization for float literals(on 32bits float builts)\r
17 -now the raw ref API(sq_addref etc...) is fully reentrant.\r
18 -fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB)\r
19 -improved C reference performances in NO_GARBAGE_COLLECTOR builds\r
20 -sq_getlocal() now enumerates also outer values.\r
21 -fixed regexp library for GCC users.\r
22 \r
23 ***2006-03-19        ***\r
24 ***version 2.1 stable***\r
25 -added static class fields, new keyword static\r
26 -added 64bits architecture support\r
27 -added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds\r
28 -added functions with fixed environment, closure.bindenv() built-in function\r
29 -all types except userdata and null implement the tostring() method\r
30 -string concatenation now invokes metamethod _tostring\r
31 -new metamethods for class objects _newmember and _inherited\r
32 -sq_call() sq_resume() sq_wakeupvm() have a new signature\r
33 -new C referencing implementation(scales more with the amount of references)\r
34 -refactored hash table\r
35 -new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv()\r
36 -the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot\r
37 -sq_setreleasehook() now also works for classes\r
38 -stream.readstr() and stream.writestr() have been deprecated(this affects file and blob)\r
39 -fixed squirrel.h undeclared api calls\r
40 -fixed few minor bugs\r
41 -SQChar is now defined as wchar_t\r
42 -removed warning when building with -Wall -pedantic for GCC users\r
43 -added new std io function writeclosuretofile()\r
44 -added new std string functions strip(),rstrip(),lstrip() and split()\r
45 -regular expressions operators (+,*) now have more POSIX greedyness behaviour\r
46 -class constructors are now invoked as normal functions\r
47 \r
48 ***2005-10-02          ***\r
49 ***version 2.0.5 stable***\r
50 -fixed some 64bits incompatibilities (thx sarge)\r
51 -fixed minor bug in the stdlib format() function (thx Rick)\r
52 -fixed a bug in dofile() that was preventing to compile empty files\r
53 -added new API sq_poptop() & sq_getfreevariable()\r
54 -some performance improvements\r
55 \r
56 ***2005-08-14          ***\r
57 ***version 2.0.4 stable***\r
58 -weak references and related API calls\r
59 -added sq_objtobool()\r
60 -class instances memory policies improved(1 mem allocation for the whole instance)\r
61 -typetags are now declared as SQUserPointer instead of unsigned int\r
62 -first pass for 64bits compatibility\r
63 -fixed minor bug in the stdio stream\r
64 -fixed a bug in format()\r
65 -fixed bug in string.tointeger() and string.tofloat()\r
66 \r
67 ***2005-06-24          ***\r
68 ***version 2.0.3 stable***\r
69 -dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian\r
70 -sq_setparamscheck() : now typemesk can check for null\r
71 -added string escape sequence \xhhhh\r
72 -fixed some C++ standard incompatibilities\r
73 \r
74 ***2005-05-15          ***\r
75 ***version 2.0.2 stable***\r
76 -performances improvements (expecially for GCC users)\r
77 -removed all dependencies from C++ exception handling\r
78 -various bugfixes\r
79 \r
80 ***2005-04-12            ***\r
81 ***version 2.0.1 stable***\r
82 -various bugfixes\r
83 -sq_setparamscheck() now allows spaces in the typemask\r
84 \r
85 ***2005-04-03            ***\r
86 ***version 2.0 stable***\r
87 -added API sq_gettypetag()\r
88 -added built-in function to the bool type(tointeger, tostring etc...)\r
89 \r
90 ***2005-02-27                                                   ***\r
91 ***version 2.0 release candidate 1(RC 1)***\r
92 -added API sq_reseterror()\r
93 -modified sq_release()\r
94 -now class instances can be cloned\r
95 -various bufixes\r
96 \r
97 ***2005-01-26        ***\r
98 ***version 2.0 beta 1***\r
99 -added bool type\r
100 -class properties can be redefined in a derived class\r
101 -added ops *= /= and %=\r
102 -new syntax for class attributes declaration </ and /> instead of ( and )\r
103 -increased the max number of literals per function from 65535 to 16777215\r
104 -now free variables have proper lexical scoping\r
105 -added API sq_createinstance(), sq_pushbool(), sq_getbool()\r
106 -added built-in function type()\r
107 -added built-in function obj.rawin(key) in table,class and instance\r
108 -sq_rawget() and sq_rawset() now work also on classes and instances\r
109 -the VM no longer uses C++ exception handling (more suitable for embedded devices)\r
110 -various bufixes\r
111 \r
112 ***2004-12-21         ***\r
113 ***version 2.0 alpha 2***\r
114 -globals scoping changed, now if :: is omitted the VM automatically falls back on the root table\r
115 -various bufixes\r
116 -added class level attributes\r
117 \r
118 ***2004-12-12         ***\r
119 ***version 2.0 alpha 1***\r
120 -codebase branch from version 1.x\r
121 -added classes\r
122 -added functions with variable number of parameters(vargc & vargv and the ...)\r
123 -0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while)\r
124 -added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes()\r
125 -modified api sq_settypetag()\r
126 \r
127 ***2004-11-01        ***\r
128 ***version 1.0 stable***\r
129 -fixed some minor bug\r
130 -improoved operator 'delete' performances\r
131 -added scientific notation for float numbers( eg. 2.e16 or 2.e-2)\r
132 \r
133 ***2004-08-30        ***\r
134 ***version 1.0 release candidate 2(RC 2)***\r
135 -fixed bug in the vm(thx Pierre Renaux)\r
136 -fixed bug in the optimizer(thx Pierre Renaux)\r
137 -fixed some bug in the documentation(thx JD)\r
138 -added new api functions for raw object handling\r
139 -removed nested multiline comments\r
140 -reduced memory footprint in C references\r
141 \r
142 ***2004-08-23        ***\r
143 ***version 1.0 release candidate 1(RC 1)***\r
144 -fixed division by zero\r
145 -the 'in' operator and obj.rawget() do not query the default delegate anymore\r
146 -added function sq_getprintfunc()\r
147 -added new standard library 'auxlib'(implements default error handlers)\r
148 \r
149 ***2004-07-12        ***\r
150 ***version 1.0 beta 4***\r
151 -fixed a bug in the integer.tochar() built-in method\r
152 -fixed unary minus operator\r
153 -fixed bug in dofile()\r
154 -fixed inconsistency between != and == operators(on float/integer comparison)\r
155 -added javascript style unsigned right shift operator '>>>'\r
156 -added array(size) constructor built-in function\r
157 -array.resize(size,[fill]) built-in function accepts an optional 'fill' value\r
158 -improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename()\r
159 \r
160 ***2004-05-23        ***\r
161 ***version 1.0 beta 3***\r
162 -minor vm bug fixes\r
163 -string allocation is now faster\r
164 -tables and array memory usage is now less conservative(they shrink)\r
165 -added regular expression routines in the standard library\r
166 -The 'c' expression now accepts only 1 character(thx irbrian)\r
167 -multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string")\r
168 -added new keyword 'parent' for accessing the delegate of tables and unserdata\r
169 -The metamethod '_clone' has been renamed '_cloned'\r
170 -the _delslot metamethod's behaviour and prototype have been changed\r
171 -new default function in the integer and float object 'tochar()'\r
172 -the built-in function chcode2string has been removed\r
173 -the default method [table].getdelegate() has been removed\r
174 -new api sq_rawdeleteslot()\r
175 -new table built-in method rawdelete(key)\r
176 -the dynamic mudule loading has been removed from the standard distribution\r
177 -some optimizations in the VM\r
178 \r
179 ***2004-04-21        ***\r
180 ***version 1.0 beta 2***\r
181 -minor compiler/parser bug fixes\r
182 -sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck()\r
183 -sq_setparamscheck allows to add automatic parameters type checking in native closures\r
184 -sq_compile() lost the lineinfo parameter\r
185 -new api sq_enabledebuginfo() globally sets compiler's debug info generation\r
186 -added consistency check on bytecode serialization\r
187 -fixed += operator, now works on strings like +\r
188 -added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime\r
189 -added registry table\r
190 -new api call sq_pushregistrytable()\r
191 -added type tag to the userdata type sq_settypetag()\r
192 -sq_getuserdata now queries the userdata typetag\r
193 -the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons\r
194 -new standard libraries(sqlibs are now obsolete)\r
195 \r
196 ***2004-02-20        ***\r
197 ***version 1.0 beta 1***\r
198 -fixed a bug in the compiler (thanks Martin Kofler)\r
199 -fixed bug in the switch case statement\r
200 -fixed the _unm metamethod\r
201 -fixed minor bugs in the API\r
202 -fixed automatic stack resizing\r
203 -first beta version \r
204         first pass code clean up in the VM and base lib\r
205         first pass code coverege test has been done on VM and built-in lib\r
206 -new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete)\r
207 -new api allows to specifiy a "print" function to output text(sq_printfunc)\r
208 -added some small optimizations\r
209 -new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread")\r
210 -new built in functions have been added for manipulating the new "thread" type\r
211 -friend virtual machines share the same root table, error handler and debug hook by default\r
212 -new compile time options\r
213 \r
214 ***2004-01-19       ***\r
215 ***version 0.9 alpha***\r
216 -fixed a garbage collection bug\r
217 -fixed some API bugs(thanks to Joshua Jensen)\r
218 -fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled)\r
219 -new function parameters semantic, now passing a wrong number of parameters generates an exception\r
220 -native closures have now a built in parameter number checking\r
221 -sq_rawget and sq_rawset now work also on arrays\r
222 -sq_getsize now woks also on userdata\r
223 -the userdata release hook prototype is changed(now passes the size of the userdata)\r
224 -the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen)\r
225 -faster compiler\r
226 -try/catch blocks do not cause any runtime memory allocation anymore\r
227 \r
228 ***2003-12-06       ***\r
229 ***version 0.8 alpha***\r
230 -fixed a bug that was preventing to have callable userdata throught the metamethod _call\r
231 -fixed a garbage collection bug\r
232 -fixed == operator now can compare correctly different types\r
233 -new built in method getstackinfos(level)\r
234 -improoved line informations precision for the debug hook\r
235 -new api call sq_compilebuffer()\r
236 -new built-in api function compilestring()\r
237 -new syntactic sugar for function declarations inside tables\r
238 -the debug API has been finalized\r
239 \r
240 ***2003-11-17       ***\r
241 ***version 0.7 alpha***\r
242 -fixed critical bug SQInteger the tail call system\r
243 -fixed bug in the continue statement code generation\r
244 -fixed func call param issue(thanks to Rewoonenco Andrew)\r
245 -added _delslot metamethod(thanks to Rewoonenco Andrew)\r
246 -new multiline string expression ( delimited by <[ and ]> )\r
247 -normal strings ("") do not allow embedded new line anymore\r
248 -reduced vm memory footprint(C refs are shared between friend VMs)\r
249 -new api method sq_deleteslot()\r
250 -new debug hook event 'r' is triggered when a function returns\r
251 \r
252 ***2003-11-04       ***\r
253 ***version 0.6 alpha***\r
254 -fixed switch statement(was executing the default case after a break)\r
255 -sq_call() doesn't pop the closure (just the params)\r
256 -the vm execution can be suspended from the C API anytime (micro-threads)\r
257 -new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack()\r
258 \r
259 ***2003-10-13       ***\r
260 ***version 0.5 alpha***\r
261 -fixed some minor bug\r
262 -tested with non ASCII identifiers in unicode mode(I've tried chinese chars)\r
263 -added built-in function string.find()\r
264 -the built-in function array.sort() optionally accepts a cmp(a,b) function\r
265 -the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname)\r
266 -fixed some debug info imprecision\r
267 \r
268 ***2003-10-01       ***\r
269 ***version 0.4 alpha***\r
270 -faster VM\r
271 -sq_call will pop arguments and closure also in case of failure\r
272 -fixed a bug in sq_remove\r
273 -now the VM detects delegation cycles(and throws an exception)\r
274 -new operators ++ and --\r
275 -new operator ',' comma operator\r
276 -fixed some expression precedence issue\r
277 -fixed bug in sq_arraypop\r
278 \r
279 ***2003-09-15       ***\r
280 ***version 0.3 alpha***\r
281 -fixed a bug in array::insert()\r
282 -optional Unicode core(define SQUNICODE or _UNICODE on Win32)\r
283 -sq_compiler uses a new reader function SQLEXREADFUNC\r
284 -the debug hook passes 'l' instead of 'line' for line callbacks\r
285         and 'c' instead of 'call' for call callbacks\r
286 -new array.extend() bulit-in function\r
287 -new API sq_clone()\r
288 \r
289 ***2003-09-10           ***\r
290 ***version 0.2 pre-alpha***\r
291 -new completely reentrant VM (sq_open and sq_close are now obsolete)\r
292 -sq_newvm() has a new prototype\r
293 -allocators are now global and linked in the VM\r
294 -_newslot meta method added\r
295 -rawset creates a slot if doesn't exists\r
296 -the compiler error callback pass the vm handle(thanks Pierre Renaux)\r
297 -sq_setforeignptr() sq_getforeingptr() are now public\r
298 -sq_resume() now is possible to resume generators from C\r
299 -sq_getlasterror() retrieve the last thrown error\r
300 -improved docs\r
301 \r
302 ***2003-09-06           ***\r
303 ***version 0.1 pre-alpha***\r
304 first release\r