[GB.TEST]
* NEW: TapParser can now parse subtests. Consequently, TestRunner assembles a tree of TestAssertions.
* BUG: Remove trailing '\r' characters from TapStream lines.
By our convention a subtest is opened by a "Test ..." line and closed by
its summarizing "ok" / "not ok" assertion.
This commit regresses on TInternals's reflection tests because I added
tests for the parser and runner which need event handlers to do their
testing. These are unintentionally detected as test methods.
[GB.TEST]
* NEW: 'gb.util' and 'gb.settings' are not required anymore.
* NEW: Add an Helper module that implements the functions replacing what was used in 'gb.util' and 'gb.settings'.
* BUG: Rewrite the GetTestSuiteByName() method without 'gb.settings', and fix it. It was completely broken.
[INTERPRETER]
* NEW: Remove the now useless testing specific code.
* NEW: 'gbx3 -T' now just loads the 'gb.test' component and calls Test.Main() passing it the '-T' option argument.
[GB.TEST]
* NEW: Move 'gb.test' sources in '/main/lib'.
* NEW: 'gb.test' has now a part written in C that allows him to load project classes on demand.
[INTERPRETER]
* NEW: Support for JIT '&=' optimization.
* BUG: Fix '&=' optimization on argument variables.
* OPT: Strings greater than 4096 bytes are allocated by 4096 bytes steps.
[GB.JIT]
* NEW: JIT optimization of '&=' has been implemented.
[GB.GUI]
* BUG: Fix detection of GUI components and share some code with 'gb.gui.qt'.
[GB.GUI.QT]
* BUG: Fix detection of GUI components and share some code with 'gb.gui'.
[INTERPRETER]
* NEW: Internal name of libraries uses a point now between vendor and library name, not a slash anymore.
[GB.DEBUG]
* BUG: Undo "make debugger output writes more robust". Apparently it does not work.
[GB.JIT]
* BUG: Compiling libraries works now.
[GB.DRAW]
* NEW: Paint.TextHeight is a new property that returns the height of one line of text. This is not the same as Paint.Font.Height, as the device resolution is taken into account.
[GB.GTK]
* NEW: Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
[GB.GTK3]
* NEW: Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
[GB.QT4]
* NEW: Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
[GB.QT5]
* NEW: Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
* BUG: Utility windows now kept being in front of their parent window correctly.
[COMPILER]
* NEW: Don't emit debugging information for generated functions, but emit void sections for backward compatibility.
* NEW: Don't emit source file path in the debugging information.
* NEW: Add a driver API that handles debugging messages.
* NEW: Print the current date/time before any debugging message.
[GB.DB.MYSQL]
* NEW: Use the new driver API to print debugging messages.
[GB.DB.ODBC]
* NEW: Use the new driver API to print debugging messages.
[GB.DB.POSTGRESQL]
* NEW: Use the new driver API to print debugging messages.
[GB.DB.SQLITE2]
* NEW: Use the new driver API to print debugging messages.
[GB.DB.SQLITE3]
* NEW: Use the new driver API to print debugging messages.
[GB.DRAW]
* NEW: Paint: FontScale is a new property that defines a scale applied to the size of the fonts assigned to the Paint.Font property.
* NEW: Paint: Scale() second argument is now optional, and takes the same value as the first argument if omitted.
[GB.GTK]
* NEW: Paint: Implementation of Paint.FontScale.
* BUG: Printer: All printer events are raised between a single Paint.Begin() / Paint.End().
[GB.GTK3]
* NEW: Paint: Implementation of Paint.FontScale.
* BUG: Printer: All printer events are raised between a single Paint.Begin() / Paint.End().
* BUG: Printer: Print() does now crash anymore.
* BUG: Printer: Font sizes now are the same as with QT components.
[GB.QT4]
* NEW: Paint: Implementation of Paint.FontScale.
[GB.QT5]
* NEW: Paint: Implementation of Paint.FontScale.
[GB.EVAL]
* NEW: Highlight.Alternate is a new constant that represents the background style used for coloring code embedded into webpages.
[GB.EVAL.HIGHLIGHT]
* NEW: Support for new Highlight.Alternate style.
[GB.FORM.EDITOR]
* NEW: Support for new Highlight.Alternate style.
* NEW: Matching braces now blink with the cursor.
* BUG: When the cursor moves, the blinking timer is reset so that the cursor blinks only when it is not moving.
[INTERPRETER]
* BUG: Ignore errors when loading a class for the JIT compiler.
[GB.JIT]
* BUG: Loading a class during JIT compilation can fail. Take that into account.
[COMPILER]
* OPT: Some optimizations in symbol table routines.
* NEW: Emit column position in almost all error messages. It makes the compiler 2.5% slower, even with the optimizations.
[INTERPRETER]
* BUG: JIT compiler does not run static initializers anymore when loading a class. Otherwise bytecode can be modified before being compiled, leading to a JIT compiler crash.
[COMPILER]
* BUG: Fix LOCK subroutine meta-information.
[GB.JIT]
* NEW: Don't display abortion debugging message if there is no compilation to abort.
* BUG: Object variables are correctly managed now.
* BUG: DO...LOOP and REPEAT...UNTIL at the beginning of the function now is correctly compiled in all cases.
[INTERPRETER]
* BUG: Active file descriptor watches and active timers are now automatically transferred to the component declaring a custom event loop. Consequently, a process started before the declaration of the event loop will have its termination signal correctly catched.
* NEW: Use waitpid() instead of wait4().
[GB.GTK]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.
[GB.GTK3]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.
[GB.QT4]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.
[GB.QT5]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.
[INTERPRETER]
* OPT: JIT compilation is run in two steps.
[GB.JIT]
* OPT: Run JIT compilation in the background.
* NEW: JIT.Debug is a new property that allows to enable JIT debugging messages at runtime.
[INTERPRETER]
* NEW: Add a API to know if a native component exists on the disk.
[GB.GUI]
* BUG: Take the other requested GUI components into account to choose the toolkit.
[GB.GUI.QT]
* BUG: Take the other requested GUI components into account to choose the toolkit.
[COMPILER]
* NEW: Assert is an new instruction that raises an error as soon as its boolean argument is FALSE. The associated bytecode is not emitted if the '-x' option is specified.
[INTERPRETER]
* NEW: Assert is an new instruction that raises an error as soon as its boolean argument is FALSE.
[GB.DEBUG]
* BUG: Fix a potential array overflow.
[INTERPRETER]
* BUG: Forgot to call JIT function when the call is dynamic, i.e. if the object owning the method has an anonymous datatype (Object or Variant).
[GB.JIT]
* BUG: Save the initial stack pointer of a function in the function stack instead of using the interpreter stack.
[GB.JIT]
* BUG: Set the SP stack pointer before calling the conversion function to workaround the compiler optimizations and prevent a memory leak at function end if the conversion fails and an exception is raised.
[INTERPRETER]
* NEW: Overriding public variables was useless, and is now forbidden to help JIT compiler optimizations.
[GB.JIT]
* BUG: Correctly compile dynamic accesses to public constants.
* NEW: Update highlighting themes by defining the new color constants.
* NEW: Update French translation.
* BUG: Option dialog: The highlighting color panel now takes the editor font size into account.
[GB.EVAL]
* BUG: Fix string highlighting.
[COMPILER]
* NEW: Rename a macro constant to avoid a symbol clash when compiling the interpreter.
[INTERPRETER]
* NEW: Get rid of a macro trick in 'gbx_eval.h' header.
[GB.EVAL]
* NEW: Highlight: Add three new color constants for syntax highlighting: Escape, Label and Constant.
* NEW: Rename some source files.
* NEW: Rename some constants.
* NEW: Gambas syntax highlighter now use the three new contants for escape characters in strings, for labels, and for language contants (True, False, Null, +Inf and -Inf).
[GB.EVAL.HIGHLIGHT]
* NEW: Support for the new syntax highlighting color constants.
[GB.FORM.EDITOR]
* NEW: Support for the new syntax highlighting color constants.
[INTERPRETER]
* NEW: Creating a NULL value now clears the object address field so that it can be freely interpreted as a Object value with a null address by the JIT compiled code.
[GB.JIT]
* BUG: Correctly restore stack after calling a method through the interpreter.
[INTERPRETER]
* NEW: When creating a new class, set its component immediately if we know the archive it comes from.
[GB.JIT]
* BUG: Correctly load classes from archives other than the main project one.
[INTERPRETER]
* NEW: Add a JIT API for loading classes without running the _init method.
[GB.JIT]
* BUG: Load classes without running the _init method, so that the JIT behaviour is closer to the interpreter behaviour.
[GB.JIT]
* BUG: Don't leak memory when converting an object to a boolean.
* BUG: Correctly pop the arguments from the stack when propagating an exception.
[INTERPRETER]
* NEW: JIT: Add an API for throwing type mismatch errors.
* BUG: Raise a type mismatch error when converting a function to a variant. Don't panic anymore.
[GB.JIT]
* BUG: Handle function datatype by raising a type mismatch error.
* NEW: Fix panic error message.
[GB.JIT]
* BUG: Load project classes before try to resolve a unknown symbol.
* BUG: Correctly restore the stack pointer in all cases at function exit.
[INTERPRETER]
* BUG: Do not clear the 'super' field of the object value returned by NEW, as it does not fix actually anything.
[GB.JIT]
* BUG: Correctly reset the stack pointer when releasing the stack in error handlers.
[INTERPRETER]
* NEW: Abort if a stack mismatch is detected after a JIT function has been called.
[GB.JIT]
* NEW: The GB_JIT_CC environment variable allows to define the C compiler that will generate the code.
* OPT: Don't call the compiler through a shell anymore.
* NEW: Support for clang.
* BUG: Don't use the "," operator anymore to write JIT code.
* BUG: Correctly free stack when leaving a function whereas we are still inside a GOSUB.
* BUG: Declare all local variables and arguments as volatile as soon the function uses CATCH or FINALLY.
[INTERPRETER]
* NEW: Jit is a new static class that allows to deal with the JIT compiler.
* NEW: Jit.Time is a new property that returns the time spent in JIT compilation, in seconds.
[GB.JIT]
* NEW: Support for the Jit.Time property.
* NEW: UNSAFE is a new keyword used in conjunction with FAST. It tells the JIT compiler not to do any safety check (null objects, division by zero, out of array bounds...). It makes the code a bit faster, but prone to segmentation fault.
[INTERPRETER]
* NEW: Support for the UNSAFE keyword.
[GB.JIT]
* NEW: Support for the UNSAFE keyword.
* NEW: Check validity of objects that can be invalid.