[INTERPRETER]
* NEW: Add '-T' option to run test modules.
* NEW: Update help message and display options in alphabetic order.
* BUG: Use '-r' option now to redirect standard error output. No conflict anymore with '-t'.
[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.
[COMPILER]
* NEW: Support for the new PEEK instruction.
[INTERPRETER]
* NEW: PEEK is a new instruction that peek some bytes from a stream without removing them, so that they are available to the next READ instruction.
* OPT: IsAscii(), IsLower(), IsPunct()... instructions are now a bit faster.
[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.
[INTERPRETER]
* NEW: Add class name in 'incorrect symbol declaration' error message.
* NEW: Opening a pipe for reading does not block anymore if the pipe has not been opened for writing yet. It help synchronizing applications using the same pipe a lot!
[INTERPRETER]
* NEW: Check special methods return value datatype and raise a dedicated error if it is incorrect.
* NEW: Error.Text, Error.Where and Error.Backtrace are now available inside the Application_Error handler.
* BUG: 'gbx3 -L' now displays the same Gambas version as 'gbx3 -V'.
* NEW: A class can declare a public '_invalid' boolean variable. The value of that variable will indicates if the object is invalid.
[INTERPRETER]
* NEW: WAIT NEXT is a new instruction that waits for the next event and process it.
[COMPILER]
* NEW: Support for the new WAIT NEXT instruction.
[GB.GTK]
* NEW: Support for the new WAIT NEXT instruction.
[GB.GTK3]
* NEW: Support for the new WAIT NEXT instruction.
[GB.QT4]
* NEW: Support for the new WAIT NEXT instruction.
[GB.QT5]
* NEW: Support for the new WAIT NEXT instruction.
[INTERPRETER]
* NEW: '_read' and '_write' are two new special methods that allow to make any object serializable by the READ and WRITE instructions.
* NEW: Rename macro that convert a Gambas stream object to the internal stream structure and add a macro that does the reverse conversion.
[INTERPRETER]
* NEW: OPEN NULL is a new syntax that opens a null stream. Reading always returns end of file, and writing does nothing except advancing the file pointer, allowing to know how many bytes were written.
[COMPILER]
* NEW: OPEN NULL is a new syntax that opens a null stream.
[INTERPRETER]
* NEW: Stream.NullTerminatedString is a new property that tells if writing a string on the stream emits the string length first, or a null terminated zero byte. This property is TRUE by default on memory streams.
[COMPILER]
* BUG: Allow static arrays to be used with the point operator.
[INTERPRETER]
* BUG: Fix static array management. They are not read-only anymore. Only methods that want to modify the size of the array are forbidden, as well as the ReadOnly property.
[COMPILER]
* BUG: Fix compilation of function calls with variable arguments passing.
* BUG: Remove some useless structure packing directives.
[INTERPRETER]
* BUG: Fix compilation of function calls with variable arguments passing.
[INTERPRETER]
* BUG: Do JIT compilation after class loading. Otherwise the JIT compiler may want to load the class that triggers the compilation again.
[INTERPRETER]
* NEW: Add command-line help for the '-t' option.
* NEW: The '-t' command-line option has a '--trace' long version.
* NEW: System.Trace is a new property that toggles the dump of the position of each executed line.
[INTERPRETER]
* NEW: Uncatched errors raised from an event handler can be ignored now.
[GB.GTK]
* NEW: Uncatched errors raised from an event handler can be ignored now.
[GB.GTK3]
* NEW: Uncatched errors raised from an event handler can be ignored now.
[GB.QT4]
* NEW: Uncatched errors raised from an event handler can be ignored now.
[GB.QT5]
* NEW: Uncatched errors raised from an event handler can be ignored now.
* 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.
[INTERPRETER]
* NEW: Array.ReadOnly is a new property that make an array read-only. Once set, the property cannot be unset.
* NEW: The "Embedded array" error message has been rewritten as "Read-only array".
* NEW: Add two new standard errors: "Multidimensional array" and "Unknown class".
* NEW: Replace some specific error messages by standard errors.
[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: Variant[].Sort() and Variant[].SortUsing() methods have been added.
* NEW: SortUsing() methods now take an optional sort mode as second argument.
[INTERPRETER]
* NEW: File.RealPath() is a new statis method that returns the the canonicalized absolute pathname of path, with no symbolic links inside.
[INTERPRETER]
* BUG: Allocate custom language environment variables statically, because environment is accessed by shared library exit routines, after the interpreter memory allocations have been freed.
[INTERPRETER]
* NEW: Allow one more decimal digit in floating point number constants.
* BUG: Ignore trailing zeros in the decimal part of floating point number constants. It may introduce rounding differences.
[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.
[INTERPRETER]
* BUG: Correctly clear observer reference on the observed object when it is freed.
* BUG: Clear environment variables set by the interpreter, as they can be read by the shared libraries exit routines after main() has been terminated.
[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.
[COMPILER]
* NEW: Allow loop variables to be declared inside the loop syntax.
* NEW: Consequently, FOR EACH now can only use local variables.
[INTERPRETER]
* OPT: A little optimization of integer loops. They are about 5% faster now.
[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.
[INTERPRETER]
* BUG: Fix the LANGUAGE environment variable at startup, not just when System.Language is set. This is a temporary fix, as you lost the contents of LANGUAGE.
* NEW: Add hebrew to the list of right-to-left written languages.
[INTERPRETER]
* BUG: Do not use __DATE__ and __TIME__ macros, they prevent reproducible builds.
[COMPILER]
* BUG: Do not use __DATE__ and __TIME__ macros, they prevent reproducible builds.
[ARCHIVER]
* BUG: Do not use __DATE__ and __TIME__ macros, they prevent reproducible builds.
[INFORMER]
* BUG: Do not use __DATE__ and __TIME__ macros, they prevent reproducible builds.
[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.
[INTERPRETER]
* NEW: String value can be used like object.
* NEW: String[X] returns the X-th character of the string, 0 being the first one.
* NEW: String[X, N] returns N characters from the position X, 0 being the first one. IF N is strictly negative, then all characters from the position X, except the last N characters are returned.
* NEW: String.Len returns the length of the string.
[COMPILER]
* NEW: Allow the [] operator to be applied to a string.
* 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.
pty.h is not needed because its functions are not used.
Use ioctl.h additionally to the already included termios.h to import the
implicitly used functions/constants.
[INTERPRETER]
* NEW: If an unknown symbol is called through a parent class reference, the _unknown() method is not called and an error is raised if the unknown symbol exists in the actual child class.
[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.
[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]
* BUG: The interpreter does not crash anymore when using standard streams at the end of the program whereas they have been already freed.
[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.
[INTERPRETER]
* NEW: JIT: Support for SUPER.
* NEW: JIT: Support for extern functions.
* NEW: Add a flag in Gambas functions to know if they are static or not.
[GB.JIT]
* NEW: Support for SUPER.
* NEW: Support for extern functions.
* BUG: Fix object arrays access.
* OPT: Optimization of Abs, Sgn, Int, Fix, and Pi subroutines.
[INTERPRETER]
* NEW: JIT: Support for event raising.
* BUG: Fix some bugs detected by clang.
[GB.JIT]
* NEW: Support for event raising.
* OPT: Some optimizations in jit code generation and compilation.
[INTERPRETER]
* BUG: JIT: Fix error handling when calling methods from JIT code.
[GB.JIT]
* NEW: Fix support of CATCH and FINALLY.
* NEW: Support for ON GOTO and ON GOSUB.
[INTERPRETER]
* NEW: JIT: Complex number support.
* NEW: JIT: LAST support.
[GB.JIT]
* BUG: Fix management of local variable declaration of translated functions.
* NEW: Support for WITH ... END WITH.
* NEW: JIT: Complex number support.
* NEW: JIT: LAST support.
[INTERPRETER]
* NEW: The NEW implementation routine takes its opcode as argument now, like other subroutines with a variable number of arguments.
[GB.JIT]
* OPT: Call subroutines using their static address. No significative performance gain was detected.
* NEW: Support for CATCH and FINALLY.
[INTERPRETER]
* NEW: Support for error management in JIT methods.
[COMPILER]
* BUG: Fix Error() function metadata.
[GB.JIT]
* NEW: Support for error management.
* NEW: TRY instruction.
* BUG: Correct support of NULL.
[INTERPRETER]
* OPT: String searching (Instr, RInstr and Replace) has been made about 4x faster by searching the first occurence with memchr() and memrchr().
[GB.FORM.TERMINAL]
* BUG: Fix warning messages.
[GB.JIT]
* BUG: Fix byte, short and boolean pushing and popping routines.
* BUG: Fix string values referencing.
* BUG: Fix optional argument management.
* NEW: Optimization of bits management subroutines.
[GB.QT4]
* BUG: Delay hooks initialization, because now socket notifiers must not be used before creating the event loop.
[GB.QT5]
* BUG: Delay hooks initialization, because now socket notifiers must not be used before creating the event loop.
[INTERPRETER]
* OPT: String routines are now compiled with -O3.
* NEW: Don't display JIT debugging message unless GB_JIT_DEBUG is set to something different from zero.
* NEW: String whose length is greater than 256 now have a growth step of 256 bytes instead of 16.
[GB.JIT]
* NEW: Do many global optimizations as now the class metadata is fully available.
* NEW: Support for optional argument. Still buggy at the moment.
[BENCHMARKS]
* NEW: Little meaningless changes.
[INTERPRETER]
* NEW: JIT: Support for FOR EACH loops.
* BUG: JIT: Handle function values that are put on stack before calling them.
[COMPILER]
* NEW: JIT: Optimization of mathematic functions.
* NEW: JIT: Support for FOR EACH loops.
* NEW: JIT: Remove successive POP_x() / PUSH_x().
* NEW: JIT: Optimization of DIV and MOD.
* NEW: JIT: Support of internal control local variables used by SELECT and FOR EACH.
* NEW: JIT: Support for SWAP.
[GB.JIT]
* NEW: Optimization of mathematic functions.
* NEW: Variants management.
* NEW: All conversions are handled now.
* NEW: FOR EACH loops are implemented.
[INTERPRETER]
* NEW: Implement return value of JIT methods.
* NEW: Support for calling '.' operator from a JIT method.
[COMPILER]
* BUG: JIT: Fix detection of native arrays.
* BUG: JIT: Delete translated file if a class has no fast method anymore.
* BUG: JIT: Prefix JIT method with "jit_" to avoid possible conflicts.
* BUG: JIT: Fix variable initialization.
* NEW: JIT: Complete datatype support.
* NEW: JIT: Support for SWAP.
* NEW: JIT: Support for array operators.
* BUG: JIT: Fix arithmetic operators.
* NEW: JIT: Implement ME and "." operator.
* NEW: JIT: Complete GOSUB / RETURN support.
* NEW: JIT: Support for DIV and MOD operators. Not optimized yet.
[ARCHIVER]
* NEW: Put JIT translation in the archive.
[GB.JIT]
* NEW: Complete datatype support. Variant is not supported yet.
* NEW: Complete GOSUB / RETURN support.
* NEW: Support for ME and '.' operator.
[INTERPRETER]
* BUG: Release arguments after having called a JIT method.
* NEW: Add JIT interface for returning a value.
[COMPILER]
* NEW: JIT: Nicer translation for quick add of negative numbers.
[CONFIGURATION]
* NEW: Add '.jit' directory to '.gitignore'.
[COMPILER]
* NEW: New '-j' option that disables just in time compilation.
* NEW: JIT: Support for private functions calls.
* NEW: JIT: Support for native arrays accessors.
* BUG: JIT: Fix loop support.
* NEW: JIT: Support for GOSUB.
[GB.JIT]
* NEW: GB_JIT_DEBUG is an environment variable that defines if JIT compilation debugging messages are printed.
* NEW: GB_JIT_CFLAGS is an environment variable that defines the JIT compilation flags. The default is "-O3".
* NEW: Support for native arrays accessors.
[COMPILER]
* BUG: JIT: Fix local variable referencing.
* NEW: JIT: Implement NEW operator and array accessors.
[INTERPRETER]
* NEW: Support for JIT NEW operator and array accessors.
[GB.JIT]
* NEW: Support for object datatypes.
* NEW: Implement NEW operator and array accessors.
[COMPILER]
* NEW: JIT: Support for FOR...TO...NEXT loops.
* NEW: JIT: Support for Len(), Left$(), Mid$(), and Right$().
* NEW: JIT: Subroutines return values are now hadled correctly.
[GB.JIT]
* NEW: Compile JIT code with -O3.
[COMPILER]
* NEW: Internal initialization functions now can be JIT translated.
* NEW: Support of subroutine calling completed. Interpreter subroutines are called if there is no optimization implemented in the JIT translation.
[INTERPRETER]
* NEW: Remove old JIT stuff.
[GB.JIT]
* NEW: Use 'gambas.h' and 'gb.jit.h' to compile translated code.
* NEW: Work on JIT continues...
* NEW: Better panic errors.
[INTERPRETER]
* NEW: Remove the old JIT stuff.
* NEW: Calls gb.jit at runtime if needed. If a fast function has no jit implementation, the bytecode version is used.
* NEW: Start defining the JIT interface needed by the JIT functions.
* NEW: The common static character buffer is now twice the size of the maximum symbol length, to avoid possible overflows.
[GB.JIT]
* NEW: Compilation starts to work.
* NEW: Debugging messages.
[COMPILER]
* NEW: Work continues on new JIT system.
[INTERPRETER]
* NEW: Make comparison operator true functions so that they can be called by the JIT code.
[INTERPRETER]
* BUG: Fix conversion between dates and their local string representation.
* OPT: Little optimization in conversion functions calls.
[GB.UTIL]
* BUG: Fix Date.ToUnixTime() and Date.FromUnixTime() according to the interpreter fix.
[INTERPRETER]
* NEW: Add a new message error for free object being referenced.
* NEW: Raise an error if a object being freed has been referenced by its '_free' special method.
* OPT: Add a boolean flag in the class structure not to try to call the '_free' special method if there is not.
[INTERPRETER]
* NEW: When formatting a date, the number of 'y' is now the minimum number of digits used for displaying the date year.
* NEW: When converting a string to a date with Val(), if the year begins with a zero character, then it is not converted to years between 1931 and 2030 if it is lower than 100.
[INTERPRETER]
* NEW: New API for reference a Gambas string.
[GB.DB]
* NEW: Result.GetAll() is a new method that returns an array of the values of a specific field from each record. It is about twice faster than the equivalent code written in Gambas.
[INTERPRETER]
* BUG: Writing to a stream does not crash anymore if the stream is closed while the data is sent in several shots. Socket stream implementation should not close the stream while writing. I will try to fix that later.
[INTERPRETER]
* BUG: Remove the task output serialization file when it is freed.
* BUG: Tasks do not print memory and objects clean up warnings anymore.
[DEVELOPMENT ENVIRONMENT]
* OPT: Don't load the help browser form immediately to speed up IDE starting.
[INTERPRETER]
* NEW: Use a dedicated stream for locks, so that the File object returned by LOCK cannot be used for reading or writing the locked file.
[GB.GTK]
* NEW: Ignore Application.Busy when displaying a message box.
[GB.GTK3]
* NEW: Ignore Application.Busy when displaying a message box.
[GB.QT4]
* NEW: Ignore Application.Busy when displaying a message box.
[GB.QT5]
* NEW: Ignore Application.Busy when displaying a message box.
[INTERPRETER]
* NEW: Component.Library is a new property that returns if a component is actually a user library.
* NEW: Component.Version is a new property that returns the version number of a loaded component. If the component is a user library, you get the version number of that library. Otherwise you get the current Gambas version.
[INTERPRETER]
* NEW: gb.Match is a new constant that indicates a string comparison using the PCRE MATCH operator.
* BUG: The gb.Descent flag could be erased when sorting objects implementing the '_compare' special method.
[INTERPRETER]
* BUG: Correctly attach newly created objects.
* BUG: Lof() should work correctly now on streams having a specific implementation of Lof() function.