[INTERPRETER]
* NEW: Set environment variables at startup from the '.environment' file.
[COMPILER]
* NEW: Generate the '.environment' files with the list of environment variables that must be set at startup.
[ARCHIVER]
* NEW: Add the '.environment' file to the archive.
[INTERPRETER]
* BUG: The support for external debugging now uses the project name stored
in the '.startup' file, not the executable name, which may be different.
[COMPILER]
* NEW: Write the name of the project in the '.startup' file.
[CONFIGURATION]
* BUG: Do not use the default CFLAGS forces by autotools. Either use the CFLAGS provided on the command-line, or the default ones of the project.
[INTERPRETER]
* OPT: Don't use '-O3'. It makes benchmarks sometimes slower than using '-O2'.
[COMPILER]
* OPT: Optimize variable initialization.
[COMPILER]
* BUG: Fix parsing of 'Debug' symbol in preprocessor lines.
* BUG: Don't crash anymore if an error is raised while reading command-line arguments.
[COMPILER]
* OPT: Optimization of conditional jumps based on values known to be Boolean.
* BUG: Jump optimization is effective when debugging information is generated.
* BUG: The '/' operator correctly returns a Float if its arguments are Float.
[INTERPRETER]
* OPT: Optimization of conditional jumps based on values known to be Boolean.
[GB.JIT]
* NEW: Support for conditional jumps optimization.
[COMPILER]
* OPT: Optimize jumps pointing at a JUMP instruction.
[INTERPRETER]
* OPT: Avoid conversion to boolean when possible in conditional jumps.
[GB.JIT]
* NEW: Implement overflow detection in integer arithmetic operations. The UNSAFE keyword disable them to get full speed.
[INTERPRETER]
* OPT: Put less code in the main interpreter loop because it became too big again with gcc 12.
[COMPILER]
* OPT: Some optimizations in the parser.
* NEW: Make the compiler more clever when deciding if an identifier is a reserved keyword or not.
[INTERPRETER]
* NEW: Bool@(), Byte@()... functions can be the target of an affectation now.
[COMPILER]
* NEW: Bool@(), Byte@()... functions can be the target of an affectation now.
[GB.JIT]
* NEW: Bool@(), Byte@()... functions can be the target of an affectation now.
[COMPILER]
* OPT: Optimization of small integer floating point constants.
[INTEGER]
* OPT: Optimization of small integer floating point constants.
[GB.JIT]
* OPT: Optimization of small integer floating point constants.
[INTERPRETER]
* BUG: Fix backward-compatibility with previous bytecode.
* OPT: Optimizations of local variables and argument assignements.
* BUG: NULL can be serialized on streams correctly now.
[COMPILER]
* OPT: Support for local variable manipulation optimization.
[INTERPRETER]
* OPT: Avoid unneeded type conversion swhen manipulating local variables.
* OPT: Various optimizations of the interpreter execution loop. Apparently a smaller execution loop has a big impact on speed. I guess this is related to the size of the various CPU caches.
[CONFIGURATION]
* NEW: Update 'README' and 'README.md' files.
[COMPILER]
* NEW: Add Md5(), Sha1(), Sha256() and Sha512() functions.
[INTERPRETER]
* NEW: Add Md5(), Sha1(), Sha256() and Sha512() functions.
[GB.HASH]
* NEW: This is a new component that implements the Md5(), Sha1(), Sha256() and Sha512() functions.
The code comes from BusyBox.
[COMPILER]
* NEW: Remove useless LIKELY() and UNLIKELY() macros.
[INTERPRETER]
* NEW: Remove useless LIKELY() and UNLIKELY() macros.
* NEW: Add a class flag for bytecode strictly older than 3.18.
[GB.DEBUG]
* BUG: Fix incorrect 'printf' format on 32-bits architectures.
[INTERPRETER]
* NEW: Update help text layout.
[COMPILER]
* NEW: Add a '-F' option that converts a piece of form data into Gambas code.
* NEW: Update help text layout.
[ARCHIVER]
* NEW: Update help text layout.
[INFORMER]
* NEW: Update help text layout.
[COMPILER]
* NEW: 'EXEC / SHELL ... TO ... WITH ERROR' is a new syntax that redirects
both the standard output and the standard error of a process to a string.
The support for that feature was already present inside the interpreter!
[COMPILER]
* BUG: Fix generation of floating point constants whose value is an integer.
* BUG: Fix a possible memory corruption after the end of the compilation of the first class.
[COMPILER]
* OPT: The parser now does not store integer numbers in its global symbol table anymore.
* OPT: Some other little optimizations here and here. The compiler is now about 5% faster.
[ARCHIVER]
* NEW: Compile with '-O3' optimization flag.
[INFORMER]
* NEW: Compile with '-O3' optimization flag.
[GB.EVAL]
* OPT: The parser now does not store integer numbers in its global symbol table anymore.
[COMPILER]
* NEW: Shr, Shl, Asr, Asl, Lsl, Lsr, Rol and Ror can now be used as operators.
* NEW: Now integer constants can be simple integer expressions in array, constant and enumeration declarations.
[GB.EVAL]
* BUG: Fix a compiler warning.
[COMPILER]
* NEW: 'STATIC' keyword can be used instead of 'DIM' for declaring local static variables.
[INTERPRETER]
* NEW: Support for local static variables.
[GB.DEBUG]
* NEW: Support for local static variables.
[COMPILER]
* NEW: Add the '-n' option that defines a default namespace for exported classes.
* BUG: The generation of '.info' file now uses the exported name of classes.
* NEW: 'EXPORT TO <Namespace>' exports the class as '<NameSpace>:<class name>'.
* NEW: 'EXPORT TO DEFAULT' now exports to the global namespace.