[INTERPRETER]
* OPT: Optimize object creation when there is no special method to call ('_new', '_ready', global variable initialization) and no inheritance.
[INTERPRETER]
* OPT: Big optimization of the interpreter loop by using a local program counter.
* NEW: Use one short integer less in the bytecode files for each function using computed Goto.
[COMPILER]
* NEW: Use one short integer less in the bytecode files for each function using computed Goto.
[INTERPRETER]
* OPT: Optimize object release for native integer and float arrays accessors.
* OPT: Shortcut path for adding a small integer or float constant number.
[COMPILER]
* OPT: Shortcut path for adding a small integer or float constant number.
[GB.JIT]
* NEW: Support for new bytecodes.
[GB.DRAW]
* NEW: Support for 'Style.Default' constant.
[GB.GTK]
* NEW: Style: Add 'Default' constant. It tells the Style routine to use the current painted control (if it exists) as a context.
[GB.GTK3]
* NEW: Style: Add 'Default' constant. It tells the Style routine to use the current painted control (if it exists) as a context.
* BUG: Style: Painting the backgroud correctly takes the background color into account, unless for active state (i.e. pressed buttons).
[GB.QT4]
* NEW: Style: Add 'Default' constant. It tells the Style routine to use the current painted control (if it exists) as a context.
* NEW: 'Style.StateOf()' always adds the 'Style.Default' constant.
[GB.QT5]
* NEW: Style: Add 'Default' constant. It tells the Style routine to use the current painted control (if it exists) as a context.
* NEW: 'Style.StateOf()' always adds the 'Style.Default' constant.
[GB.DB]
* NEW: Connection: 'Create()' now has an optional 'Return' boolean argument
to tell if the 'Result.Update()' method will fill the Result with the
contents of the newly inserted record. It is based on the optional
'INSERT INTO ... RETURNING' SQL feature.
* NEW: Connection: The 'FullVersion' property now return the full version
string of the database server.
* NEW: Database drivers can tell if they do not support the 'RETURNING'
keyword.
* NEW: Database drivers now must provide the full version string of they
database server they connect to.
[DEVELOPMENT ENVIRONMENT]
* NEW: Support for 'gb.gui.qt.ext' component.
[GB.GUI.QT.EXT]
* NEW: New component switcher for choosing between QT4 or QT5 extension component.
[GB.COMPRESS]
* NEW: Clean-up the code: spaces, indentation...
* NEW: Compress: Add a static array read accessor to return a new Compress object of a specific type.
* NEW: Uncompress: Add a static array read accessor to return a new Uncompress object of a specific type.
[INTERPRETER]
* NEW: Support for the new Eval() feature.
[GB.EVAL]
* NEW: 'Eval()' now can evaluate several expressions at once, provided that they are separated by newlines. The value of the last expression is returned.
* NEW: 'Eval()' now returns NULL if its last expression returns nothing.
[GB.DEBUG]
* NEW: If the 'GB_DEBUG_DEBUG' environment variable is '1', then a message is printed each time the debugger fifo fails and must be reopened.
* NEW: Sending a void line to the debugger repeats the last command only if the debugger is run from the command line.
[DEVELOPMENT ENVIRONMENT]
* NEW: GambasSelftests integer overflow tests
* FIX: GambasSelftests run.sh just tests without JIT
Also refactored GambasSelftests a bit and removed some duplicated code
[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.
[INTERPRETER]
* NEW: Convert two global interpreter flags from boolean to bitfield.
* NEW: Remove a unused JIT API and take the previous into account.
[GB.JIT]
* NEW: Take the boolean to bitfield interpreter flag changes into account.
[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.
[GB.IMAGE]
* NEW: The Image constructor now fills the image data with 'Color.Transparent' color by default. To get uninitialized image data, you must specified 'Color.Default' as fill color.
[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]
* NEW: Add an API for the JIT compiler that retrieves the address of an object or a class for external functions.
[GB.JIT]
* BUG: Fix JIT compilation of extern function calls.
[INTERPRETER]
* BUG: Fix JIT compilation of class inheriting from another class.
[GB.JIT]
* BUG: Fix compilation of Left$(), Right$() and Mid$() routines.
[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.