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 suing 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.