Dec. 8 2015 Developing class, added reference, inheritance 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 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 and 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.