Commit graph

452 commits

Author SHA1 Message Date
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
gambas
0e78042e07 Initial implementation of class namespaces.
[DEVELOPMENT ENVIRONMENT]
* NEW: Update French translation.
* NEW: Support of the new '.list' file format.
* NEW: Support of the new EXPORT AS syntax.
* NEW: Update error messages.

[COMPILER]
* NEW: EXPORT AS is a new syntax for exporting a class with a specific name that can include a namespace.
* NEW: New header file to start sharing reader code with the 'gb.eval' component.
* NEW: Class names can include a colon. The part before the colon is assumed to be a namespace.

[INTERPRETER]
* NEW: Classes exported in a namespace are now declared both in the global symbol table and in the local symbol table of their component.
* NEW: Class names are now allocated inside the symbol tables, and not in the class objects anymore.

[GB.EVAL]
* NEW: Share some reader code with the compiler.
2021-05-18 02:12:33 +02:00
gambas
da94bbabf3 'h' can be the prefix of any object datatype, even those which already has a prefix.
[COMPILER]
* NEW: 'h' can be the prefix of any object datatype, even those which already has a prefix.
2021-05-07 22:26:53 +02:00
gambas
fbff4a7ee9 New compilation option to check variable prefixes against their datatype, and print a warning if they do not match.
[COMPILER]
* NEW: Set compilation flags with the '-f' generic option now.
* NEW: New compilation option to check variable prefixes against their datatype, and print a warning if they do not match.
2021-05-07 19:20:30 +02:00
gambas
1beaf47ca7 Merge branch 'master' of gitlab.com:gambas/gambas 2021-04-03 13:15:10 +02:00
gambas
41cb5cbfe0 Use a lock file to prevent background task output on standard error from mixing.
[COMPILER]
* BUG: Use a lock file to prevent background task output on standard error from mixing.
2021-04-03 12:45:19 +02:00
Laurent Carlier
82fbda28e8
Detect git/svn version with a macro instead of creating a header file 2021-03-31 09:26:49 +02:00
gambas
98fffa60a1 When compiling forms, errors at the end of the class file are not associated with the form anymore.
[COMPILER]
* BUG: When compiling forms, errors at the end of the class file are not associated with the form anymore.
2021-03-25 01:14:37 +01:00
gambas
fd7160b617 Allow ON ... GOTO / GOSUB to span on multiple lines.
[COMPILER]
* NEW: Allow ON ... GOTO / GOSUB to span on multiple lines.
2021-03-06 13:17:35 +01:00
gambas
69623f1eea Fix how highlighting deals with spaces.
[GB.EVAL]
* BUG: Fix how highlighting deals with spaces.
2021-02-15 03:20:41 +01:00