GS9 version v3.0b 110330 by Alexandru Simion Version history: v3.0b - 110330 switch and fixes . updated documentation . fixed bug in CompileFunctions, GS_NODE_DECFNC was not returning the error if failed . fixed bug in CompileFunction, the body statements error was not returned (was using a local ret variable) . optimization for PUSHNUM / ART -> ARTN (frans) . added support for switch/case working like in C/C++ (in grammar and compiler) . adjusted asm code log format (frans) v3.0b - 110326 frans fixes . fixed bug string + number operation (gsOp_ADD_sn) . fixed bug in compiler optimization skipped (GS_CMD_ARTL+SET) . fixed buf in calling table string indexed element (like t.x()) . defined macros for making op codes construction more elegant . optimization for call global (speed) . updated commands instruction log format (.s) . updated get tick count on mac v3.0b - 110320 platformed . fixed bug with decrementation compilation (i-- was compiled as i++) . adjusted code for easier platforms integration (gs_stdafx, gs_platform, etc.) . added gs_system_win and gs_system_mac files; using with gs_system_en in engine . sys_findfiles no longer force lowercaps v3.0b - 101222 updated . updated documentation . better compile flow (find global declarations first) . include files supported in functions too . namespce and include supported in functions too (global function needs them) . namespace support for locals (to be similar to globals) . var, def in global space only, but easy to add in functions too . def for global constants (num,str,ptr) initialized in compile and used as const values intead of global vars . keep local names in functions for debuggers . global function to initialize globals after compile (optional) . gs_compilefile, gs_compilestring, gs_compilebuffer compile the global function if gfname is provided . gs_docommand compiles code from string as content of a temporary function and runs it (removed gs_dofile, gs_dobuffer) . some constants were removed from grammar and compiler and registered as global consts (NULL, TYPE_, PI, etc.) . removed GetConst trick from compiler. . removed some NULOBJ, NULFNC checks. Recomended to use ZERO (0) instead. . fixed bug parser buffer with ending double 0 . fixed bufg in vm LOADF leak . support to overwrite new, del funcions (regfnc) . gs_toval, gs_verify, gs_valstr . op true & false in comparing different types v3.0b - 100501 updated . fixed bugs in gslib_files, gslib_tables . fixed SHL bug in operators . fixed bug in gslib_strings . fixed bug in env with deleting functions . extended support for calling member functions (now accepts a.b.fn()) . changed params order for tabset ( tab, val, pos, count ) v3.0b - 100410 "3D" . single numeric type (float); integer no longer supported; readonly flag for globals was introduced in compiler to compensate for NIL predeclarations . removed NIL type; numeric zero is used instead . ptr type accepts operations with num type (+/-); position parameter associated with pointers was removed from libs (memory, files) . plus operator on tables add elements to support vectors math . two operators tables (unary and binary) . renamed to gs_ (no more gse, gso, gsc, etc) and to gs_type_ . fixed grammar for am_debug flags (flags const not exported) .upd gs9.chm help with index and stuff :) v1.0 - 050419 First official version (used in Saboteur95) .gs_dostring bug fixed .gs_recover will clear script callstack up to code level .gs_ckparams fixed .gso_tabs removed .file functions are over-writable .gserrorexit is over-writable; better errorexit .gsVM::Done clear callstack (recover) .libs are in the same directory v0.6 - 050129 .grammar: allow empty expressions, used in calls .fixed vm bug: objects leaks when comparing strings .libs: gs_rand, gs_frand, gs_srand .fixed nametype bug (non-static was returned) .implicit creation for STR and TAB; GSOP_NEW, GSNODE_NEW added .gserrorexit function .fixed decfn bug ( if params declaration failed, the error was not returned ) .defines with values for INT,FLT,STR; grammar: defobj .obj values; NUL allowed; changed tokens to TOK_NULVAL, TOK_INTVAL, ... .table cookie indexing (tab.member) throught variable value; string indexing eliminated; GSOP_IDX; varidd .better error handeling: gsErrInfo, gsErrorHandler, error codes changed, etc. .debug local vars in vm for current line, file, func (only on _DEBUG) .less parameters in function call allowed (NULs are pushed) v0.5 - 050112 .gs_reglib and lib register function changed to use vm insteed of env .GSFN_SCRIPTED flag .bug in compiler (node - n) .restrict locals again (must have different names than globals or fn) .restrict defines .remove @ and IDI .DECEXP become IFEXP .remove VARCK node (simplified) .hash for fn, var, sym v0.4 - 050111 .explicit declarations for globals and functions ( int i; var i; func fn; func fn(){} ) .implicit declarations for locals .allow local names to be the same as globals or functions .no more $ for globals (var: find local; else find global; else add local) .sizeof, typeof operators .@idd insteed of #idd .?var to test if not NUL (return 0 if NUL else 1) .exp ? exp : exp (GSNODE_SELEXP) .deny redeclarations (no change of global types, or change of non-empty or exported functions) .compare (==,!=) strings v0.3 - 050110 .no more explicit declarations (except extern globals for clarity) .cast operators work on expressions .call function use fid as last param .bug gs_type fixed .grammar change for simplicity (decidd_list) v0.2 - 050107 fixed some bugs $ globals etc v0.1 - 050103 first release If you want to ask questions or write your opinion, visit GS9 web site: http://www.simion.co.uk/gs9