Commit graph

461 commits

Author SHA1 Message Date
Benoît Minisini
ddf2d2bd8d Oops. Forgot to remove parser debugging messages.
[COMPILER]
* BUG: Oops. Forgot to remove parser debugging messages.
2023-04-19 13:25:04 +02:00
Benoît Minisini
4a6626c0a8 '+Inf' and '-Inf' do not prevent the next pattern to be a reserved keyword anymore.
[COMPILER]
* BUG: '+Inf' and '-Inf' do not prevent the next pattern to be a reserved keyword anymore.
2023-04-19 03:22:12 +02:00
Benoît Minisini
44bdb9486f Support for environment variables set at startup.
[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.
2023-03-18 01:36:19 +01:00
Benoît Minisini
648b123f07 The support for external debugging now uses the project name, not the executable name, which may be different.
[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.
2023-03-17 03:12:52 +01:00
Benoît Minisini
829a8a16ca Make code compile on older versions of gcc.
[ARCHIVER]
* BUG: Make code compile on older versions of gcc.
2023-03-11 11:19:40 +01:00
Benoît Minisini
e31a2ad2a7 Add a '-p' option to ignore the '.public' directory.
[ARCHIVER]
* BUG: Handle hidden files only in the project root directory.
* NEW: Add a '-p' option to ignore the '.public' directory.
2023-03-11 10:31:34 +01:00
Benoît Minisini
c2ee9733a4 Fix a compiler warning.
[COMPILER]
* BUG: Fix a compiler warning.
2023-01-13 07:58:34 +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
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
98fb2a0fc7 Do not check for a project directory when listing archive files.
[ARCHIVER]
* BUG: Do not check for a project directory when listing archive files.
2022-12-23 13:51:20 +01:00
Benoît Minisini
21e72303ab Add the '-l' option to list all files included in an archive.
[ARCHIVER]
* NEW: Add the '-l' option to list all files included in an archive.
2022-12-23 12:31:17 +01:00
Benoît Minisini
76196d2cd5 Fix parsing of 'Debug' symbol in preprocessor lines. Don't crash anymore if an error is raised while reading command-line arguments.
[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.
2022-12-11 16:44:46 +01:00
Benoît Minisini
7480a9b14c Workaround incorrect use of unsigned color constants by the IDE form editor.
[COMPILER]
* NEW: Workaround incorrect use of unsigned color constants by the IDE form editor.
2022-12-10 20:44:10 +01:00
Benoît Minisini
53cd261647 Fix jump optimization again.
[COMPILER]
* BUG: Fix jump optimization again.
2022-12-10 20:36:49 +01:00
Benoît Minisini
bab0f763c5 Do not run jump optimization on ON GOTO / ON GOSUB, it breaks them.
[COMPILER]
* BUG: Do not run jump optimization on ON GOTO / ON GOSUB, it breaks them.
2022-12-10 19:39: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
0acbd1979c Ignore jumps to the end of the function when optimizing jumps.
[COMPILER]
* BUG: Ignore jumps to the end of the function when optimizing jumps.
2022-12-10 00:22:17 +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
Benoît Minisini
c2c08aef6c The '/' operator does not necessarily return a Float. Fix incorrect optimizations that lead to interpreter crashes.
[COMPILER]
* BUG: The '/' operator does not necessarily return a Float. Fix incorrect optimizations that lead to interpreter crashes.
2022-12-08 15:52:56 +01:00
Benoît Minisini
7a238f4c76 Make the compiler more clever when deciding if an identifier is a reserved keyword or not. Some optimizations in the compiler parser.
[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.
2022-12-04 20:00:04 +01: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
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
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
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
c2005ad919 Forbid "PROPERTY WRITE" when compiled bytecode version is strictly lower than 3.18.
[COMPILER]
* NEW: Forbid "PROPERTY WRITE" when compiled bytecode version is strictly lower than 3.18.
2022-09-12 15:01:00 +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
6548c75a0e Does not crash anymore when a negative integer is used for the value of a floating point constant.
[COMPILER]
* BUG: Does not crash anymore when a negative integer is used for the value of a floating point constant.
2022-08-06 18:56:24 +02:00
Benoît Minisini
56e9129f85 PROPERTY WRITE now declares a write-only property.
[INTERPRETER]
* NEW: Support for write-only properties.

[COMPILER]
* NEW: PROPERTY WRITE now declares a write-only property.
2022-08-01 22:03:54 +02:00
Benoît Minisini
21d9bd178e Display bytecode statistics in verbose, no background task mode.
[COMPILER]
* NEW: Display bytecode statistics in verbose, no background task mode.
2022-07-22 20:40:20 +02:00
Benoît Minisini
c17f5a58f8 Add the branch to the version number when it comes from a 'VERSION' file.
[COMPILER]
* BUG: Add the branch to the version number when it comes from a 'VERSION' file.
2022-05-02 15:06:32 +02:00
gambas
891edceeea The 'VERSION' file is taken into account again.
[COMPILER]
* BUG: The 'VERSION' file is taken into account again.
2022-04-08 02:31:22 +02:00
gambas
bee8cacf59 Line number in error message should now be correct when the faulty code spans on multiple lines.
[COMPILER]
* BUG: Line number in error message should now be correct when the faulty code spans on multiple lines.
2022-03-10 00:48:06 +01:00
gambas
2d681e7fa8 Type analysis of bit operators now works correctly.
[COMPILER]
* BUG: Type analysis of bit operators now works correctly.
2022-02-19 11:30:28 +01:00
gambas
e5a66e553e Add a '-F' option that converts a piece of form data into Gambas code.
[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.
2022-02-05 18:41:36 +01:00
gambas
f75b23a834 The NEW operator now raises an error if the class following it is unknown.
[COMPILER]
* BUG: The NEW operator now raises an error if the class following it is unknown.
2022-01-29 18:46:36 +01:00
gambas
1f93b3723c Array classes can be used with the IS operator without being declared elsewhere first.
[COMPILER]
* BUG: Array classes can be used with the IS operator without being declared elsewhere first.
2021-11-08 12:25:58 +01:00
gambas
fa133a3c78 The output of 'msgfmt' executions is stored in log files, one by translation.
[COMPILER]
* NEW: The output of 'msgfmt' executions is stored in log files, one by translation.
2021-11-08 01:43:27 +01:00
gambas
e138b8f0e5 '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.
[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!
2021-10-20 17:39:52 +02:00
gambas
165e680dce Fix generation of floating point constants whose value is an integer.
[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.
2021-10-17 01:08:30 +02:00
gambas
bc806a189b The parser now does not store integer numbers in its global symbol table anymore. Compile is now about 5% faster.
[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.
2021-10-14 03:01:14 +02:00
gambas
d651287c43 Now integer constants can be simple integer expressions in array, constant and enumeration declarations.
[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.
2021-10-12 13:33:45 +02:00
gambas
b94176c704 Don't handle VERSION file in the compiler. Only the IDE supports that feature now.
[COMPILER]
* NEW: Don't handle VERSION file in the compiler. Only the IDE supports that feature now.
2021-06-23 18:51:44 +02:00
gambas
e6d9faad0a Allow local static variables to declare embedded arrays or structures like global variables.
[COMPILER]
* NEW: Allow local static variables to declare embedded arrays or structures like global variables.
2021-06-15 17:06:57 +02:00
gambas
e0434b8814 Fix compilation of local static identifier access.
[COMPILER]
* BUG: Fix compilation of local static identifier access.
2021-06-02 09:59:11 +02:00
gambas
912d228f44 Remove a debugging message.
[COMPILER]
* BUG: Remove a debugging message.
2021-06-02 02:33:40 +02:00
gambas
fdf445042b Fix initialization of static local variables.
[COMPILER]
* BUG: Fix initialization of static local variables.
2021-06-02 00:04:15 +02:00
gambas
8a8b470c5a 'STATIC' keyword can be used instead of 'DIM' for declaring local static variables.
[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.
2021-06-01 23:12:55 +02:00
gambas
3c64df79b7 Namespace support continued.
[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.
2021-05-21 16:48:59 +02:00