+--------------------------------+
| January 1, 2016 - 3.2.2 stable |
+--------------------------------+
- Imp: MEMORY should return opaque pointer (all versions)
- Imp: improved error trapping detection (all versions)
- Imp: changed to the more permissive MIT License (all versions)
- Imp: performance improvements in string handling (all versions)
- Fix: fixes in variable type registration (Shell version)
- Fix: BaCon used local error trapping without correct signalling (all versions)
- Fix: local variable names could conflict with dynamic array members (all versions)
- Fix: the FRAMEWORK keyword could not be used in lowercase (all versions)
- Fix: option -z and -j could not be used at the same time (all versions)

December 1, 2015 - 3.2.1 stable
- Imp: added '?' as synonym for PRINT (all versions)
- Imp: improved error handling of lowercase programs (all versions)
- Imp: CLOSE can handle comma separated list of handles (all versions)
- Imp: statusbar shows cursor position (BaConGUI version)
- Imp: only link with dlopen library when necessary (all versions)
- Fix: OPEN FOR does not handle variables in RECORD correctly (all versions)
- Fix: time functions messed up internal string buffer administration (all versions)
- Fix: parsing of comma separated list in direct assigned strings would go wrong in some circumstances (all versions)
- Fix: memory error in REPLACE$ function (all versions)
- Fix: crash when creating new page after all tabs are closed (BaConGUI version)
- Fix: string array in RECORD allocated 1 redundant byte (all versions)

November 1, 2015 - 3.2 stable
- New: added CEIL to round float value upwards (all versions)
- New: OPTION VARTYPE to set default variable type for implicit declarations (all versions)
- Imp: added translate functionality to REPLACE$ (all versions)
- Imp: added ranlib option to add index tabel for BaCon static lib (all versions)
- Imp: improvements in GUI for help dialog and indentation (BaConGUI)
- Imp: option '-y' to skip question about temp files (Shell and BaCon version)
- Imp: counting down DOWNTO keyword in FOR/NEXT (all versions)
- Imp: code improvements and optimizations (all versions)
- Fix: direct assigned strings lost spaces (all versions)
- Fix: EXEC$ should flush stdout buffer before executing command (all versions)
- Fix: the '-w' switch stored library name in an erroneous way (BaCon version)
- Fix: some compile errors were not shown properly when source file was not in current dir (all versions)
- Fix: LET should not take pointer assignment as associative array assignment (all versions)
- Fix: arguments to SUB/FUNC could not contain array with dimension (BaCon and BaConGUI version)
- Fix: assignments like 'a=b=c=0' should not be declared as variable (all versions)
- Fix: error could not be shown when current dir is not the same as temp dir (all versions)
- Fix: BaCon hung on '-j' option (BaCon version)
- Fix: GUI should store all open files in case of loading and saving (BaConGUI version)
- Fix: crash when REGEX receives empty arguments (all versions)
- Fix: INCR / DECR should declare variable implicitly (all versions)
- Fix: fixed error in handling array declarations (Shell version)
- Fix: BaCon allowed function header variables to exist next to globals (all versions)
- Fix: PRAGMA INCLUDE handled all files as relative (all versions)
- Fix: infix string concatenator did not work in PRINT without newline (all versions)
- Fix: cleaned errors shown by shell version of BaCon (Shell version)
- Fix: directly assigned strings should allow comma separated list (all versions)

August 1, 2015 - 3.1 stable
- New: MAXNUM to determine max value for a type, RAD and DEG for degree conversions (all versions)
- New: CR$ for Carriage Return, EL$ to clear current line from cursor to end (all versions)
- New: added IIF / IIF$ for Inline IF (all versions)
- New: added REALPATH$, BASENAME$, DIRNAME$ to handle pathnames and files (all versions)
- Imp: SUB/FUNCTION arguments can omit type declaration by checking suffix (all versions)
- Imp: code improvements and optimizations in SUB/FUNC, INPUT, READLN, GETFILE, COPY (all versions)
- Imp: added compatibility with MAC Frameworks (all versions)
- Imp: option to export to syntax highlighted HTML (BaConGUI version)
- Imp: MID$ accepts negative value to start position from end of string (all versions)
- Fix: BaCon did not work if settings directory does not exist (BaCon version)
- Fix: the ARRAY and ENDUSEH keywords could not be used in lowercase (all versions)
- Fix: the infix string concatenator did not count nested string functions correctly (all versions)
- Fix: nested self-defined string functions could return wrong result (all versions)
- Fix: relative included files should have full path prepended (all versions)
- Fix: eliminated all TCC compile warnings (all versions)
- Fix: direct assigned strings should be modifiable (all versions)
- Fix: embedded C code did not understand BaCon type suffix (all versions)
- Fix: improved memory management for record members of string type (all versions)
- Fix: saved linker options were not used in subsequent compilations (Shell and BaCon version)

May 1, 2015 - 3.0.3 stable
- Imp: COLUMNS/ROWS performance improvement (all versions)
- Imp: performance improvements, string handling performance improvements (all versions)
- Imp: FREE can handle multiple arguments (all versions)
- Fix: DECLARE/LOCAL could not define multiple foreign pointer variables at once (all versions)
- Fix: reorganized generated main header file (all versions)
- Fix: direct assigned string arrays should be modifiable (all versions)
- Fix: code cleaning (all versions)
- Fix: cleanup errors shown when using -Wall compiler option (all versions)
- Fix: spaces were deleted in string array assignments (Shell version)
- Fix: variable type detection went wrong in case of record arrays (all versons)
- Fix: SORT did not detect array dimension of global array used in SUB/FUNC (all versions)
- Fix: PRINT generated wrong code in case of spaces behind argument (Shell version)
- Fix: ALIAS would generate wrong definition in some circumstances (BaCon and BaConGUI version)
- Fix: REDIM should work for dynamic arrays created by SPLIT and LOOKUP (all versions)
- Fix: COPY could not copy string arrays (all versions)
- Fix: a lot of small fixes in generated code (all versions)

December 1, 2014 - 3.0.2 stable
- New: HOSTNAME$ to get local hostname (all versions)
- Imp: better parsing allowing tabs in BaCon code (all versions)
- Imp: general performance improvements (BaCon and BaConGUI version)
- Imp: renamed Shell to Scratch Pad, improved: context info, tab space (BaConGUI version)
- Imp: PROTO can define type of foreign function (all versions)
- Imp: added indentation functionality (BaConGUI version)
- Imp: more options in PRINT dialog (BaConGUI version)
- Imp: option '-z' to allow lowercase BaCon statements and functions (all versions)
- Imp: TRACE MONITOR to print values of variables (all versions)
- Fix: LET generated wrong code for float assignment (Shell version)
- Fix: foreign functions should not be taken as float (all versions)
- Fix: RESTORE <label> was broken (all versions)
- Fix: variable type detection did not work for record members (all versions)
- Fix: complex types in function headers were not registered correctly (all versions)
- Fix: static/dynamic arrays should not be registered as pointer type (all versions)
- Fix: GETENVIRON did return pointer instead of modifiable string (all versions)
- Fix: PULL did not detect float type properly (BaCon and BaConGUI version)
- Fix: LET did not parse combined assignments correctly (all versions)
- Fix: string variables in functions were registered as global (all versions)
- Fix: SORT could not handle static arrays in records (all versions)
- Fix: READ was not able to detect type of declared variable (all versions)

August 1, 2014 - 3.0.1 stable
- Imp: Android port - get rid of <search.h> header file (all versions)
- Imp: Android port - get rid of <ftw.h> header file (all versions)
- Imp: improved handling of BaCon configfile created by -w option (Shell and BaCon version)
- Imp: configurable archiver using -b option (all versions)
- Imp: ability to set the type of function explicitly using TYPE (all versions)
- Imp: support for type suffix: '%' for long, '#' for float (all versions)
- Imp: show timing of conversion when done (all versions)
- Imp: BaCon console improvements (BaConGUI version)
- Imp: OPTION PARSE to allow foreign functions without PROTO (all versions)
- Fix: shared library creation was broken (all versions)
- Fix: context info did not show DEF FN (BaConGUI version)
- Fix: PRINT did not parse end of comma separated line correctly (BaCon and BaConGUI version)
- Fix: commandline file loading did not work (BaConGUI version)
- Fix: FOR/NEXT/STEP did not cast to float when variable in STEP is float (all versions)
- Fix: INPUT did not handle type detection properly (all versions)
- Fix: direct multi dimensional array initialization choked on OPTION BASE (all versions)
- Fix: settings for BaCon could not be written upon first execution (Shell and BaCon version)
- Fix: directly initialized arrays could not be sorted (all versions)
- Fix: BaConGUI did not detect absence of syntax file upon first run (BaConGUI version)
- Fix: associative arrays could not be declared using foreign type (all versions)
- Fix: record members could not be declared using foreign type (all versions)
- Fix: LET applied casting to all assignment instances (all versions)
- Fix: PRINT TO used wrong variable type detection (BaCon and BaConGUI version)
- Fix: IMPORT could not handle FROM argument in all cases (all versions)
- Fix: direct string assignments could not contain multiple variables (all versions)
- Fix: SORT did not sort all elements in static array (all versions)
- Fix: SORT did not sort all types of arrays (all versions)
- Fix: TRACE generated uncompilable source code (all versions)

May 1, 2014 - 3.0 stable
- New: CMDLINE to parse individual command line arguments (all versions)
- New: PRAGMA BACONLIB to force creation of BaCon library programmatically (all versions)
- New: TYPEOF$ to get the type of a variable (all versions)
- Imp: COPY now also can perform a memory copy (all versions)
- Imp: added tooltips to toolbar buttons (BaConGUI version)
- Imp: changed compile scheme (all versions)
- Imp: performance improvements in COUNT, LCASE, UCASE and HOST$ (all versions)
- Imp: improved variable type detection (all versions)
- Imp: improved performance (BaCon and BaConGUI version)
- Imp: plain assignments should perform correct cast (all versions)
- Imp: remember size of main window (BaConGUI version)
- Imp: merged shell implementations into one script (KSH and BASH version)
- Imp: added "-gtk3" as commandline option, merged GUI versions (BaConGUI version)
- Fix: detection of function pointer type failed (BaCon and BaConGUI version)
- Fix: ZSH could not convert programs (KSH version)
- Fix: parsing of multiple wrapped lines failed (BASH and KSH version)
- Fix: detection of array assignments not strict enough (all versions)
- Fix: RETURN did not handle some string functions properly (all versions)
- Fix: focus should be set to page when starting (BaConGUI version)
- Fix: OPTION DEVICE did not allow spaces between arguments (BaCon and BaConGUI version)
- Fix: clash with a defined COUNT, SIZEOF in X header files (all versions)
- Fix: BaCon accepted erroneous syntax for LOCAL/DECLARE (all versions)
- Fix: solved long standing issue with nested IF's of different type (all versions)
- Fix: GUI could load URL without file (BaConGUI version)
- Fix: IMPORT could not handle function protoypes in arguments (all versions)
- Fix: binary AND did not work in some circumstances (all versions)

January 1, 2014 - 2.4.0 stable
- New: ENUM to define enumerated variables (all versions)
- New: ISKEY to query if a key exists in an associative array (all versions)
- New: COUNT to count how many times a character occurs in a string (all versions)
- Imp: support for multidimensional associative arrays (all versions)
- Imp: improved positioning of context info popup (BaConGUI version)
- Imp: SORT can sort the values in associative arrays (all versions)
- Imp: added default toolbar for the GUI version (BaConGUI version)
- Imp: INPUT, GETFILE, RECEIVE, GETLINE, READ, PULL, READLN, CALL..TO, PRINT..TO can accept assoc array elements & rec members (all versions)
- Imp: improved FREE for associative array elements so it does not destroy order (all versions)
- Imp: FORMAT and TO should not depend syntactically in PRINT (all versions)
- Imp: code cleaning in RELATE (BaCon and BaConGUI version)
- Imp: code cleaning in RETURN, PUSH, PEEK, POKE, MEMORY, RESIZE, MEMCHECK (all versions)
- Imp: overall code cleaning (all versions)
- Fix: made sure VAL takes '.' as radix (all versions)
- Fix: context info did not show ABS function (BaConGUI version)
- Fix: SORT could not handle array members in RECORDS, major code improvements (all versions)
- Fix: RELATE potentially could not assign long strings (all versions)
- Fix: show correct error report even if C compiler does not mention line number (all versions)
- Fix: BaCon should accept "END USEC" and "END USEH" also (KSH and BASH version)
- Fix: the infix string concatenator failed in mixed expressions (BaCon and BaConGUI version)
- Fix: RETURN handled combined strings erroneously (all versions)
- Fix: READ could not declare string variable implicitly in list (KSH and BASH version)
- Fix: REDIM did not detect plain char type correctly (all versions)
- Fix: OPEN FOR MEMORY did not initialize handle properly (all versions)
- Fix: CALL..TO did not declare variable implicitly (all versions)
- Fix: menu could not be reached after updating documentation or syntax file (BaConGUI version)
- Fix: OPTION MEMTYPE did not accept 'unsigned' types (all versions)
- Fix: PUTLINE did not always detect correct data type, and failed when 'TO' was in string (BaCon and BaConGUI version)

October 1, 2013 - 2.3.0 stable
- New: SWAP to swap the contents of two variables (all versions)
- New: OPEN FOR DEVICE to open any device or file for reading and writing (all versions)
- New: SETSERIAL to configure serial ports (all versions)
- Imp: CHUNK and SIZE should not depend syntactically in RECEIVE (all versions)
- Imp: REPLACE$ and EXTRACT$ accept extended regular expressions in the needle argument (all versions)
- Imp: support for multidimensional dynamic arrays (all versions)
- Imp: EXTRACT$ removes strings and not sets of characters, use regex for sets (all versions)
- Imp: put generic functions in separate generic header file (all versions)
- Imp: removed GtkHTML support, added contextual help for statements and functions (BaConGUI version)
- Imp: improved file download function (BaCon and BaConGUI version)
- Imp: GETBYTE and PUTBYTE optionally can use CHUNK and SIZE keywords (all versions)
- Imp: OPTION DEVICE to set flags for opening device (all versions)
- Imp: functions can return 1-dimensional dynamic arrays (all versions)
- Imp: SEND should be able to specify SIZE keyword (all versions)
- Imp: more improvements in SEND and RECEIVE (all versions)
- Fix: DECLARE did not detect more than one string array declaration (KSH and BASH version)
- Fix: memory leak in static string array declaration using LOCAL (all versions)
- Fix: EXTRACT$, CONCAT$ and REPLACE$ erroneously used hardcoded limit for size of result (all versions)
- Fix: FOR..IN..NEXT could cause crash at end of SUB or FUNCTION (all versions)
- Fix: some SUBS and FUNCTIONS used globally declared variables (BaCon and BaConGUI version)
- Fix: corrected line counter in comments of generated source files (all versions)
- Fix: TRACE did not work when there is a FORMAT argument in PRINT (all versions)
- Fix: assigning value to associative string array went wrong in case of long strings (all versions)
- Fix: CALL..TO would execute a function twice in case of string assignments (all versions)
- Fix: set correct path to downloaded file for execution dialog (BaConGUI version)
- Fix: variable type detection in READ failed in some cases (all versions)
- Fix: OPEN did not declare handle implicitely in case of UDP (KSH and BASH version)

August 1, 2013 - 2.2.0 stable
- New: reserved variable REGLEN contains the length of last REGEX match (all versions)
- New: EPRINT to print to stderr (all versions - thx Peter Fedorow)
- New: FOR...IN...NEXT...STEP to retrieve individual elements from delim separated strings (all versions)
- Imp: ';' is a valid separator for PRINT and INPUT (all versions - thx Peter Fedorow)
- Imp: code cleaning, removing EQUAL, CONCAT$, IS from source code (BaCon and BaConGUI version)
- Imp: added self-check to confirm compilation with correct version (BaCon and BaConGUI version)
- Imp: both BaCon and BaConGUI check on old temporary files (BaCon and BaConGUI version)
- Imp: BaConGUI can select colorscheme for syntax highlighting (BaConGUI version)
- Imp: changed granularity for ALARM to milliseconds (all versions)
- Fix: OPEN FOR SERVER should accept wildcard in variable (all versions)
- Fix: regression OPEN FOR NETWORK/SERVER should accept host:port in variable (all versions)
- Fix: ZSH could not convert programs using networking (KSH version)
- Fix: RANDOM could not evaluate composite argument (all versions)
- Fix: STR$ does not need to specify precision of '.10' in format (all versions)
- Fix: messages from preprocessor directive #error were not captured correctly (BaCon and BaConGUI version)
- Fix: CHOP$ could not handle empty string (all versions)
- Fix: BaCon did not handle argument with double '-' properly (BaCon version)
- Fix: LET missed variable declaration when variable name was equal to function behind equal sign (KSH and BASH version)
- Fix: STR$ should distinguish between float and integer numbers (all versions)
- Fix: DECLARE deleted spaces from static array definitions (KSH and BASH version)
- Fix: DECLARE and LOCAL could not parse ARRAY declarations properly (KSH and BASH version)
- Fix: show warning when executable is not found (BaConGUI version)
- Fix: EXEC$ could wait endlessly in case of large block of data coming back (all versions)
- Fix: the C keyword 'unsigned' was not handled properly (BASH, KSH version)
- Fix: the C type 'short' is sometimes not recognized (all versions)
- Fix: SPC$, TAB$, FILL$ did not handle composite arguments properly (all versions)
- Fix: improved catching of function arguments to avoid potential bugs (all versions)
- Fix: member names of a RECORD declared as ARRAY could not occur in other RECORD (all versions)
- Fix: GUI version could not open 0-byte file (BaConGUI version)
- Fix: the '&' infix concatenator could not append single "&" symbol (BaCon and BaConGUI version)
- Fix: error messaging did not work when filename contained 'line' (all versions)
- Fix: optional argument in INSTRREV corrupted source string (all versions)
- Fix: string type detection in DECLARE and LOCAL was too broad (BASH and KSH version)
- Fix: ZSH could not convert BaConGUI (KSH version)
- Fix: inline assembly in USEC/ENDUSEC got corrupted (all versions)
- Fix: BaCon files using Windows line termination fail to convert (BASH and KSH version)
- Fix: EXEC$ could crash when result of executed command line string was empty (all versions)

April 1, 2013 - 2.0 build 1 stable
- New: EXTRACT$ to remove characters from strings (all versions)
- New: DELETE RECURSIVE to delete a complete directory tree (all versions)
- New: added ASIN, ACOS, LT, GT, LE, GE, improved casting in all goniometric functions (all versions)
- New: JOIN to concatenate string array elements (reverse of SPLIT) (all versions)
- New: MEMCHECK to verify if memory is illegal (all versions)
- Imp: major improvements in the overall performance of the generated code (all versions)
- Imp: optimized functions: MID$, INSTR, INSTRREV, CONCAT$, REPLACE$, EXEC$, LEFT$, RIGHT$, SPC$, TAB$, FILL$ (all versions)
- Imp: added question to delete old temporary files (BASH and KSH version)
- Imp: SPLIT and LOOKUP can use string array by reference to retrieve results (all versions)
- Imp: added detector so each binary can identify BaCon version it is compiled with (all versions)
- Imp: improved the '&' infix concatenator (all versions)
- Imp: added menu item to update documentation file (BaConGUI version)
- Imp: by default BaCon will use TRAP LOCAL, also improved error messaging (all versions)
- Imp: improved internal memory checker (all versions)
- Imp: POKE, RESIZE could not handle CATCH (all versions)
- Imp: OPEN FOR SERVER can use wildcard (all versions)
- Fix: LOCAL did not handle list of static string arrays properly causing memory leak (all versions)
- Fix: GETPEER$ did not handle TRAP LOCAL correctly (all versions)
- Fix: SPLIT could crash in case string or splitter is empty (all versions)
- Fix: INCR/DECR did not detect associative variable with array index (BaCon and BaConGUI version)
- Fix: fixed regression in OPEN FOR MEMORY (all versions)
- Fix: adapted functions to fit Clang parsing (all versions)
- Fix: REPLACE$ hung when haystack or needle was empty (all versions)
- Fix: multiple -i parameters were interpreted wrong (BaCon version)
- Fix: IMPORT could not handle string function returning library name (all versions)
- Fix: LET did not check on uninitialized string variables (all versions)
- Fix: string assignment containing NULL did crash (all versions)
- Fix: CATCH trigger was not stored correctly when entering a SUB or FUNCTION (all versions)
- Fix: PULL could not use array member as argument (all versions)
- Fix: BaCon shell should show console errors also (BaConGUI version)
- Fix: enlarged return buffers even further to 256 (all versions)
- Fix: various code fixes, improvements and cleaning (all versions)

February 1, 2013 - 1.0 build 29 stable
- New: PRAGMA to influence the compiler behaviour (all versions)
- New: TIMER to track the amount of milliseconds the current program runs (all versions)
- New: SCROLL to scroll ANSI screen up and down (all versions)
- New: support for '&' as infix string concatenator (all versions)
- New: GETPEER$ to retrieve the remote IP address and port of connected peer (all versions)
- Imp: major code revision and performance improvements in associative array handling (all versions)
- Imp: FOR/NEXT tries to autodetect variable type better (all versions)
- Imp: CURSOR can move ANSI cursor to four directions (all versions)
- Imp: optimized the way strings are assigned in LET (all versions)
- Imp: SPLIT code revision and performance improvement (all versions)
- Imp: OPEN FOR NETWORK can specify optional source address(es) (all versions)
- Fix: PUTBYTE must flush filedescriptor (all versions)
- Fix: FREE did not free associative array element properly causing memory leak (all versions)
- Fix: INCR and DECR did not handle associative variables connected with RELATE correctly (all versions)
- Fix: string members of a RECORD were not freed when exiting function (KSH version) 
- Fix: SEED did not accept compound argument (BaCon and BaConGUI version)
- Fix: Zshell choked on '<' and '>' symbol in some expressions (KSH version)
- Fix: DECLARE/LOCAL did not accept list of variables with external type (BaCon and BaConGUI version)
- Fix: could not use variable 't' implicitly (KSH and BASH version)
- Fix: PEEK used different logic for byte offset compared to POKE (all versions)
- Fix: ARGUMENT$ should inherit double quotes from commandline (all versions)
- Fix: MEMORY and RESIZE used wrong type for char* (all versions)

December 1, 2012 - 1.0 build 28 stable
- New: C-style block comments (all versions)
- New: support for SCTP networking (all versions)
- New: USEH to add definitions to global header file (all versions)
- New: '==' and '<>' are allowed both in numeric and string equations (all versions)
- New: EXIT to exit a SUB or FUNCTION prematurely (all versions)
- Imp: also FI is allowed to end IF block (all versions)
- Imp: 'convert' and 'execute' dialogs should keep focus on YES button (BaConGUI version)
- Imp: RESTORE accepts label from where to restore (all versions)
- Imp: READ can use comma separated list of arguments (all versions)
- Fix: SORT miscalculated array size when OPTION BASE is set (all versions)
- Fix: POKE needed additional brackets to evaluate argument (all versions)
- Fix: BaCon could not handle spaces in filenames (BaCon and BaConGUI version)
- Fix: INCR/DECR could not handle compound argument in associative arrays (all versions)
- Fix: environment variable GREP_OPTIONS should be unset (KSH and BASH version)
- Fix: variables of external type should not be redeclared (all versions)
- Fix: increased timeout value for downloading files to 2 seconds (all versions)
- Fix: variables written as pointer should not be initialized to 0 (all versions)
- Fix: Tru64 cannot handle empty initialization for RECORD (all versions)
- Fix: ABS did not work for float numbers (all versions)

October 1, 2012 - 1.0 build 27 stable
- New: BaCon can store default settings with '-w' switch (KSH, BASH and BaCon version)
- Imp: performance improvements in generated source code (all versions)
- Imp: REGEX returns position of first match, and obeys OPTION COMPARE (all versions)
- Imp: PRINT...TO can specify memory size of target variable (all versions)
- Imp: improved output of conversion progress (KSH, BASH and BaCon version)
- Fix: SORT did not work for dynamic arrays (KSH and BASH version)
- Fix: REDIM did not initialize new elements in string array properly (all versions)
- Fix: temporary file cleanup generated error in case of duplicate SUB/FUNC (all versions)
- Fix: declaring multiple pointer variables using LOCAL/GLOBAL failed (KSH and BASH version)
- Fix: OPEN FOR MEMORY did not free string variable causing memory leak (all versions)
- Fix: MAKEDIR failed when directory name did not contain '/' (all versions)

June 1, 2012 - 1.0 build 26 stable
- New: support for dynamic arrays (all versions)
- New: REDIM to redimension dynamic arrays preserving existing data (all versions)
- New: OPTION STARTPOINT to change behavior of INSTRREV (all versions)
- Imp: omit link to BaCon Documentation Navigator when downloading documentation (BaConGUI version)
- Imp: set filename in tab when downloading with "Open Url" (BaConGUI version)
- Imp: preset current filename in "Save As" dialog (BaConGUI version)
- Fix: solved more issues with INSTRREV (all versions)
- Fix: BaConGUI could not store syntax file when using GTK3 (BaConGUI version)
- Fix: referring to subdirectories in URL argument did not work (all versions)
- Fix: SORT could not handle empty strings (all versions - thanks Tomaaz)
- Fix: LOCAL declared string variable by reference as by value (all versions)
- Fix: SORT worked incorrect when OPTION BASE was set (all versions)
- Fix: crash in case of GCC error messages with certain format (BaConGUI version)
- Fix: could not use relative paths to BaCon source files (KSH, BASH and BaCon version)

March 1, 2012 - 1.0 build 25 stable
- New: FILETIME to query timestamps of a file (all versions - thanks vovchik)
- Imp: optional TO parameter for PRINT to print to string variable (all versions)
- Imp: BaConGUI should remember compile options (BaConGUI version)
- Imp: ensured compatibility with ZShell (KSH version)
- Imp: VAR list should only contain arguments sent (all versions)
- Fix: remove DELETE option from OPEN dialog (BaConGUI version)
- Fix: fixed issues with optional parameter in INSTRREV (all versions - thanks Sunburnt)
- Fix: option '-j' should also apply to INCLUDE files (all versions - thanks oldguy)
- Fix: Cygwin port revealed bug in generic check function (BaCon and BaConGUI version)
- Fix: INCLUDE could not follow symlinks (BaCon and BaConGUI version)
- Fix: passing string arrays by reference failed (all versions)
- Fix: commandline parameters could not be attached to their arguments (BaCon version)
- Fix: could not assign value to RETVAL programmatically (BaCon and BaConGUI version)
- Fix: PUTBYTE needed cast to char* in Tru64Unix (all versions)

November 1, 2011 - 1.0 build 24 stable
- New: support for UDP sockets, UDP broadcast & multicast (all versions - kudos Peter Fedorow / elias)
- Imp: printing functionality in GUI (BaConGUI version)
- Fix: compound equations were parsed incorrectly in some circumstances (BaCon and BaConGUI version)
- Fix: GUI version crashed when opening tab in an empty notebook (BaConGUI version - kudos Gatordog)
- Fix: declaration of function pointers was not detected when assigning address (all versions)
- Fix: FILETYPE did not detect symlink correctly (all versions - kudos Sunburnt)
- Fix: uClibc gave warning with ASC (BaCon version - kudos oldguy)

July 1, 2011 - 1.0 build 23 stable
- New: the good old GOSUB was added (all versions)
- Imp: added BaCon shell to perform small code tests, more GUI improvements (BaConGUI version)
- Imp: improved process output so it is aligned with GUI version (KSH, BASH and BaCon version)
- Fix: EVEN and ODD should cast argument to integer type (all versions)
- Fix: RETURN did not detect function in argument correctly (BaCon and BaConGUI version)
- Fix: MOD, EVEN and ODD need additonal brackets to enclose their arguments (all versions)
- Fix: POW needs correct casting of arguments (all versions)
- Fix: CASE did not detect string type argument correctly (all versions)
- Fix: functions without arguments were converted with wrong type (KSH and BASH version)
- Fix: improved support for compound RETURN arguments (all versions)
- Fix: READ should be able to handle all types (all versions)
- Fix: Tru64 needs workaround for MAXRANDOM (all versions)
- Fix: improved internal memory check (all versions)
- Fix: INCR and DECR could not handle associative arrays (all versions)

May 1, 2011 - 1.0 build 22 stable
- New: NNTL$ for internationalization of plural forms (all versions)
- Imp: INCLUDE can specify which subs/functions of an included file should be used (all versions)
- Imp: file argument to BaCon may consist of URL to file (all versions)
- Fix: DATA could not allow "TO" in string data (KSH and BASH version)
- Fix: INTL should be INTL$ (all versions, thanks Barry K.)
- Fix: tokenizer could not return from ESCAPE mode (KSH and BASH version)
- Fix: GETBYTE and PUTBYTE should obey MEMTYPE setting (all versions)
- Fix: READLN should cut off \r in textfiles from DOS/Win environment (all versions)
- Fix: menubar and notebook should be attached directly (BaConGUI version)
- Fix: increased search speed for libgtkhtml (BaConGUI version)
- Fix: direct array assignments should take OPTION BASE into account (all versions)
- Fix: MID$ crashed when length parameter was longer than total string (all versions)
- Fix: argument list to executed programs should escape doublequotes (BaConGUI version)
- Fix: implicit declaration in assignment failed in case of strings containing a '.' (all versions)
- Fix: show error message if xgettext did not generate catalog file (all versions)

March 1, 2011 - 1.0 build 21 stable
- New: internationalization support with TEXTDOMAIN and INTL, option -x (all versions)
- Imp: implemented genuine BASIC comparison syntax both for numbers and strings (all versions)
- Imp: added check for correct BASH release (BASH version)
- Fix: CALL could not accept stringarguments with \n (KSH version)
- Fix: change to directory of sourcefile when compiling so INCLUDE files can be found (all versions)
- Fix: RECEIVE did not declare buffer size correctly when CHUNK was specified (all versions)
- Fix: WAIT should return 0 if no data is available on STDIN (all versions)
- Fix: tokenizer did not handle '$' correctly in case of IMPORT (BASH version)
- Fix: DEF FN needs additional brackets around definition (all versions)
- Fix: enlarged return buffers to 32 (all versions)
- Fix: OPEN MEMORY declared global variable, should be local (KSH and BASH version)
- Fix: LET did not reassign variable for IMPORT (KSH version)
- Fix: MAKEDIR could not create a directory without full path (all versions)
- Fix: line parser added redundant spaces to concatenated lines (all versions)
- Fix: INCLUDE should check existence of included file before checking type (BaCon version)
- Fix: MacOSX: improved processing of timer settings in WAIT (all versions)
- Fix: Solaris: workaround for wrong RAND_MAX definition in stdlib (all versions)
- Fix: Solaris: additional terminal settings for GETKEY, TRACE and WAIT (all versions)
- Fix: Solaris: BaCon needs additional link flags (all versions)
- Fix: PDKSH does not handle read-only typeset flag like other Kornshells (KSH version)

January 1, 2011 - 1.0 build 20 stable
- New: CONTINUE to (partially) skip body of loop (all versions)
- New: reserved variable RETVAL will contain exit status of last executed command in EXEC and SYSTEM (all versions)
- New: variable argument lists to SUB and FUNCTION (all versions)
- Imp: BREAK accepts optional parameter defining at which level the break should take place (all versions)
- Imp: EXEC$ accepts optional parameter for STDIN (all versions)
- Fix: IF/THEN could not wrap to next line with '\' (KSH and BASH version)
- Fix: IMPORT using variable for libraryname could not import symbols if variable was redefined (all versions)
- Fix: error reporting in OpenBSD could crash in case of particular BSD warning (BaCon version)
- Fix: RETURN could not handle BaCon types (all versions)
- Fix: PRINT could crash on NULL argument (all versions)
- Fix: variable declarations containing assignments were not detected correctly (all versions)
- Fix: TRACE mode did not work when FUNCTION or SUB was used in variable name (all versions)
- Fix: string array declaration could not assign values directly (all versions)

October 31, 2010 - 1.0 build 19 stable
- Imp: CHOP$ optionally can define character(s) to chop, left and/or right side (all versions)
- Imp: WAIT also can scan for a keypress without stopping program (all versions)
- Imp: SORT optionally can specify amount of elements with SIZE (all versions)
- Imp: DATA can contain mixed data types now (all versions)
- Fix: when using GCC optimizations no warnings should appear (all versions)
- Fix: initialize error reporting to erroneous filename (all versions)
- Fix: HOST$ could crash without TRAP LOCAL (all versions)
- Fix: multiple statements on same line should allow REM (all versions)
- Fix: GETFILE could not handle string assignment in case result is empty (all versions)
- Fix: SELECT did again not cleanup 'fallthrough' cache correctly (all versions)
- Fix: OPEN FOR NETWORK/SERVER could crash if no port was specified (all versions)
- Fix: DATA does not need to explicitely specify '.' for float values (all versions)
- Fix: GETBYTE did not detect previously declared variables correctly (BaCon version)
- Fix: IMPORT error handling can crash when dlerror() returns NULL (all versions)
- Fix: IMPORT should declare internal variable locally (all versions)

September 25, 2010 - 1.0 build 18 stable
- New: SIZEOF to determine size of C type (all versions)
- New: HOST$ to determine IP address from hostname or v.v. (all versions)
- New: some math functions were added: EXP, LOG, ATN, SGN (all versions)
- Imp: OPTION MEMTYPE to determine memory type for POKE, PEEK, MEMORY and RESIZE (all versions)
- Imp: OPTION COLLAPSE to define behavior of SPLIT (all versions)
- Imp: RECEIVE and SEND should be able to handle binary data (all versions)
- Imp: RECEIVE optionally can return amount of data received (all versions)
- Imp: SEND optionally can specify chunksize (all versions)
- Imp: console colors can be enumerated (all versions)
- Imp: FREE can also free associative array elements (all versions)
- Imp: WRITELN, PUTLINE should convert non-strings automatically (all versions)
- Imp: improved and simplified PRINT implementation (all versions)
- Imp: statements may be separated by colon symbol (all versions)
- Imp: nested INCLUDE statements work now (all versions)
- Imp: multiple invocations of OPEN FOR SERVER allow multiple client connections (all versions)
- Imp: emit warning if target conversion files already exist (all versions)
- Fix: VAL'ed subscripts in arrays could not be parsed (all versions)
- Fix: RELATE generated erroneous overflow (KSH version)
- Fix: LOCAL could not parse STRING keyword properly (KSH version)
- Fix: solved long-standing issue with redundant spaces behind parsed lines (KSH version)
- Fix: not more than 2 numeric arrays could be passed to functions/subs (all versions)
- Fix: only initiate known numeric C types to 0 (all versions)
- Fix: string variables should be assigned an initial empty string (all versions)
- Fix: RESIZE did not return new memory pointer (all versions)
- Fix: -i option should detect header file in /usr/include directory (all versions)
- Fix: various fixes, code improvements and cleaning (all versions)

August 21, 2010 - 1.0 build 17 stable
- Imp: OPTION MEMSTREAM to allow Memory Stream handle as string variable (all versions)
- Fix: CALL TO did not handle order of functions correctly (all versions)
- Fix: CALL TO handled string assignment as reference (all versions)
- Fix: WRITELN could not write string containing the word 'TO' (all versions)
- Fix: IMPORT generated different code in BaCon version (BaCon version)
- Fix: variable in header of function was declared globally when assigned a value (all versions)
- Fix: printparser did not detect some functions correctly (BASH and KSH version)
- Fix: function arguments not declared correctly when surrounded by spaces (BASH and KSH version)
- Fix: INCR and DECR could not handle VAL'ed combined string arguments (all versions)
- Fix: string arrays could not be passed as function argument (all versions)
- Fix: all array types were passed by reference, but this should be by value (all versions)
- Fix: array declaration did not allow multiple identifiers (all versions)
- Fix: another MID$ issue when length was lower than -1 (all versions)
- Fix: it was not possible to assign string variables by reference (all versions)

July 24, 2010 - 1.0 build 16 stable
- Imp: optional ALIAS for PROTO (all versions)
- Imp: optionally PROTO allows multiple identifiers (all versions)
- Imp: changed -s flag into -o flag
- Imp: improved usage of -l option (all versions)
- Imp: check on availability of C compiler (all versions)
- Imp: more improvements on error reporting (all versions)
- Imp: more optimizations in associative arrays (all versions)
- Fix: different BaCon versions generated different binaries (all versions)
- Fix: ABS, DEC should return long type (all versions)
- Fix: numeric arrays should be initialized to 0 (all versions)
- Fix: MID$ wrote invalid memory when source string was empty (all versions)
- Fix: MID$ wrote invalid memory when starting position was higher than length of string (all versions)
- Fix: PULL crashed when string stack was empty (all versions)
- Fix: PULL crashed when stack had no values pushed before (all versions)

June 25, 2010 - 1.0 build 15 stable
- New: LOOKUP to find all indexes in associative array (all versions)
- New: RELATE to setup relations between associative arrays (all versions)
- Imp: more improvements on error reporting (KSH and BASH version)
- Imp: function blocks should contain license statement (all versions)
- Imp: associative array declaration did not allow multiple identifiers (all versions)
- Imp: many improvements in associative array implementation (all versions)
- Fix: error reporting should also occur for main header file (all versions)
- Fix: error reporting should work in Tru64Unix with Compaq C compiler (all versions)
- Fix: nested SELECT/CASE did not clean 'fallthrough' cache properly (all versions)
- Fix: string array assignment was not possible in declaration (all versions)
- Fix: EXEC$ did not reap zombie processes (all versions)

June 12, 2010 - 1.0 build 14 stable
- New: ALIAS statement to alias any function (all versions)
- Imp: optional ALIAS for IMPORT (all versions)
- Imp: many improvements on error reporting (all versions)
- Imp: allow nested SELECT/CASE statements (all versions)
- Fix: INPUT parser delivered variable names surrounded by spaces (KSH and BASH version)
- Fix: INCR and DECR need additional brackets around second argument (all versions)

May 13, 2010 - 1.0 build 13 stable
- New: GETX / GETY to get current cursor position in ANSI terminal (all versions)
- New: COLUMNS / ROWS to get screencolumns and rows in ANSI terminal (all versions)
- New: CURSOR ON/OFF to show/hide cursor in ANSI terminal (all versions)
- Imp: GOTOXY can use variables as arguments now (kudos Vovchik - all versions)
- Fix: GOTOXY needs flush (all versions)
- Fix: COLOR and CLEAR use stdout explicitly (all versions)
- Fix: EXEC$ would return partial results in case of slow output of shell statement (all versions)
- Fix: MAKEDIR crashed (all versions)
- Fix: detection of previous declared STRING variable failed (BaCon version)
- Fix: make sure no string pointer is freed when using LOCAL in functions (all versions)

April 17, 2010 - 1.0 build 12 stable
- New: OPTION SOCKET to determine network timeouts (all versions)
- New: ALARM to interrupt current operation and call local SUB (all versions)
- Imp: optional SIZE argument in RECEIVE to determine chunksize (all versions)
- Imp: IMPORT should convert function names to TCC compatible names (all versions)
- Imp: MAKEDIR should implicitly create parent directories (all versions)
- Imp: WRITELN should be able to write string pointers (all versions)
- Imp: LOCAL/DECLARE should allow multiple string pointers (all versions)

April 2, 2010 - 1.0 build 11 stable
- New: by popular demand DECR and INCR to add/substract from variable (all versions)
- New: OPTION COMPARE to define case-insensitive comparison (all versions)
- Imp: simplified BaCon options (all versions)
- Imp: ensured compatibility with TCC compiler (all versions)
- Fix: SPLIT would collapse element where two separators are neighbours (all versions)
- Fix: SPLIT did not reset internal counter when used repeatedly (all versions)
- Fix: INSTRREV returned wrong index when string ended with equal letters (all versions)
- Fix: MOD always should cast arguments to long (all versions)

March 20, 2010 - 1.0 build 10 stable
- New: option '-f' to create shared library (all versions)
- New: PROTO to allow foreign symbols, link with external library (all versions)
- New: GLOBAL/DECLARE accepts RECORD (all versions)
- Imp: random generator always initialized (all versions)
- Imp: stack depth grows and shrinks dynamically, option '-s' obsolete now (all versions)
- Imp: MEMORY/RESIZE allocate 1 byte more to allow subsequent string management (all versions)
- Imp: OPEN FOR MEMORY can use string variable names (all versions)
- Fix: SPLIT could not handle combined separator string (kudos James Fuller - all versions)
- Fix: TRACE inserts must be excluded during code parsing (all versions)
- Fix: networking would crash in case of erroneous hostname (all versions)
- Fix: FUNCTION always should return a value (kudos E.K. Virtanen - all versions)
- Fix: IMPORT could not import library in same directory (BaCon version)

March 6, 2010 - 1.0.9 stable
- New: associative arrays (all versions)
- New: flag '-e' to export symbols allowing callbacks from Glade, GtkBuilder (all versions)
- New: function FILEEXISTS contributed by Armando Rivera (all versions)
- New: function RANDOM(x) to generate a random number between 0 and x-1 (all versions)
- Imp: preserve temporary files in case compilation fails (all versions)
- Fix: FILELEN wrong error reporting (kudos James Fuller - all versions)

February 20, 1.0.8 stable
- New: MEMTELL to get current memory stream position (all versions)
- Imp: PUTLINE should be able to handle comma separated arguments (all versions)
- Imp: more performance improvements (BaCon version)
- Fix: OPEN MEMORY needs additional check on starting position variable (all versions)
- Fix: RESIZE would not work with TRAP LOCAL (all versions)
- Fix: RESIZE showed SegFault when assigning new address (all versions)
- Fix: bug in SPLIT where splitted line only contains separator (all versions)
- Fix: minor issue in OPEN where BASH generates duplicates of file variables (BASH version)

February 13, 2010 - 1.0.7 stable
- New: OPTION BASE to define array base (all versions)
- Imp: the DO in WHILE/WEND statement is optional now (all versions)
- Fix: removed limitation for inputbuffers in READLN and INPUT (kudos James Fuller - all versions)
- Fix: minor bug in Check_Type when looking up string variables (BaCon version)

February 7, 2010 - 1.0.6 stable
- Imp: automatically initialize numeric vars to 0 (all versions)
- Imp: updated timestamps and messages in generated sources (all versions)

January 30, 2010 - 1.0.5 stable
- New: STOP to hold program, use Unix 'fg' or 'kill -CONT' to continue (all versions)
- New: TRACE ON/OFF to execute program step-by-step (all versions)

January 22, 2010 - 1.0.4 stable
- Imp: performance improvements for BaCon version of BaCon
- Imp: Option "DOWN" for SORT to sort descending (all versions)
- Fix: potential bug in IMPORT when defining complicated function arguments (all versions)
- Fix: '-l' option (BaCon version)

January 18, 2010 - 1.0.3 stable
- Imp: IF/ELIF/ELSE accepts single statement in THEN on same line (all versions)
- Fix: COPY should emit runtime error when file is not found (all versions)
- Fix: CALL could not invoke a FUNCTION or SUB with a function in the argument (BaCon version)

 January 9, 2010 - 1.0.2 stable 
- Imp: BaCon now can compile sourcefiles in any other directory, not only current directory (all versions)
- Imp: simplified header file inclusion even more (all versions)
- Fix: issue when INCLUDE contains full directories (all versions)

 January 7, 2010 - 1.0.1 stable 
- Imp: improved logic in temporary file naming (all versions)
- Imp: simplified header file inclusion algorithm (KSH, BASH)

January 1, 2010 - 1.0 stable
- New: changed license to GPL version 3.
- New: next to EQ/NE alternatively IS/ISNOT can be used to improve code readability
- Fix: OpenBSD reveals issue with indent and temporary directories (all versions)

December 26, 2009 - 1.0 release candidate 1
- Testsuite: fixed initialization with COPY (all versions)
- Testsuite: FILELEN should return -1 in case of error (all versions)
- Testsuite: PULL should recognize types better (KSH, BASH)
- Testsuite: CALL should be able to perform call forward (all versions)
- Valgrind: fixed uninitialized value for jump (BaCon)
- Testsuite: READ should recognize internal BaCon types (all versions)
- Testsuite: INPUT should recognize internal BaCon types (all versions)
- CURDIR$ to retrieve current working directory
- SORT to sort one-dimensional arrays
- Fixed issue in SELECT when CASE was empty and only DEFAULT contained code
- Fixed bug with INSTRREV
- Testsuite: GETBYTE, PUTBYTE had wrong size detection (BaCon version)
- Testsuite: empty argument to FUNCTION/SUB should resolve to (void) (KSH/BASH)
- Testsuite: color should be set similarly in all versions (BaCon)
- Testsuite: inputbuffer for READLN and INPUT should be initialized before use (all versions)
- BaCon version can be used within shebang also
- Aligned printing of current linenumber better
- Added '-j' option to invoke C Preprocessor
- Fixed bug in RETURN handling (BaCon version)
- Fixed issue in REGEX parsing (BaCon version)

November 29, 2009 - beta 4
- KSH88 needs double typeset when shrinking variable length
- Removed '+' as concatenation symbol as it caused problems with PRINT and calculations
- Fixed bug in CONST when embedding constructed CONSTs (all versions)
- Code review: reserved variable VERSION should be VERSION$
- Code review: OPEN NETWORK/SERVER - fixed failures when used multiple times (all versions)
- Code review: COPY and GETFILE - fixed failures when used multiple times (all versions)
- Code review: removed IFDEF for now as it is not fully functional
- Documentation review: some small fixes and improvements
- Improved Check_Declare function in BaCon version

November 22, 2009 - beta 3
- OpenBSD reveals wrong type for 'localtime'
- CASE has fall-through with ';'
- Indentation only when source files are not deleted (-p option)
- Tempdir option should allow relative directories
- Performance improvement for KSH/BASH versions
- IFDEF/ENDIFDEF to determine code during compile time (James Fuller)
- Fixed bug with variable type detection (BaCon version)
- Fixed some minor compile warnings (all versions)

November 16, 2009 - beta 2
- Added SELECT/CASE/DEFAULT
- Cleaned up echo/print in KSH and BASH version
- Menu should show values from defaults not hardcoded
- SETENVIRON to set environment variable
- Code review: ENDWITH/ENDSELECT should exist
- EXEC$ to redirect output from system command to BaCon program
- ARGUMENT$ should contain program name of current program
- Changed miniparsers to use low-ASCII (Debian chokes on 'C2')
- Fixed crash in BaCon version when showing compile errors
- Fixed bug in BaCon version with implicit declaration in FOR
- Code review: cleaned up code in BaCon version

November 13, 2009 - beta 1
- Fixed bug with REPLACE where needle and replacement were the same
- Fixed bug in Solaris where stringvariable names were taken as regex (BaCon version)
- Fixed minor bug in Tru64Unix where shell print generates 'wrong option' (KSH version)
- Default C compiler is 'cc' instead of 'gcc' as most Unix versions symlink to 'gcc'
- Fixed minor bug where erroneous void SUB definition leads to compile warning (KSH, BASH)
- Fixed bug in MacOSX where return buffers were initialized outside scope (all versions)

November 10, 2009 (0.110)
- Fixed harmless bug in READ code
- SEED should check argument
- Removed redundant code in DEF FN
- Starting BETA phase of the BaCon project

On Sunday November 8, 2009 at 14:21 Dutch time, BaCon became self-aware: BaCon can compile BaCon!

November 8, 2009 (0.109)
- Fixed exception for REGEX return value
- Fixed issue with writing spaces in WRITELN (James Fuller)
- Removed redundant WAIT statement parsing
- Enlarged temporary input buffer to 512
- SEARCH returns -1 when string not found
- INSTRREV to search for a substring starting from the end of the haystack

November 3, 2009 (0.108)
- Merged duplicate SUB/FUNCTION routine
- Added REPLACE$ function (similar to Scriptbasic)
- Lots of discussion regarding shebang usage leads to '/usr/bin/env' construct

October 27, 2009 (0.107)
- Rewrote few small parts to ensure compatibility with KSH88 (Tru64, Solaris)

October 25, 2009 (0.106)
- Improved error message for REGEX
- Fixed bug in OPEN variable detection
- Fixed memory leak in SPLIT when string and separator are identical
- Improved CHOP when string does not have regular characters
- PUTLINE can use string array

October 20, 2009 (0.105)
- Signal definitions should not be in main header file
- Fixed issue with CHOP and empty strings
- SEARCH restores filepointer after searching is completed
- WRITELN accepts argument list like PRINT and INPUT
- Fixed issue in miniparsers when string uses \"
- Use REGEX for Posix regular expressions (check 'man 7 regex' for syntax)
- The PRINT statement can concat arguments using '+' also

October 11, 2009 (0.104)
- Memory streams with OPEN FOR MEMORY, MEMREWIND, GETLINE, and PUTLINE (see test18)

October 9, 2009 (0.103)
- BaCon types recognized in implicit declarations
- INT as synonym for ROUND

October 1, 2009 (0.102)
- Corrected FILL$ failure on argument check

September 27, 2009 (0.101)
- STR$ returns correct string in case of INT's versus FLOAT's
- CATCH RESET to restore default error message

September 22, 2009 (0.100)
- Redesigned the error catching functionality completely, see documentation

September 18, 2009 (0.99)
- Improved detection of PRINT arguments even more
- Added '-a' option to force 32bit compilation
- Third argument in MID$ is optional now - when omitted it uses rest of string

September 16, 2009 (0.98)
- Fixed issue when SPLIT runs in loop (bug found by James Fuller)
- Fixed potential bug with RETURN
- Numerous other small fixes and improvements

September 15, 2009 (0.97)
- Fixed '\' in REM statement (bug found by James Fuller)
- Instead of REM also ' can be used
- Improved PRINT so illegal string variables cannot crash the program
- Added SPLIT (see documentation for an example)

September 12, 2009 (0.96)
- Fixed issue when string arrays were initialized in a loop (bug found by James Fuller)
- Fixed memory leak with local strings
- Passing (hardcoded) strings to functions and subs also by value now
- RETURN statement correctly returns calculated results

September 8, 2009 (0.95)
- Fixed issue with FOR/NEXT arguments using '*'
- Temp label generation in network code did not work correctly
- GLOBAL/LOCAL could not declare arrays with string argument syntax
- Fixed strange problem with declaration of 'x' and 'y' as variables

September 6, 2009 (0.94)
- Wrapping of lines included redundant space character
- FLOOR should return an integer
- READLN could not read into stringarray

September 3, 2009 (0.93)
- Full support for string arrays in all dimensions
- Fixed potential memory leak for strings in records defined within a function
- Fixed minor issue with RECORD naming

September 1, 2009 (0.92)
- END can return exit value of program (request and idea by James Fuller / John Spikowski)

August 31, 2009 (0.91)
- Array of RECORD initialized string members wrongly (bug found by James Fuller)
- Fixed printing of FILL$

August 30, 2009 (0.90)
- LET did not take stringarrays into account (bug found by James Fuller)
- PRINT of uninitialized stringvariable would segfault (bug found by James Fuller)
- Added INVERSE for COLOR

August 28, 2009 (0.89)
- Lines of code may wrap to next line using '\' at the end of line
- Avoid situation where dlerror() returns NULL
- Fixed READ where strings are read into a stringarray
- Fixed problem with INPUT and stringarrays
- Fixed problem with PULL/PUSH and stringarrays

August 24, 2009 (0.88)
- Removed unnecessary definition of functions as a macro
- Redesigned CONST implementation
- Simplified DEF FN a little bit more

August 20, 2009 (0.87)
- Improved presentation of compile warnings

August 17, 2009 (0.86)
- Added WITH keyword to handle elements of records (request by James Fuller)
- Changed the '-m' parameter so it adjusts temp buffers for string processing

August 16, 2009 (0.85)
- Allow standalone LABELS in BaCon code (bug found by James Fuller)
- Finetuned memory limits even more to fit in Solaris and Tru64Unix

August 14, 2009 (0.84)
- Improved returning strings from functions
- Increased amount of temp buffers for string processing from 32 to 256

August 13, 2009 (0.83)
- Fixed LOCAL declarations for test17 (bug found by James Fuller)
- Corrected 'print' in BASH version
- Fixed string variable initialization in functions
- CONCAT would return (null) if first argument was not initialized
- Local string variables are all byvalue now (request by James Fuller)
- Removed all 'static' declared strings

August 9, 2009 (0.82)
- Added system type to OS$ (request by James Fuller)
- Redesigned the ERROR assignment allowance
- Fixed string allocations in RECORD structures

August 8, 2009 (0.81)
- Fixed LOCAL declarations
- Made sure FILELEN and FILETYPE can be embedded in PRINT and INPUT statements

August 7, 2009 (0.80)
- Use FILETYPE to check if a file is directory, socket, fifo etc.

August 6, 2009 (0.79)
- Perfectionized error display when GCC refers to included files
- The reserved ERROR variable now can be reset by BaCon program

August 5, 2009 (0.78)
- Improved error display in case GCC has problems
- Reorganized INDENT

August 2, 2009 (0.77)
- DEF FN functions can be used standalone
- Also defined LC_CTYPE env variable for correct execution in MacOSX "Term"
- Removed duplicate Runtime Error
- Ensured compatibility with FreeBSD

August 1, 2009 (0.76)
- Defined LANG environment variable to ensure correct execution in MacOSX

July 27, 2009 (0.75)
- NL$ defines the newline
- Fixed issue with PRINT and ASC returnvalue
- Input can print text now, for example: 'input "text", a$'

July 23, 2009 (0.74)
- Huge code cleanup by removing detection of statements in small letters. All keywords should
    be written in capitals now; the detection of small letters was incomplete anyway.
- Simplified unique label generation for temporary jumps in network code

July 22, 2009 (0.73)
- Improved PRINT argument parsing, now constructs like 'PRINT a,b,c$,"hello"' work

July 16, 2009 (0.72)
- Cleaned 'indent' detection
- The '-l' argument passed library in a wrong way
- Wrong reference to 'h_errno' in error detection

July 12, 2009 (0.71)
- Variablenames within records may be used in other records also
- Variablenames within records can be used as standalone variable names also

July 11, 2009 (0.70)
- DEC must return an unsigned int, instead of int
- CONST detects wrong string
- Omitting type did not work when declaring arrays

July 11, 1009 (0.69)
- Prevent to define RECORD within RECORD
- Fixed issue with strings in RECORD

July 9, 2009 (0.68)
- Fixed bug in DECLARE/GLOBAL on variable detection
- Added RECORD structure

July 5, 2009 (0.67)
- Improved type detection for RETURN statement

June 1, 209 (0.66)
- MEMORY automatically initializes claimed memory to '0'

May 17, 2009 (0.65)
- Fixed erronous END USEC detection
- Fixed TYPE detection in GLOBAL/DECLARE

May 9, 2009 (0.64)
- Show linenr during conversion
- OS$ to return name of current Operating System

May 9, 2009 (0.63)
- Simplified temporary filename generation
- Fixed bug with string variable detection
- VAL must return FLOAT and not LONG
- Always flush STDOUT for PRINT

May 7, 2009 (0.62)
- Put LOCAL strings back to static in order to prevent memory leaks

May 2, 2009 (0.61)
- CHOP$ to chop off CR, NL, TAB and SPACE
- FILELEN returns size of file
- SEARCH(x, y) to search string y in filehandle x

April 29, 2009 (0.60)
- GLOBAL, LOCAL and DECLARE can use TYPE as optional parameter

April 27, 2009 (0.59)
- RESIZE was broke

April 25, 2009 (0.58)
- Fixed issue with 'ldl' in Tru64Unix

April 24, 2009 (0.57)
- LOCAL strings should not be static
- Fixed bug with DECLARE
- Fixed multiple string declarations in one line

April 24, 2009 (0.56)
- Fixed issue with local string declaration
- FILL$ to return a sequence of character strings

April 23, 2009 (0.55)
- Corrected returntypes of FUNCTION

April 21, 2009 (0.54)
- Fixed some annoying warnings with math functions
- GLOBAL/DECLARE can be put anywhere for global declarations, even within FUNCTION and SUB

April 21, 2009 (0.53)
- Variables are globally declared (also implicitely), unless declared with LOCAL
- Fixed implicit declaration in GETBYTE
- fix: IMPORT always is global
- DEF FN should be always be global
- CONST should be always be global
- Fixed error messages for Dynamic Linking
- Fixed error messagetext in LET

April 19, 2009 (0.52)
- Added commandline flag '-o' to optimize compilation for current platform

April 18, 2009 (0.51)
- Fixed potential illegal memory writes with GETFILE
- Fixed potential illegal memory writes with INPUT
- Fixed potential illegal memory writes with READLN
- Fixed potential illegal memory writes with RECEIVE
- Fixed potential illegal memory writes with READ
- Fixed potential illegal memory writes with PULL

April 18, 2009 (0.50)
- Corrected POKE and PEEK values to unsigned char

April 18, 2009 (0.49)
- Solved conflict with internal 'argument' variable

April 18, 2009 (0.48)
- Fixed string variable declaration issue with PDKSH

April 17, 2009 (0.47)
- CALL/TO to invoke functions

April 17, 2009 (0.46)
- Fixed problem where STEP in FOR could not be a float
- Fixed crash in GETENVIRON if variable does not exist
- NE for Not Equal '!='

April 16, 2009 (0.45)
- Fixed bug with DEC()

April 16, 2009 (0.44)
- Fixed bug with erronuous code generation when using PDKSH

April 15, 2009 (0.43)
- Got rid of indent warnings on MacOSX

April 15, 2009 (0.42)
- Fixed duplicate function generation when importing from external libraries
- Imported functions can contain spaces between name and arguments
- Ability to specify type of arguments of imported functions

April 15, 2009 (0.41)
- Dynamic string allocations
- Fixed READ/DATA issue

April 14, 2009 (0.40)
- Fixed 'grep' issue on Tru64Unix

April 14, 2009 (0.39)
- Fixed spaces between functionnames and argumentlist

April 13, 2009 (0.38)
- Improvements in uniq label creation
- Reserved variable VERSION to contain version number
- ERROR automatically cleared after calling ERR$
- Added ERROR=0 text message

April 12, 2009 (0.37)
- Made user added include files globally visible
- Error messages globally visible
- Fixed implicit variable declarations with INPUT and FOR

April 12, 2009 (0.36)
- INSTR third argument is optional now
- MAKEDIR to create directories, DELETE now also can delete directories
- CHANGEDIR to change working directory
- SPC$(x) to print x space characters
- TAB$(x) to print x tab characters
- Always print in RAW mode to sourcefiles
- Improved implicit variable declaration for FLOATING
- Added command line option 'i' to include additional files to header
- Added command line option 'l' to pass additional libraries to linker

April 12, 2009 (0.35)
- Redefined WAIT for network sockets (test15)
- Added SERVER mode for accepting incoming TCP connections (test16)

April 11, 2009 (0.34)
- Basic network support with OPEN/CLOSE/SEND/RECEIVE (test15)
- Fixed issues when passing \r\n in strings

April 10, 2009 (0.33)
- Changed POS to GOTOXY (like other BASIC's)
- Fixed compilewarning in OSF1 (Tru64Unix)
- Added WAIT statement for nostalgic reasons
- Retracted POKED, PEEKD, COPYMEM

April 9, 2009 (0.32)
- Now really fixed DEF FN issue

April 9, 2009 (0.31)
- Fixed DEF FN issue with global declaration
- Implemented RENAME <file> TO <name>
- CLEAR to clear the terminal screen (ANSI compliant terminal)
- COLOR to setup terminal colors (ANSI compliant terminal)
- POS to put cursor to position (ANSI compliant terminal)

April 8, 2009 (0.30)
- Added runtime error for DELETE
- Fixed CONST issue with global declaration
- Implemented OPEN x FOR DIRECTORY AS <handle>, also CLOSE FILE/CLOSE DIRECTORY
- GETFILE to read files from opened directory
- redesigned ERR$ into function

April 7, 2009 (0.29)
- TRAP can be set to ON or OFF
- RESIZE to resize memory claimed with MEMORY
- Added runtime check to MEMORY
- Added ABS
- Possibility to define C-code with USEC/ENDUSEC

April 6, 2009 (0.28)
- Fixed calculation of address in PEEK/PEEKD
- Fixed return of ADDRESS function
- Changed TIMEVAL to TIMEVALUE
- Changed INTEGER to NUMBER because of confusion with C int/long

April 5, 2009 (0.27)
- POKED, PEEKD, ADDRESS
- Added runtime error checks TRAP, CATCH, RESUME

April 3, 2009 (0.26)
- added memory checks for GETBYTE, PUTBYTE, COPYMEM, FREE
- in case of errors also mention actual file
- GOTO and LABEL

April 3, 2009 (0.25)
- housekeeping of temporary files
- added FREE to release claimed memory with MEMORY
- added COPYMEM
- fixed potential bugs with SIZEs of GETBYTE, PUTBYTE, COPYMEM

April 2, 2009 (0.24)
- COPY, DELETE
- fixed conversion warning with empty functions
- redesigned SEEK statement

April 2, 2009 (0.23)
- added TELL and SEEK
- added DEF FN, CONST

April 1, 2009 (0.22)
- added PUTBYTE, GETBYTE for accessing binary files

April 1, 2009 (0.21)
- added TIMEVAL
- remove ending \r from READLN

March 31, 2009 (0.20)
- added ISTRUE, ISFALSE
- fixed problem in assigning values to arrays
- added time functions NOW, DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, WEEKDAY$, MONTH$, WEEK
- added boolean functions ODD and EVEN
- added SEED and RND, reserved variable MAXRANDOM

March 29, 2009 (0.19)
- function names also can be parsed standalone, e.g. without assignment
- at every operation on temporary string buffer intialize to 0

March 28, 2009 (0.18)
- corrected GETKEY in VIM syntax file, should appear as function
- GETKEY also should be available in small letters
- added '-w' parameter to compile with warnings, now default is without

March 28, 2009 (0.17)
- apply indentation for FUNCTIONS and SUBS
- parameter '-d' to define TEMP dir where temporary files are stored

March 27, 2009 (0.16)
- fixed issue with DECLARE and FUNCTIONS/SUBS
- fixed potential bugs with other implicit declarations in FUNCTIONS/SUBS
- DECLARE can take multiple arguments now

March 27, 2009 (0.15)
- END IF is also accepted
- END SUB is also accepted
- END FUNCTION is also accepted

March 26, 2009 (0.14)
- redesigned PRINT statement, dropped PRINTSTR statement
- because of this, functions returning a string should be written with '$'-sign: concat$, left$, right$, mid$, hex$, chr$,
    reverse$, arguments$, lcase$, ucase$, getenviron$, str$ (see other BASICs like GWbasic, C64 Basic etc)
- fixed issue with INSTR
- renamed ARGUMENTS$ to ARGUMENT$
- functions and subs can accept arguments now

March 25, 2009 (0.13)
- CONCAT can take random amount of arguments
- added NULL check for SYSTEM command

March 24, 2009 (0.12)
- returnbase of MID is 1 now
- added UCASE and LCASE
- internal improvements in parser

March 24, 2009 (0.11)
- reworked SUB/ENDSUB
- check if RETURN exists in FUNCTION

March 23, 2009 (0.10)
- added version '-v' argument flag
- fixed potential problem with string detection in PUSH
- cleaned up variable declarations in KSH functions
- renamed global vars with 'g_' for better readability
- returnbase of INSTR is 1 now
- rewrote FUNCTION/ENDFUNCTION statements

March 22, 2009 (0.9)
- added NULL checks for STRING functions

March 20, 2009 (0.8)
- added GETENV()

March 19, 2009 (0.7)
- added PUSH and PULL
- READ/DATA can handle float values
- CALL only needed when SUB is defined at end of program
- fixed some small potential bugs

March 18, 2009 (0.6)
- improved getting arguments to BACON using 'getopts'
- improved statement matching routines

March 18, 2009 (0.5)
- improved parsing of imported functions

March 17, 2009 (0.4)
- arguments to define compiler, string memory usage

March 17, 2009 (0.3)
- changed internal housekeeping of numeric variables to long
- changed POKE, added MEMORY to claim memory
- replaced DURING for UNTIL

March 16, 2009 (0.2)
- renamed internal naming for FUNCTION to avoid mangling
- fixed READ to allow usage with arrays
- fixed INPUT to allow usage with arrays
- fixed FOR to allow usage with arrays
- added variable check in READLN statement
- added variable check in WRITELN statement
- fixed ASC function for high ASCII

March 15, 2009 (0.1)
- Initial release
