Feb. 15 2016 Fixed some compile issues with Xcode Feb. 11 2016 Fixed a bug of the EXIT statement with multiple line IF statement Feb. 10 2016 Fixed a wrong loop bug with WHILE and DO statements Feb. 4 2016 Avoided warnings with some compilers Fixed a member assignment bug when cloning a class instance Feb. 3 2016 Added an INDEX_OF statement Fixed a wrong parameter variable accessing bug Fixed some memory leaks with collection GC Fixed a wrong garbage collection bug with members of a class instance Fixed a wrong dereferencing bug with referenced type hashing and comparison Fixed an invalid lambda bug with GC Fixed a memory leak with sub routine when assigning it as an upvalue Feb. 2 2016 Optimized list sorting function by using merge sorting Jan. 31 2016 Ignored first frame name with the TRACE command Jan. 30 2016 Added a TRACE command to the shell Fixed an infinity loop bug in the mb_debug_get_stack_trace function Jan. 29 2016 Fixed lookup bugs with member sub routine of a class instance Fixed a member accessing bug with class instance Jan. 28 2016 Fixed a routine retrieving bug Fixed a crash bug when skipping a struct Jan. 27 2016 Removed the MB_ENABLE_GC macro Refactored initial reference count Polished code Jan. 26 2016 Added an mb_gc function Added a SET_IMPORTING_DIRS statement to the shell Added friendly error promption when memory overflow Added source file information to stepped handler Fixed a wrong argument processing bug with variable arguments Fixed a wrong hash bug with string object Fixed a memory corruption bug with importing directory setting Optimized cached list accessing Jan. 25 2016 Fixed a memory leak when printing a referenced usertype Fixed a bug with nested IF statement Fixed a bug with WHILE and DO statements when returning from a sub routine Fixed an indexing bug with list Added a new sample script source file Jan. 23 2016 Added lazy evaluation for ranged list Jan. 22 2016 Added an IN keyword Added support to loop on collections by using FOR-IN statement Added a "hash" meta method to calculate the hash code of a class instance Added a "compare" meta method to compare two class instances Jan. 21 2016 Fixed a referenced usertype comparison bug Fixed a wrong memory copy bug with the PRINT statement Added a "tostring" meta method to serialize a class instance Improved type handling Jan. 20 2016 Fixed an unknown type handling bug Jan. 19 2016 Added support to apply the LEN statement to variable arguments as LEN(...) Polished code Jan. 18 2016 Added variable arguments support Added a NOW statement to the shell Polished shell implementation code Jan. 17 2016 Added source file information to error handling Fixed a memory leak with sub routine which returns a string Jan. 16 2016 Added a range of integer syntax for the LIST statement, eg. LIST(m TO n) Added extra importing directories support to shell Jan. 15 2016 Added a REFLECT statement Added an MB_ENABLE_USERTYPE_REF macro Added an MB_ENABLE_ARRAY_REF macro Fixed some crash bugs with invalid syntax Fixed some memory leak with invalid syntax Fixed an invalid GC table iteration bug Jan. 14 2016 Fixed a collection accessing bug in an assignment statement Fixed a lambda unreferencing issue Fixed a lambda evaluation bug with upvalues from meta class Fixed a routine disposing issue Fixed a variable assignment bug when it was holding a routine Fixed a missing assignment bug with class field accessor Fixed an issue with lambda when a class instance went out of use Removed support of storing a literal instance in a variable Simplified variable creation Jan. 13 2016 Optimized hash table algorithm Jan. 12 2016 Improved sub routine by unreference objects which were out of scope Fixed a routine evaluation bug when it's stored in a variable Fixed a disposing issue with collection iterators Fixed some memory leak with lambda Fixed a multiple disposing bug with string expression calculation Improved GC with outer scopes of lambda Fixed some other minor bugs with lambda Fixed a wrong disposing bug when accessing a collection by brackets Optimized memory occupation with lambda Jan. 11 2016 Fixed a crash bug when a DO-UNTIL statement is the end of a program Fixed a memory leak with string manipulation Jan. 9 2016 Developing lambda, improved error handling Developing lambda, fixed an issue with only a PRINT statement Jan. 8 2016 Developing lambda, fixed a lambda scope linkage issue Developing lambda, fixed an upvalue passing issue Jan. 7 2016 Developing lambda, added parameter and upvalue processing Developing lambda, added closure maintenance Developing lambda, added lambda evaluation Developing lambda, added lambda unreferencing functions Jan. 6 2016 Developing lambda, added cloning support Added support to use TYPE("NUMBER") to represent both integer and real Improved IS statement Jan. 5 2016 Developing lambda, added data structure Developing lambda, added a LAMBDA statement Developing lambda, added a _core_lambda function Developing lambda, added an MB_ENABLE_LAMBDA macro Jan. 4 2016 Added stack tracing Added an mb_debug_get_stack_trace function and an MB_ENABLE_STACK_TRACE macro Added support to duplicate a class instance by NEW statement with an identifier string Fixed a string value copy issue in mb_pop_value Jan. 2 2016 Added support to apply GET statement to a class instance Added support to access a collection by brackets Fixed a wrong scope bug caused by cloned class instance Fixed a GC issue by adding reference count when cloning a collection or a referenced usertype Fixed a mistake in VAR statement Polished document Jan. 1 2016 Version 1.2 Added a new sample script source file Added case-insensitive type name string comparison support Fixed an invalid execution point bug when a program begins with a label Dec. 30 2015 Improved error handling with sub routine and class Implemented DIR command Polished code Polished document Dec. 29 2015 Fixed a multiple disposing bug with expression calculation Fixed a memory leak with GC caused by meta class Improved GC with array and string Improved string duplication Improved array handling Polished array manipulation code Dec. 28 2015 Fixed a GC bug Fixed a wrong routine evaluation bug Improved threshold algorithm for the memory pool Polished code Dec. 25 2015 Added support to put a class instance into a variable Improved error handling with sub routine and class Fixed an unary calculation issue Fixed a memory leak in class definition Polished code Dec. 24 2015 Improved defining a class in C Added a pair of mb_get_class_userdata/mb_set_class_userdata functions Added a pair of mb_get_userdata/mb_set_userdata functions Refactored memory layout of the _routine_t struct Polished document Dec. 21 2015 Fixed a class GC bug Dec. 19 2015 Improved error handling when defining a class in C Dec. 18 2015 Avoided compiling issues Improved compatibility with Arduino Dec. 17 2015 Added support to evaluate a sub routine by an accessor in a PRINT statement Added support to get a value by an accessor in a PRINT statement Fixed a method invoking issue when met from meta class Dec. 15 2015 Added a pair of mb_begin_class/mb_end_class functions Added an mb_get_value_by_name function Added an mb_add_var function Added an mb_set_routine function Added native sub routine support Dec. 13 2015 Avoided warnings Dec. 11 2015 Added an IS statement to detect type equality of a value Added support to store a routine in a variable by CALL statement Added GC accessing to fields of a class instance Fixed a memory leak with GC caused by reference cycle Finished internal class development Dec. 10 2015 Developing class, added a NEW statement to duplicate a class instance Dec. 9 2015 Developing class, added accessing by identifier Developing class, added a VAR statement to declare a member variable Developing class, added routine evaluation in a class Developing class, added reference count for class Fixed a crash bug when exiting with a parsing error Fixed a multiple disposing bug when doing GC Dec. 8 2015 Developing class, added reference struct, added meta class linking Improved stability for sub routine Dec. 7 2015 Improved TICKS function Initialized random number seed on start up Dec. 4 2015 Updated icon Added structures for class development Nov. 30 2015 Improved stability for sub routine Improved error handling with shell Nov. 26 2015 Raised error for invalid routine usage Fixed a memory corruption bug when met an invalid routine usage Nov. 4 2015 Added an mb_raise_error function Nov. 3 2015 Fixed a memory leak with string manipulation Oct. 31 2015 Added some mb_value_t initialization helper macros Oct. 29 2015 Added an mb_get_ref_value function Improved mb_set_coll Oct. 28 2015 Added module (namespace) support Oct. 27 2015 Added an mb_set_import_handler function Added an mb_init_coll function Fixed a collection referencing by iterator bug during GC Fixed an argument detection issue with nil value Improved stability Oct. 23 2015 Added public collection manipulation interfaces: mb_get_coll, mb_set_coll, mb_remove_coll, mb_count_coll Improved usertype by adding size customizable mb_val_bytes_t to the value union Improved referenced usertype Fixed a dictionary iterator validation bug Fixed a wrong identifier parsing bug, thanks to Julien for pointing it out Added threshold to the memory pool Oct. 22 2015 Fixed a memory issue in GC, thanks to John and Cybermonkey342 for pointing it out Oct. 21 2015 Fixed a reference count manipulation bug Fixed some uninitialized value issues Oct. 20 2015 Added a SRND statement Added range support for RND statement Fixed a wrong processing bug when return in an IF statement chunk Fixed a scope manipulation bug when evaluating a none parameter routine, thanks to Cybermonkey342 and John for pointing it out Improved error handling Oct. 19 2015 Added a sub routine invoking function Added an mb_get_routine function Added an mb_eval_routine function Renamed old mb_ref_value to mb_make_ref_value Added a new mb_ref_value function Added an mb_unref_value function Oct. 15 2015 Added referenced usertype support Oct. 14 2015 Added GC (Garbage Collection) for referenced objects Oct. 13 2015 Changed array to referenced type Fixed a memory pool sorting issue Oct. 12 2015 Avoided cycle importing Improved memory pool Oct. 11 2015 Added a CLONE statement/function for collections Optimized list indexing Optimized list counting Oct. 10 2015 Improved stability for nested IF statement Oct. 8 2015 Fixed an iterator validation bug Fixed an iterator assignment issue Improved stability, refused nested array inside other collections, and vice versa Oct. 7 2015 Added non number data comparison Improved collection stability Accepted dictionary iterator for VAL statement Oct. 5 2015 Added a LIST collection Added a DICT collection Added TYPE statement Added an mb_get_type_string function Fixed a wrong evaluation bug in nested IF statements, thanks to Julien Krief for pointing it out Sep. 30 2015 Improved UTF8 string manipulation Sep. 29 2015 Added UTF8 support for string manipulation Sep. 28 2015 Fixed a compatibility bug with scope meta info, thanks to Cybermonkey342 and John for pointing it out Improved compatibility with TCC Sep. 24 2015 Fixed bugs in a recursive sub routine, thanks to John for pointing it out Fixed identifier lookup bugs Fixed a memory leak when pushing string arguments Sep. 22 2015 Added IMPORT statement Added mb_get_var, mb_get_var_value and mb_set_var_value Sep. 21 2015 Implemented tail recursion optimization in sub routine Added array length gain in LEN function Fixed a crash bug when returning nothing in a sub routine Polished document Sep. 20 2015 Added array manipulation ability to script, it's able to assign an array to a variable or use it as a scripting interface argument Added recursive sub routine support Fixed a wrong argument detection bug in mb_has_arg Sep. 18 2015 Fixed a float number parsing bug, thanks to Cybermonkey342 for pointing it out Added directly expression evaluation shell command Sep. 17 2015 Allowed string in a boolean expression Added support for sub routine in PRINT Fixed a repeated disposing bug when using sub routine Sep. 16 2015 Added Nil type handling, including assignment, boolean operation, serialization, etc. Added an MB_CONVERT_TO_INT_LEVEL macro, would convert float to integer as much as possible if this macro was enabled Polished document Sep. 11 2015 Added a duplicate sub routine error handling Added optional argument support for INPUT statement Fixed a repeated disposing bug of a variable in sub routine Polished document Sep. 8 2015 Fixed a type parsing of sub routine bug Fixed a scope processing bug Fixed a sub routine invoking bug without leading CALL statement or result receiver Added a makefile Sep. 6 2015 Improved sub routine Sep. 2 2015 Added sub routine type insurance Prompted more friendly dummy function message Polished code Polished document Sep. 1 2015 Added support for user customized sub routine by DEF/ENDDEF Aug. 26 2015 Added a memory pool to interpreter shell in main.c Aug. 25 2015 Allowed a user to define the memory tag data type, unsigned short as default Added an mb_set_memory_manager function, allows user defined memory management Added referencable data type size constants Aug. 11 2015 Fixed a wrong IF trunk processing bug, thanks to irony for pointing it out Fixed a crash bug with an invalid IF statement Jul. 27 2015 Fixed a memory leak with mb_pop_xxx, thanks to Daniel Haensse for pointing it out Jul. 20 2015 Fixed a string manipulation bug Jul. 12 2015 Added array manipulation functions Jun. 19 2015 Added an mb_schedule_suspend interface to schedule to suspend the execution Jun. 15 2015 Fixed a wrong token position marking issue with interactive mode, thanks to Daniel Haensse for pointing it out May. 6 2015 Removed redundant EOS tokens Polished data precision related macros May. 5 2015 Added string type support for non-simple array Fixed a memory leak when storing strings to a non-string array Polished data precision related macros Apr. 27 2015 Added code line inserting/removing to interpreter shell Changed mb_dispose_value as public Apr. 23 2015 Version 1.1 Added debug APIs Added (nestable) multiple line IF statement support Apr. 15 2015 Added mb_pop_usertype, mb_push_usertype to support user defined type Polished code Polished document Apr. 13 2015 Added mixed integer/float array support Added warning prompt when passing strings to maths functions Fixed a memory leak when storing strings in an array Polished the interpreter commands Apr. 11 2015 Moved struct mb_interpreter_t from my_basic.h to my_basic.c Added an mb_has_arg interface to tell whether there is any more argument Added an MB_ENABLE_SOURCE_TRACE macro to enable or disable source tracing Disposed parsing context at runtime to reduce memory occupation Apr. 10 2015 Improved compatibility with PellesC Fixed a double precision float parsing bug on all 32bit systems, thanks to Pito for pointing it out Fixed an exponential number parsing bug, thanks to Pito for pointing it out Fixed a crash bug when a script begins with a meaningless negtive number Mar. 25 2015 Changed _strupr macro to mb_strupr function Added an mb_memdup function Fixed a repeated disposing bug of an intermediate value Dec. 17 2014 Fixed a calculation crash bug Fixed a memory leak with intermediate value Dec. 16 2014 Fixed a negative calculation bug in a function argument Dec. 9 2014 Improved compatibility with BCB May. 25 2014 Added an mb_set_inputer function which allows a user to specify an INPUT reader, thanks to Michael P. Welch for suggestion Added an mb_remove_reserved_func function which allows a user to disable/remove a reserved statement May. 22 2014 Fixed a crash bug when missing colon in a combined line, thanks to Michael P. Welch for pointing it out Fixed a missing lexical cursor stepping bug in INPUT statement Mar. 17 2014 Added an Xcode project Added a safe stdin reader function mb_gets Fixed a crash bug in INPUT statement Feb. 17 2014 Added mod by zero processing Feb. 16 2014 Fixed a crash bug in _core_for, thanks to mummylauncher for pointing it out Jul. 19 2013 Fixed a crash bug in _execute_statement, thanks to Jon Mayo for pointing it out Feb. 25 2013 Fixed a cross routine multiple statement execution bug, thanks to Bruce Kendall for pointing it out Fixed a memory corruption bug when loading a script file Jan. 9 2013 Fixed a crash bug when using EDIT command Dec. 14 2012 Added an invalid expression error handling Added an out of memory error handling Dec. 5 2012 Fixed a minus calculation bug, thanks to Bill Walker for pointing it out Nov. 14 2012 Fixed a cross routine RETURN bug, thanks to Bruce Kendall for pointing it out Sep. 12 2012 Fixed a bug in ASC Fixed a label parsing, jumping bug, thanks to Ahmad Hawwash for pointing above two issues out Fixed a crash bug in IF statement Added divide by zero processing Added calculation error raising Sep. 1 2012 Fixed a redisposing bug when retrieving a string argument, thanks to Ahmad Hawwash for pointing it out Fixed a memory leak after retrieving a composited string argument Aug. 29 2012 Modified an odd string comparison behavior, thanks to Matthias Nott for testing it out Added a warning system, disabled warning as default Improved compatibility with GCC Aug. 3 2012 Implemented memory occupation statistics Improved compatibility on 64bit systems Fixed some warnings under a stricter mode Jul. 21 2012 Added a compatibility macro for PRINT a newline Added an mb_attempt_func_end C API Fixed a unary minus symbol parsing bug Jul. 19 2012 Fixed a crash bug caused by a mistake in calculation priority table, thanks to Bruce Kendall for pointing it out Jul. 10 2012 Implemented KILL command Fixed a negative calculation bug Added an invalid identifier usage error handling Avoided some warnings on gcc Jul. 5 2012 Implemented LIST, EDIT, LOAD, SAVE commands Jul. 4 2012 Fixed some crash bugs Fixed some memory leaks Jul. 3 2012 Modified/added math functions: FLOOR, CEIL, FIX Fixed an INPUT type issue Changed float number formatting from using "%f" to "%g" in PRINT, thanks to Bruce Kendall for pointing above three issues out Refactored the way to load a script file Done several small improvements Jun. 29 2012 Fixed a newline mistake in PRINT Jun. 29 2012 Implemented customizable print functor Improved PRINT statement Fixed an infinity loop bug in RND function Fixed some crash bugs Jun. 28 2012 Fixed a cross routine RETURN bug, thanks to Bruce Kendall for pointing it out Fixed some memory leaks Refactored error position informing Jun. 18 2012 Implemented user extended abort, thanks to Bruce Kendall for giving suggestion Apr. 30 2012 Compress number to integer if necessary Apr. 27 2012 Fixed a string connecting crash bug, thanks to Ahmad Hawwash for pointing it out Improved portability on gcc Aug. 3 2011 Fixed hashtable removing bug Jun. 18 2011 Fixed some mistakes Allowed underline character appear in an identifier Apr. 15 2011 Fixed garbage collection and _label_t disposing bugs Apr. 14 2011 Fixed some list/comparison operator bugs Feb. 15 2011 Improved portability on Cocoa Improved portability on VC++ 6.0 Fixed a suspend/resume bug Feb. 9 2011 Fixed struct mb_interpreter_t declaration warnings on gcc Feb. 1 2011 Version 1.0 First release.