Commit graph

889 commits

Author SHA1 Message Date
Benoît Minisini
4a3ccda95a Add static array read accessors to return new Compress and new Uncompress object of a specific type.
[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.
2023-04-03 23:53:27 +02:00
Benoît Minisini
06a1d2e33d 'Eval()' now can evaluate several expressions at once, provided that they are separated by newlines. The value of the last expression is returned.
[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.
2023-03-29 12:16:47 +02:00
Benoît Minisini
d44be704d3 Sending a void line to the debugger repeats the last command only if the debugger is run from the command line.
[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.
2023-03-18 01:34:22 +01:00
Benoît Minisini
6b6c1e75b5 Add an API that inverts an image for the 'gb.image.effect' component.
[GB.IMAGE]
* NEW: Add an API that inverts an image for the 'gb.image.effect' component.
2023-03-17 03:11:30 +01:00
Benoît Minisini
d31e7c7aec Make Image.Invert() compatible with the method with the same name in 'gb.image'.
[GB.IMAGE.EFFECT]
* BUG: Make Image.Invert() compatible with the method with the same name in 'gb.image'.
2023-03-17 03:10:13 +01:00
Benoît Minisini
cac1a0f3d0 Make the debugger more robust when writing on a fifo fails. Reopen the fifo if needed.
[GB.DEBUG]
* BUG: Make the debugger more robust when writing on a fifo fails. Reopen the fifo if needed.
2023-03-07 00:09:01 +01:00
Benoît Minisini
203a1db252 Correctly rewrite lines using the 'ERROR' keyword in a one-line 'IF' expression.
[GB.EVAL]
* BUG: Correctly rewrite lines using the 'ERROR' keyword in a one-line 'IF' expression.
2023-02-04 09:29:21 +01:00
Benoît Minisini
ca20ea1cd7 Fix JIT compilation on old compilers that do not support arithmetic overflow check.
[GB.JIT]
* BUG: Fix JIT compilation on old compilers that do not support arithmetic overflow check.
2023-02-02 08:35:20 +01:00
Benoît Minisini
c69f98fdf1 Fix quoting when displaying a string value.
[GB.DEBUG]
* BUG: Fix quoting when displaying a string value.
2023-01-20 15:56:35 +01:00
Benoît Minisini
f7d5eda82c 'gb.image' is now compatible with 'gb.web.gui'.
[GB.IMAGE]
* NEW: Color: ToHTML() is a new method that converts a Gambas color as integer value to an HTML color representation.
2023-01-16 00:54:11 +01:00
Benoît Minisini
57aa63bec2 Fix arithmetic overflow detection on datatype conversion.
[GB.JIT]
* BUG: Fix arithmetic overflow detection on datatype conversion.
2023-01-13 23:20:04 +01:00
Christof Thalhofer
1a8fdb41b7 GambasSelftests integer overflow tests
[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
2023-01-13 11:49:43 +01:00
Benoît Minisini
246cf40553 Don't use '-O3'. It makes benchmarks sometimes slower than using '-O2'.
[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.
2023-01-10 21:55:25 +01:00
Benoît Minisini
f05de9b897 Fix rewrite of ERROR instruction.
[GB.EVAL]
* BUG: Fix rewrite of ERROR instruction.
2023-01-05 17:39:29 +01:00
Benoît Minisini
1fd1d16ec8 Convert two global interpreter flags from boolean to bitfield.
[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.
2023-01-04 18:49:13 +01:00
Benoît Minisini
51a88d26b4 'Error' keyword is now correctly written without spurious spaces around.
[GB.TEST]
* BUG: 'Error' keyword is now correctly written without spurious spaces around.
2023-01-04 17:05:46 +01:00
Benoît Minisini
c24d92c21d Correctly rewrite the 'Error' keyword.
[COMPILER]
* NEW: Synchronize with 'gb.eval' parser.

[GB.EVAL]
* NEW: Synchronize with compiler parser.
* BUG: Correctly rewrite the 'Error' keyword.
2023-01-04 17:04:34 +01:00
Benoît Minisini
7a8610f779 Paint.Rectangle() with a border radius now works as expected with a negative width or height.
[GB.DRAW]
* BUG: Paint.Rectangle() with a border radius now works as expected with a negative width or height.
2023-01-03 14:38:46 +01:00
Benoît Minisini
ffa0611cea Factorize exception management in JIT code.
[GB.JIT]
* OPT: Factorize exception management in JIT code.
2023-01-03 14:25:00 +01:00
Benoît Minisini
3c1a76248b Add Expand() and Shrink() methods to the rectangle classes.
[GB.GEOM]
* NEW: Add Expand() and Shrink() methods to the rectangle classes.
2023-01-02 20:22:30 +01:00
Benoît Minisini
b145355b76 The debugger now indicates if the printed information is from the current stack frame or from another one.
[GB.DEBUG]
* NEW: The debugger now indicates if the printed information is from the current stack frame or from another one.
2022-12-16 08:46:17 +01:00
Benoît Minisini
c10fe0a6c3 Optimization of conditional jumps based on values known to be Boolean.
[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.
2022-12-10 12:54:42 +01:00
Benoît Minisini
e495a05249 The Image constructor now fills the image data with 'Color.Transparent' color by default.
[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.
2022-12-10 00:06:50 +01:00
Benoît Minisini
af950247c4 Implement overflow detection in JIT compiler. Some jump optimizations in the compiler and the interpreter.
[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.
2022-12-09 15:00:55 +01:00
Christof Thalhofer
e56fe65925 test-fast for quick selftest in root dir
[DEVELOPMENT ENVIRONMENT]
* NEW: Add shell script test-fast in root dir for quick selftest
2022-12-05 17:17:35 +01:00
Benoît Minisini
0fcacdebdf Raise a "Mathematic error" if the real or imaginary part of a complex number is not finite.
[GB.COMPLEX]
* NEW: Raise a "Mathematic error" if the real or imaginary part of a complex number is not finite.
2022-11-29 20:52:14 +01:00
Benoît Minisini
92dccf468a Result: 'Editable' is a new property that returns if the result is editable.
[GB.DB]
* NEW: Result: 'Editable' is a new property that returns if the result is editable.
2022-11-15 02:16:24 +01:00
Benoît Minisini
3d628e41b3 Fix JIT compilation of extern function calls.
[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.
2022-10-17 23:30:21 +02:00
Benoît Minisini
f528f4d4ca Fix JIT compilation of class inheriting from another class and Left$(), Right$() and Mid$() routines.
[INTERPRETER]
* BUG: Fix JIT compilation of class inheriting from another class.

[GB.JIT]
* BUG: Fix compilation of Left$(), Right$() and Mid$() routines.
2022-10-15 19:30:03 +02:00
Benoît Minisini
09adb643df Bool@(), Byte@()... functions can be the target of an affectation now.
[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.
2022-10-08 10:26:50 +02:00
Benoît Minisini
1004b39078 Optimization of small integer floating point constants.
[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.
2022-10-07 13:10:22 +02:00
Benoît Minisini
f749ce2030 Save 'errno' before running the debugger, and restore it after.
[GB.DEBUG]
* BUG: Save 'errno' before running the debugger, and restore it after.
2022-10-06 17:45:06 +02:00
Benoît Minisini
56cc729fe0 Fix backward-compatibility with previous bytecode.
[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.
2022-10-04 22:49:01 +02:00
Benoît Minisini
50893e77cb Various optimizations of the interpreter execution loop.
[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.
2022-10-04 01:04:15 +02:00
Benoît Minisini
59051975ec Make 'gb.hash' compile on 32 bits architectures.
[GB.HASH]
* BUG: Make 'gb.hash' compile on 32 bits architectures.
2022-09-24 11:50:31 +02:00
Benoît Minisini
1c64c42ada Make 'gb.hash' compile on non-64 bits architectures.
[GB.HASH]
* BUG: Make 'gb.hash' compile on non-64 bits architectures.
2022-09-20 15:06:35 +02:00
Benoît Minisini
7c42524ecd Connection: It's now possible to specify the password in the connection URL.
[GB.DB]
* NEW: Connection: The URL argument of the Connection constructor is now handled by the Gambas part.
* NEW: Connection: It's now possible to specify the password in the connection URL.
2022-09-20 12:54:14 +02:00
Benoît Minisini
219507b53e Forgot to commit two source files.
[GB.HASH]
* BUG: Forgot to commit two source files.
2022-09-18 00:37:54 +02:00
Benoît Minisini
580a51b659 Replace hash native functions by static methods in a 'Hash' class implemented in the 'gb.hash' component.
[COMPILER]
* NEW: Remove Md5() and other hash native functions.

[INTERPRETER]
* NEW: Remove Md5() and other hash native functions.

[GB.HASH]
* NEW: 'Hash' is a new static class with methods that implement The 'Md5', 'Sha1', 'Sha256' and 'Sha512' hash functions.
2022-09-17 22:41:29 +02:00
Benoît Minisini
0b7c342e8e Add Md5(), Sha1(), Sha256() and Sha512() functions.
[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.
2022-09-13 02:48:11 +02:00
Benoît Minisini
0111231df9 Fix compilation.
[GB.EVAL]
* BUG: Fix compilation.
2022-09-12 15:17:22 +02:00
Benoît Minisini
6a793ddeb7 Replace my old depracted gmail mail by the new one.
[CONFIGURATION]
* NEW: Replace my old depracted gmail mail by the new one.
2022-09-12 15:13:13 +02:00
Benoît Minisini
ec3633e5a6 Forgot to remove some uses of deprecated LIKELY() macros.
[GB.DATA]
* BUG: Forgot to remove some uses of deprecated LIKELY() macros.
2022-09-08 00:56:45 +02:00
Benoît Minisini
f3cfc51374 Connection: Request substitution methods now support "[&1]" and "&1" quoting syntax to quote a table name or a column name.
[INTERPRETER]
* NEW: Enhance 'GB.SubstStringAdd()' and add 'GB.SubstStringUnquote()' API to support custom quoting in 'gb.db'.

[GB.DB]
* NEW: Connection: Request substitution methods now support "[&1]" and "`&1`" quoting syntax to quote a table name or a column name.
2022-09-05 00:59:44 +02:00
Benoît Minisini
aff3103b07 Remove uses of deprecated LIKELY() macros.
[GB.DATA]
* BUG: Remove uses of deprecated LIKELY() macros.
2022-09-04 22:02:39 +02:00
Benoît Minisini
0ec57295b7 Remove useless LIKELY() and UNLIKELY() macros. Add a class flag for bytecode strictly older than 3.18.
[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.
2022-09-03 14:20:13 +02:00
Benoît Minisini
93764b1c37 Add 'ALIGN_MAKE()' macro in 'gb.geom.h'.
[GB.GEOM]
* NEW: Add 'ALIGN_MAKE()' macro in 'gb.geom.h'.
2022-08-25 23:56:54 +02:00
Benoît Minisini
4f9e724d76 Paint: Add 'LineDash' and 'LineDashOffset' synonymous properties.
[GB.DRAW]
* NEW: Paint: 'LineDash' is now a synonymous for the 'Dash' property.
* NEW: Paint: 'LineDashOffset' is now a synonymous for the 'DashOffset' property.
2022-08-10 00:00:26 +02:00
Benoît Minisini
438b41f7e1 Make the component visible.
[GB.GEOM]
* NEW: Make the component visible.
2022-08-09 02:49:52 +02:00
Benoît Minisini
1b2d3d2a51 Add a command to remove all breakpoints in one shot.
[GB.DEBUG]
* NEW: Add a command to remove all breakpoints in one shot.
2022-08-08 17:26:41 +02:00