+---------------------------------+ | November 1, 2024 - 5.0.1 stable | +---------------------------------+ - Imp: optimized error handling for statements (all versions) - Fix: important - memory pool core engine could crash in case of heavy load and optimized builds (all versions) - Fix: aligned and corrected all syntax error warnings (all versions) - Fix: combination of REM and line continution caused succeeding line to be skipped (all versions) - Fix: regular functions could not obtain the error cause in case of TRAP SYSTEM (all versions) - Fix: deprecated OPTION ERROR (all versions) - Fix: redesigned SETENVIRON, parameters should be checked for NULL (all versions, kudos rikky) August 1, 2024 - 5.0 stable - New: added GUICB to embed GUI callbacks in regular code (BaCon version) - New: OPTION LOCAL to enable local implicit declarations (all versions) - New: added GTK4 version of editor demonstration program (BaConGUI GTK4 version) - Imp: improvements and code fixes in TK version of GUI (BaConGUI TK version) - Imp: improvements and code fixes in GTK3 version of GUI (BaConGUI GTK3 version) - Imp: improvements in handling callback result codes for TK binding (BaCon version) - Imp: improvements in syntax highlighting in built-in editor (BaCon version) - Imp: support for client certificates in TLS client connections (all versions) - Imp: FIRST$, LAST$, HEAD$ and TAIL$ can omit 2nd argument, defaulting to 1 (all versions) - Imp: MOD can calculate modulo of floating numbers (all versions) - Imp: getting rid of FLEX dependency (all versions) - Imp: support for mixed variable declarations of different type (all versions) - Fix: built-in editor did not handle key and indentation properly (BaCon version) - Fix: VAR would skip incoming string arguments in case of NULL (all versions, kudos rikky) - Fix: hash table would skip string values in case of NULL (all versions, kudos rikky) - Fix: MATCH would return TRUE in case delimited string is empty (all versions, kudos Peter F.) - Fix: parentheses in WHILE/UNTIL breaks string comparison (BaCon version, kudos Roger M.) - Fix: the VAL function would evaluate argument twice (all versions, kudos Roger M.) - Fix: detection of nested functions failed (all versions, kudos rikky) - Fix: the ALIGN$ function failed in some circumstances (all versions, kudos rikky) - Fix: RECORD declared wrong type causing clash (Shell version) March 15, 2024 - 4.8 stable **anniversary release ** - New: TOTAL to return total amount of items in binary tree (all versions) - New: NANOTIMER to measure duration in nanoseconds (all versions) - New: OPTION NO_C_ESC to ignore effect of backslash in strings (alll versions) - New: command line parameter '-t' to tweak internal settings of BaCon (all versions) - Imp: complete overhaul of internal optimized string registration (all versions) - Imp: better overall memory management, cleaning up used memory at exit (all versions) - Imp: redesigned the binary tree API so it is more user-friendly (all versions) - Imp: core string engine now uses a memory pool to decrease heap allocations and memory usage (all versions) - Imp: the '+' symbol can be used as an alternative to '&' to concatenate strings (all versions) - Fix: regression in returning self-defined records from functions (all versions) - Fix: the internal by_local flag did not work for binary trees and associative arrays (BaCon version) - Fix: CHANGE$ returned wrong result in case incoming string was NULL (all versions) - Fix: self detection of being a muslC binary failed (BaCon version) - Fix: ACCEPT would crash in case TLS certificate is invalid or self-signed (all versions) January 2, 2024 - 4.7.2 (hotfix) - Fix: compilation on exotic platforms revealed collisions in memory management causing segfaults (all versions) January 1, 2024 - 4.7.1 stable - Imp: various updates and improvements in the built-in editor (BaCon version) - Fix: internal string type check fails in case of UBOUND for string arrays (all versions) - Fix: IMPORT did not reopen correct library in subsequent invocations (all versions, kudos alex) - Fix: collecting arguments in SUB/FUNC failed in case of more statements on the same line (Shell version) - Fix: pieces of code separated by colon were not parsed for special symbols (all versions, kudos rikky) - Fix: the VAR statement did reset the size variable in case one of the arguments is NULL (all versions, kudos rikky) - Fix: long standing issue: LABEL defined after RESTORE could not be referred to (all versions) - Fix: small letter code parsing clashed with C type keywords int, const and static (all versions) - Fix: the TOASCII$ function crashed when using string literals (all versions, kudos rikky) - Fix: code improvements to prevent warnings when using the '-Wall' compile flag (all versions) - Fix: EPRINT did not print to stderr when using FORMAT (BaCon version) - Fix: GETKEY did not flush the input queue before waiting for new input (all versions) June 1, 2023 - 4.7 stable - New: function HASBOM to detect if a text contains the UTF8 byte order mark (all versions) - New: function EDITBOM$ to add or remove UTF8 byte order mark (all versions) - Imp: more performance improvements in string concatenation (all versions) - Imp: added caching to core engine for delimited strings (all versions) - Imp: total redesign in usage of built-in editor (BaCon version) - Imp: initialize TLS when using PRAGMA for GnuTLS or WolfSSL (all versions) - Imp: simplified and improved justify method in ALIGN$ function (all versions) - Imp: optimization in internal empty string handling reducing memory allocations with approx 40% (all versions) - Fix: strings resulting from SPLIT could not be concatenated (all versions) - Fix: long standing issue with indenting commented lines (BaCon version, TK/FLTK/GTK versions) - Fix: parsing equations added superfluous brackets causing the NOT function to fail (all versions) - Fix: the APPEND$ function failed in case of single element in delimited string (all versions) - Fix: equation parser could not handle grouped equations of different type (all versions) - Fix: HASH function returned negative numbers on 32bit platforms (all versions) - Fix: MEMCHECK always returned TRUE for all memory addresses (all versions) - Fix: the reserved variable SOURCE$ was not recognized within SUB/FUNCTION (all versions) March 1, 2023 - 4.6.1 stable - Imp: added support for Haiku OS (all versions) - Imp: extended BETWEEN functionality with BEYOND (all versions) - Imp: added command line parameter '-r' to execute resulting binary after succesfull compilation (all versions) - Imp: GUI functions now support TK as a backend (BaCon version) - Imp: performance improvements in REGEX, WALK$, REPLACE$, EXTRACT$ (all versions) - Imp: GETFILE can use optional FTYPE keyword to retrieve filetype (all versions) - Imp: performance improvements in string concatenation (all versions) - Fix: check on duplicate SUB or FUNCTION names (all versions - kudos rikky) - Fix: memory leak in handling local string arrays (BaCon version) - Fix: regression and improvement in RUN statement (BaCon resp. Shell version) - Fix: type check in DECLARE/GLOBAL/LOCAL too strict (all versions - kudos rikky) - Fix: syntax highlighting fixes (BaCon version, FLTK version) November 1, 2022 - 4.6 stable - New: INVERT function to invert keys/values in associative arrays (all versions) - New: WHERE function to determine character position in string based on token index (all versions) - Imp: SORT now also can sort associative arrays (all versions) - Imp: extended INDEX with INDEX$ for associative arrays (all versions) - Imp: replaced 'which' for 'command -v' in shell searching (all versions) - Imp: set SSL parameter 'SSL_OP_LEGACY_SERVER_CONNECT' explicitly so OpenSSL3 works with legacy sites (all versions) - Imp: performance improvements in the string concatenation operator (all versions) - Fix: GUI statements could not be compiled when temporary directory is defined (BaCon version - kudos barry) - Fix: sorted OBTAIN$ and sorted LOOKUP could not handle string values larger than 32 characters (all versions) - Fix: ALIGN$ added an additional space to resulting string (all versions) - Fix: BLOAD should look at OPTION MEMSTREAM also (all versions) August 1, 2022 - 4.5 stable - New: added DLE$ for DOS Line Ending (all versions) - New: added TYPE statement to set font type in ANSI compliant terminals (all versions) - New: added SCREEN statement to save/restore the screen in ANSI compliant terminals (all versions) - New: added INDEX to retrieve index number in array based on value (all versions) - Imp: the VAR statement now allows all C types for variadic arguments (all versions) - Imp: simplified command line parsing for -i, -l, -o options (all versions) - Imp: various performance improvements in built-in editor (BaCon version) - Imp: made flex optional, if not available then BaCon will work but it cannot optimize binary (all versions) - Imp: the ON statement also allows CALL keyword to jump to functions (all versions) - Fix: the GUIFN function could not be compiled in some circumstances (BaCon version) - Fix: variable registration in LET used wrong scope for C assignment operators (BaCon version) - Fix: the BETWEEN keyword mixed up nested equations in some circumstances (all versions) - Fix: the GUI version did not memorize included files (GTK, FLTK version) - Fix: the STATIC keyword was broken for SPLIT, MAP, COLLECT and PARSE (BaCon version) - Fix: the HOST$ function could crash when name lookup failed (all versions) - Fix: regression in the detection of string type equations (all versions) - Fix: shell version lost spaces during printing and in the infix string concatenator parsing (Shell version) - Fix: EVAL could not be converted in some circumstances (all versions) October 1, 2021 - 4.4 stable - New: PARSE statement to parse parts from delimited strings based on pattern (all versions) - New: COLLAPSE$ to remove empty items from delimited string (all versions) - Imp: overall code improvements and cleaning (all versions) - Imp: allow C assignment operators like += and -= (all versions) - Imp: the APPEND statement now can concatenate strings as well (all versions) - Imp: pattern string in MATCH now accepts wildcards (all versions) - Imp: made second argument in LEFT$ and RIGHT$ optional (all versions) - Fix: fixed tokenization issue with the VERIFY keyword (all versions) - Fix: fixed crash in CIPHER$ when using WolfSSL (all versions) - Fix: GnuTLS could not handle some TLS connections properly (all versions) - Fix: memory leaks in CA$ and CN$ (all versions) - Fix: string concatenation failed for string members of RECORD (all versions) - Fix: memory leak in OPEN FOR SERVER when using SSL mode (all versions) - Fix: assignments to pointer members of RECORD caused erroneous variable declaration (all versions) - Fix: statement assignments to numeric associative variables did not work (all versions) - Fix: the '\' symbol in a comment is not ignored in all circumstances (BaCon version) May 1, 2021 - 4.3.2 stable - New: commands TREE, FIND and COLLECT to define binary trees (all versions) - Imp: code cleaning for all implicit variable declarations (all versions) - Imp: if no TYPE is defined in GUI definition then use GTK_TYPE (BaCon version) - Imp: improvements in stability and performance for recursive WALK$ (all versions) - Imp: improved tokenization for statements in Shell version (Shell version) - Imp: added support for GTK4 (BaCon version) - Fix: the PRINT..FORMAT..TO statement spoiled internal variable damaging other parts of generated code (all versions - kudos rikky) - Fix: RESTORE