diff --git a/HISTORY b/HISTORY index 6b9c0f9..5aa724d 100755 --- a/HISTORY +++ b/HISTORY @@ -1,883 +1,886 @@ -Dec. 21 2016 -Improved parsing context maintaining - -Dec. 20 2016 +Dec. 22 2016 +Improved shell prompting when removing a non-exist file + +Dec. 21 2016 +Improved parsing context maintaining + +Dec. 20 2016 Narrowed array structure -Narrowed bool_t - -Dec. 16 2016 -Improved INPUT statement - -Dec. 5 2016 -Added a REM statement - -Nov. 1 2016 -Fixed a file importing bug -Removed the SET_IMPORTING_DIRS statement - -Oct. 23 2016 -Fixed a percent symbol printing bug, thanks to Philip Bister for pointing it out - -Aug. 9 2016 -Added function overriding support for class instance -Fixed a multiple disposing bug with GC - -Aug. 7 2016 -Refactored to return UNKNOWN when trying to access a not exist member in a class instance - -Aug. 6 2016 -Refactored to return UNKNOWN when trying to access a not exist key in a dictionary -Added reflection accessing ability to the SET statement - -Aug. 4 2016 -Improved locale processing - -Jul. 26 2016 -Fixed a multiple disposing bug with class member - -Jul. 20 2016 -Added a program too long error -Fixed a memory comparison issue - -Jul. 19 2016 -Added a too many routines error -Added a reference count overflow error -Added a weak reference count overflow error - -Jul. 18 2016 -Fixed a wrong interpretation bug in the TYPE statement - -Jul. 16 2016 -Added class format support with the STR statement - -Jul. 14 2016 -Fixed a boolean operation bug with the NOT statement on float number -Improved boolean operation - -Jul. 13 2016 -Refactored error prompting - -Jul. 12 2016 -Fixed some memory issues with GC -Fixed a crash when met invalid lambda arguments - -Jul. 11 2016 -Added a HASH and COMPARE must come together error -Fixed a meta function missing issue for class -Fixed a source file information missing issue for routine -Fixed a garbage collection issue of outer scope -Fixed a stack tracing issue - -Jul. 7 2016 -Added function overriding support for referenced usertype -Improved error prompting for collection manipulation - -Jul. 6 2016 -Fixed a memory leak with the PRINT statement -Fixed a stack memory issue with stack tracing - -Jul. 5 2016 -Improved error handling - -Jun. 30 2016 -Fixed a buffer overflow issue when formatting real number with the STR statement - -Jun. 29 2016 -Added a dynamic buffer helper for temporary string manipulation - -Jun. 28 2016 -Fixed a type detection bug with string -Refactored formatting functor of a referenced usertype - -Jun. 27 2016 -Added a context parameter to stepped handler - -Jun. 23 2016 -Added unary negative meta function overriding support for referenced usertype -Fixed a memory leak with variable arguments - -Jun. 21 2016 -Added lambda tracing -Improved error prompting for wrong function reaching -Improved variable argument list processing with lambda -Improved UTF8 string input/output on Windows for the shell -Fixed a wrong variable argument list processing issue -Fixed a referenced usertype operation bug - -Jun. 17 2016 -Improved UTF8 string input/output on Windows - -Jun. 15 2016 -Added endian determination for object comparison -Improved bytes comparison with different endian - -Jun. 14 2016 -Fixed some bugs with meta method calling - -Jun. 7 2016 -Simplified double precision float number redefinition - -May. 24 2016 -Refactored error raising of string manipulation - -May. 20 2016 -Added an assertion when buffer overflow in the STR statement - -May. 19 2016 -Added UTF8 BOM detection even with MB_ENABLE_UNICODE disabled -Fixed a bug in ASC with UTF8 character - -May. 17 2016 -Fixed an evaluation bug when accessing a collection by brackets -Fixed a memory leak with expression calculation - -May. 13 2016 -Added an error type - -May. 5 2016 -Fixed a column counting bug with UTF8 - -Apr. 29 2016 -Fixed a loading bug when importing a UTF8 file - -Apr. 26 2016 -Added an invalid operation usage error when met an unexpected expression - -Apr. 22 2016 -Added UTF8 token support - -Apr. 19 2016 -Fixed an error raising issue with incomplete IF structure - -Apr. 18 2016 -Fixed an invalid iterator issue with ranged list - -Apr. 15 2016 -Added some error raising when met incomplete routine or class - -Apr. 13 2016 -Fixed a negative calculation issue with brackets - -Apr. 11 2016 -Fixed a calculation issue with the NOT statement - -Apr. 5 2016 -Added a warning when a "tostring" meta method didn't return a string - -Mar. 29 2016 -Added a help option to the shell - -Mar. 16 2016 -Fixed an execution issue after a lambda -Fixed a cannot RETURN bug from a FOR loop in a sub routine -Fixed a memory leak with referenced data in a variable argument list - -Mar. 15 2016 -Improved error prompting of array manipulation - -Mar. 11 2016 -Improved error prompting - -Mar. 9 2016 -Improved overridden function invoking -Fixed a memory leak -Moved overriding information from stack to heap - -Mar. 8 2016 -Fixed a memory overflow bug with the ASC statement - -Mar. 4 2016 -Fixed a memory leak with sub routine parameter -Improved inputer - -Mar. 2 2016 -Added a new YARD sample -Fixed a crash bug when unreferencing a garbage -Fixed a multiple disposing bug when an error occurs in an expression - -Mar. 1 2016 -Added an OS statement -Fixed a variable pathing bug in lambda -Fixed a class type detection bug with the IS statement -Refactored platform dependent macros - -Feb. 29 2016 -Added multi-line comment support -Fixed a crash bug with an invalid expression - -Feb. 26 2016 -Added a ME keyword to represent a class instance itself -Added shallow cloning support -Fixed an overridden function copying issue -Fixed a multiple disposing bug with outer scopes of lambda - -Feb. 25 2016 -Improved importing directory detection -Fixed a bug with the END and RETURN statement with FOR loop -Fixed an array index calculation bug -Fixed a wrong variable manipulation bug with the PRINT statement - -Feb. 24 2016 -Added a TO_ARRAY statement -Added support to apply the LEN statement to an array assigned from another - -Feb. 23 2016 -Added an mb_override_value function -Added meta function overriding support for referenced usertype - -Feb. 22 2016 -Added array cloning support -Added array accessing support of a class instance -Added a RAISE statement to the shell -Fixed an iterator disposing issue caused by referencing a collection weakly - -Feb. 19 2016 -Added source tracing for sub routine invoking -Added member accessing support following a routine of a class instance -Fixed a lexical object conversion issue - -Feb. 18 2016 -Added a generic iterator type -Added a SYS statement to the shell -Fixed a wrong list linkage bug with list sorting - -Feb. 16 2016 -Fixed a bug with the EXIT statement with FOR loop - -Feb. 15 2016 -Fixed some compile issues with Xcode - -Feb. 11 2016 -Fixed a bug with 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 - -Jan. 26 2016 -Added an mb_gc function -Added a SET_IMPORTING_DIRS statement to the shell -Added friendly error prompting when memory overflow -Added source file information to stepped handler -Fixed a wrong argument processing bug with a variable argument list -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 a variable argument list as LEN(...) - -Jan. 18 2016 -Added a variable argument list support -Added a NOW statement to the shell -Improved 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 - -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 - -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 -Improved array manipulation code - -Dec. 28 2015 -Fixed a GC bug -Fixed a wrong routine evaluation bug -Improved threshold algorithm for the memory pool - -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 - -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 - -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 - -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 - -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 - -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 - -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 -Improved 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 -Improved 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 - -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 -Improved 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 with Xcode -Improved portability with 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. +Narrowed bool_t + +Dec. 16 2016 +Improved INPUT statement + +Dec. 5 2016 +Added a REM statement + +Nov. 1 2016 +Fixed a file importing bug +Removed the SET_IMPORTING_DIRS statement + +Oct. 23 2016 +Fixed a percent symbol printing bug, thanks to Philip Bister for pointing it out + +Aug. 9 2016 +Added function overriding support for class instance +Fixed a multiple disposing bug with GC + +Aug. 7 2016 +Refactored to return UNKNOWN when trying to access a not exist member in a class instance + +Aug. 6 2016 +Refactored to return UNKNOWN when trying to access a not exist key in a dictionary +Added reflection accessing ability to the SET statement + +Aug. 4 2016 +Improved locale processing + +Jul. 26 2016 +Fixed a multiple disposing bug with class member + +Jul. 20 2016 +Added a program too long error +Fixed a memory comparison issue + +Jul. 19 2016 +Added a too many routines error +Added a reference count overflow error +Added a weak reference count overflow error + +Jul. 18 2016 +Fixed a wrong interpretation bug in the TYPE statement + +Jul. 16 2016 +Added class format support with the STR statement + +Jul. 14 2016 +Fixed a boolean operation bug with the NOT statement on float number +Improved boolean operation + +Jul. 13 2016 +Refactored error prompting + +Jul. 12 2016 +Fixed some memory issues with GC +Fixed a crash when met invalid lambda arguments + +Jul. 11 2016 +Added a HASH and COMPARE must come together error +Fixed a meta function missing issue for class +Fixed a source file information missing issue for routine +Fixed a garbage collection issue of outer scope +Fixed a stack tracing issue + +Jul. 7 2016 +Added function overriding support for referenced usertype +Improved error prompting for collection manipulation + +Jul. 6 2016 +Fixed a memory leak with the PRINT statement +Fixed a stack memory issue with stack tracing + +Jul. 5 2016 +Improved error handling + +Jun. 30 2016 +Fixed a buffer overflow issue when formatting real number with the STR statement + +Jun. 29 2016 +Added a dynamic buffer helper for temporary string manipulation + +Jun. 28 2016 +Fixed a type detection bug with string +Refactored formatting functor of a referenced usertype + +Jun. 27 2016 +Added a context parameter to stepped handler + +Jun. 23 2016 +Added unary negative meta function overriding support for referenced usertype +Fixed a memory leak with variable arguments + +Jun. 21 2016 +Added lambda tracing +Improved error prompting for wrong function reaching +Improved variable argument list processing with lambda +Improved UTF8 string input/output on Windows for the shell +Fixed a wrong variable argument list processing issue +Fixed a referenced usertype operation bug + +Jun. 17 2016 +Improved UTF8 string input/output on Windows + +Jun. 15 2016 +Added endian determination for object comparison +Improved bytes comparison with different endian + +Jun. 14 2016 +Fixed some bugs with meta method calling + +Jun. 7 2016 +Simplified double precision float number redefinition + +May. 24 2016 +Refactored error raising of string manipulation + +May. 20 2016 +Added an assertion when buffer overflow in the STR statement + +May. 19 2016 +Added UTF8 BOM detection even with MB_ENABLE_UNICODE disabled +Fixed a bug in ASC with UTF8 character + +May. 17 2016 +Fixed an evaluation bug when accessing a collection by brackets +Fixed a memory leak with expression calculation + +May. 13 2016 +Added an error type + +May. 5 2016 +Fixed a column counting bug with UTF8 + +Apr. 29 2016 +Fixed a loading bug when importing a UTF8 file + +Apr. 26 2016 +Added an invalid operation usage error when met an unexpected expression + +Apr. 22 2016 +Added UTF8 token support + +Apr. 19 2016 +Fixed an error raising issue with incomplete IF structure + +Apr. 18 2016 +Fixed an invalid iterator issue with ranged list + +Apr. 15 2016 +Added some error raising when met incomplete routine or class + +Apr. 13 2016 +Fixed a negative calculation issue with brackets + +Apr. 11 2016 +Fixed a calculation issue with the NOT statement + +Apr. 5 2016 +Added a warning when a "tostring" meta method didn't return a string + +Mar. 29 2016 +Added a help option to the shell + +Mar. 16 2016 +Fixed an execution issue after a lambda +Fixed a cannot RETURN bug from a FOR loop in a sub routine +Fixed a memory leak with referenced data in a variable argument list + +Mar. 15 2016 +Improved error prompting of array manipulation + +Mar. 11 2016 +Improved error prompting + +Mar. 9 2016 +Improved overridden function invoking +Fixed a memory leak +Moved overriding information from stack to heap + +Mar. 8 2016 +Fixed a memory overflow bug with the ASC statement + +Mar. 4 2016 +Fixed a memory leak with sub routine parameter +Improved inputer + +Mar. 2 2016 +Added a new YARD sample +Fixed a crash bug when unreferencing a garbage +Fixed a multiple disposing bug when an error occurs in an expression + +Mar. 1 2016 +Added an OS statement +Fixed a variable pathing bug in lambda +Fixed a class type detection bug with the IS statement +Refactored platform dependent macros + +Feb. 29 2016 +Added multi-line comment support +Fixed a crash bug with an invalid expression + +Feb. 26 2016 +Added a ME keyword to represent a class instance itself +Added shallow cloning support +Fixed an overridden function copying issue +Fixed a multiple disposing bug with outer scopes of lambda + +Feb. 25 2016 +Improved importing directory detection +Fixed a bug with the END and RETURN statement with FOR loop +Fixed an array index calculation bug +Fixed a wrong variable manipulation bug with the PRINT statement + +Feb. 24 2016 +Added a TO_ARRAY statement +Added support to apply the LEN statement to an array assigned from another + +Feb. 23 2016 +Added an mb_override_value function +Added meta function overriding support for referenced usertype + +Feb. 22 2016 +Added array cloning support +Added array accessing support of a class instance +Added a RAISE statement to the shell +Fixed an iterator disposing issue caused by referencing a collection weakly + +Feb. 19 2016 +Added source tracing for sub routine invoking +Added member accessing support following a routine of a class instance +Fixed a lexical object conversion issue + +Feb. 18 2016 +Added a generic iterator type +Added a SYS statement to the shell +Fixed a wrong list linkage bug with list sorting + +Feb. 16 2016 +Fixed a bug with the EXIT statement with FOR loop + +Feb. 15 2016 +Fixed some compile issues with Xcode + +Feb. 11 2016 +Fixed a bug with 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 + +Jan. 26 2016 +Added an mb_gc function +Added a SET_IMPORTING_DIRS statement to the shell +Added friendly error prompting when memory overflow +Added source file information to stepped handler +Fixed a wrong argument processing bug with a variable argument list +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 a variable argument list as LEN(...) + +Jan. 18 2016 +Added a variable argument list support +Added a NOW statement to the shell +Improved 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 + +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 + +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 +Improved array manipulation code + +Dec. 28 2015 +Fixed a GC bug +Fixed a wrong routine evaluation bug +Improved threshold algorithm for the memory pool + +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 + +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 + +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 + +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 + +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 + +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 + +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 +Improved 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 +Improved 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 + +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 +Improved 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 with Xcode +Improved portability with 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. diff --git a/shell/main.c b/shell/main.c index 2845c06..62d96bd 100755 --- a/shell/main.c +++ b/shell/main.c @@ -927,7 +927,13 @@ static void _kill_program(const char* path) { if(!unlink(path)) { _printf("Delete file \"%s\" successfully.\n", path); } else { - _printf("Delete file \"%s\" failed.\n", path); + FILE* fp = fopen(path, "rb"); + if(fp) { + fclose(fp); + _printf("Delete file \"%s\" failed.\n", path); + } else { + _printf("File \"%s\" not found.\n", path); + } } }