June 15, 2013 - Patch 8 - Fix: SPC$, TAB$, FILL$ did not handle composite arguments properly (all versions) - Fix: improved catching of function arguments to avoid potential bugs (all versions) June 6, 2013 - Patch 7 - Fix: the C keyword 'unsigned' was not handled properly (BASH, KSH version) - Fix: the C type 'short' is sometimes not recognized (all versions) May 24, 2013 - Patch 6 - Fix: EXEC$ could wait endlessly in case of large block of data coming back (all versions) May 19, 2013 - Patch 5 - Fix: DECLARE and LOCAL could not parse ARRAY declarations properly (KSH and BASH version) - Fix: show warning when executable is not found (BaConGUI version) May 3, 2013 - Patch 4 - 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) April 30, 2013 - Patch 3 - Fix: messages from preprocessor directive #error were not captured correctly (BaCon and BaConGUI version) April 26, 2013 - Patch 2 - Fix: RANDOM could not evaluate composite argument (all versions) - Fix: STR$ does not need to specify precision of '.10' in format (all versions) April 7, 2013 - Patch 1 - 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) +------------------------------------+ | 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 TO - 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 , 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