Commit graph

1284 commits

Author SHA1 Message Date
gambas
b257119380 String.Code() now returns -1 on incorrect UTF-8 string.
[INTERPRETER]
* BUG: String.Code() now returns -1 on incorrect UTF-8 string.
2019-03-04 01:35:33 +01:00
gambas
fd7ae28ac9 File.RealPath() is a new statis method that returns the the canonicalized absolute pathname of path, with no symbolic links inside.
[INTERPRETER]
* NEW: File.RealPath() is a new statis method that returns the the canonicalized absolute pathname of path, with no symbolic links inside.
2019-02-28 02:57:25 +01:00
gambas
3cd80f118d Allocate custom language environment variables statically, because environment is accessed by shared library exit routines, after the interpreter memory allocations have been freed.
[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.
2019-02-26 20:59:03 +01:00
gambas
b4a8adf222 Fix string to floating point conversion routine.
[INTERPRETER]
* BUG: Fix string to floating point conversion routine.
2019-02-16 02:00:17 +01:00
gambas
c0eab6b4c4 Don't crash if a component use NULL as error message argument. Replace it by a void string.
[INTERPRETER]
* BUG: Don't crash if a component use NULL as error message argument. Replace it by a void string.
2019-02-06 23:23:18 +01:00
gambas
69d864f1d4 Ignore trailing zeros in the decimal part of floating point number constants.
[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.
2019-01-16 04:32:44 +01:00
gambas
b97b82133a Make the "./" path equivalent to "." as before, and not a prefix for a component with a null name.
[INTERPRETER]
* BUG: Make the "./" path equivalent to "." as before, and not a prefix for a component with a null name.
2019-01-11 16:02:02 +01:00
gambas
ced4594599 Take care of components that modifiy the 'environ' variable. Using 'gb.httpd' does not crash anymore.
[INTERPRETER]
* BUG: Take care of components that modifiy the 'environ' variable. Using 'gb.httpd' does not crash anymore.
2019-01-11 15:23:50 +01:00
gambas
634b5c4168 Really fix the loop optimization.
[INTERPRETER]
* BUG: Really fix the loop optimization.
2019-01-11 01:14:42 +01:00
gambas
dd551e9bc5 Fix loop optimization that didn't work on loops calling themselves recursively.
[INTERPRETER]
* BUG: Fix loop optimization that didn't work on loops calling themselves recursively.
2019-01-11 01:11:46 +01:00
gambas
628aa30e54 Take the other requested GUI components into account to choose the toolkit.
[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.
2019-01-05 03:57:08 +01:00
gambas
0266ca1f15 InStr() and RInstr() work correctly again when case is ignored and pattern length is at least two characters.
[INTERPRETER]
* BUG: InStr() and RInstr() work correctly again when case is ignored and pattern length is at least two characters.
2019-01-03 19:58:17 +01:00
gambas
bfc88545c8 Correctly clear observer reference on the observed object when it is freed.
[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.
2018-12-24 17:57:36 +01:00
gambas
87f88ac88b Fix Debug instruction.
[INTERPRETER]
* BUG: Fix Debug instruction.
2018-12-21 22:40:47 +01:00
gambas
fc41ff0b23 Assertion errors are now really not catchable anymore.
[INTERPRETER]
* BUG: Assertion errors are now really not catchable anymore.
2018-12-21 03:05:32 +01:00
gambas
c2c18510e1 Assertion errors are now not catchable anymore. They always stop the program.
[INTERPRETER]
* BUG: Assertion errors are now not catchable anymore. They always stop the program.
2018-12-21 00:47:34 +01:00
gambas
d91451cf1e Assert is an new instruction that raises an error as soon as its boolean argument is FALSE.
[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.
2018-12-16 00:35:46 +01:00
gambas
a1f96a549c Allow loop variables to be declared inside the loop syntax.
[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.
2018-12-13 13:15:33 +01:00
gambas
df275f7c9b 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).
[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.
2018-12-07 01:03:47 +01:00
gambas
b4d3c7612a Really correctly initialize EC register to NULL before calling a compiled fast method.
[INTERPRETER]
* BUG: Really correctly initialize EC register to NULL before calling a compiled fast method.
2018-11-29 09:10:56 +01:00
gambas
3652b82b3e Let the caller always release the function arguments.
[GB.JIT]
* BUG: Let the caller always release the function arguments.
2018-11-27 02:59:21 +01:00
gambas
baaf962ab0 JIT now handles "no return value" errors correctly.
[INTERPRETER]
* BUG: Process.Wait() now handles error output correctly.

[GB.JIT]
* BUG: Display compiler error correctly.
* BUG: Handle "no return value" errors correctly.
2018-11-24 20:00:45 +01:00
gambas
55d9d0aa2d Integer constants are correctly handled on little endian systems (arm, powerpc64...).
[INTERPRETER]
* BUG: Integer constants are correctly handled on little endian systems (arm, powerpc64...).
2018-11-20 23:11:13 +01:00
gambas
9726b53bb3 Add First and Last read-write properties to arrays.
[INTERPRETER]
* NEW: Add First and Last read-write properties to arrays.
2018-11-09 00:06:20 +01:00
gambas
ecf3410e99 Fix a crash in exception management.
[INTERPRETER]
* BUG: Fix a crash in exception management.
2018-11-07 17:21:38 +01:00
gambas
31901d72c9 Fix the LANGUAGE environment variable at startup, and add hebrew to the list of right-to-left written languages
[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.
2018-11-06 18:11:51 +01:00
gambas
dcac5c2a26 Handle TRY inside JIT functions correctly.
[INTERPRETER]
* BUG: Handle TRY inside JIT functions correctly.

[GB.DEBUG]
* NEW: Add explicit messages when something fails during initialization.

[GB.JIT]
* BUG: Handle TRY correctly.
2018-11-02 21:44:40 +01:00
gambas
615ff675d2 Calling a jit function now correctly checks the number of arguments.
[INTERPRETER]
* BUG: Calling a jit function now correctly checks the number of arguments.
* BUG: Fix a panic message.
2018-10-31 01:56:35 +01:00
gambas
9aa856c3a6 Do not use __DATE__ and __TIME__ macros, they prevent reproducible builds.
[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.
2018-10-26 03:05:02 +02:00
bgermann
a0e95cc0b8 Spelling: catched -> caught 2018-10-14 21:52:07 +02:00
gambas
ad8ea52b64 Don't crash after a buffered file failed to close.
[INTERPRETER]
* BUG: Don't crash after a buffered file failed to close.
2018-10-11 12:30:45 +02:00
gambas
31929e1e44 Overriding public variables is forbidden, and JIT compiler correctly handles public constants.
[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.
2018-10-08 16:36:38 +02:00
gambas
1f29f16e32 Fix information about native classes.
[INTERPRETER]
* BUG: Fix information about native classes.
2018-09-23 22:02:56 +02:00
gambas
737b77c387 String value can be used like object.
[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.
2018-09-23 09:15:29 +02:00
Benoît Minisini
a79edf23ed Merge branch 'bsd' into 'master'
More BSD changes

See merge request gambas/gambas!38
2018-09-21 22:55:31 +00:00
gambas
6ad1333324 Fix String.InStr() and String.RInstr() in ignore case mode, when the starting position is not specified.
[INTERPRETER]
* BUG: Fix String.InStr() and String.RInstr() in ignore case mode, when the starting position is not specified.
2018-09-14 19:17:56 +02:00
gambas
12c0ebda46 String.InStr() starting position is correctly taken into account now.
[INTERPRETER]
* BUG: String.InStr() starting position is correctly taken into account now.
2018-09-12 13:39:05 +02:00
gambas
88220d483b Let the interpreter correctly manage exceptions when calling non-JIT code from JIT code.
[INTERPRETER]
* BUG: JIT: Let the interpreter correctly manage exceptions when calling non-JIT code from JIT code.

[GB.JIT]
* BUG: Correctly initialize CP during exception handler.
2018-09-10 20:11:59 +02:00
bgermann
6e2a9d458f Unify BSD ifdefs 2018-09-09 18:26:38 +02:00
Benoît Minisini
ce37927180 Merge branch 'netbsd' into 'master'
Improve NetBSD support

See merge request gambas/gambas!37
2018-09-01 10:28:18 +00:00
gambas
2374407b4d [DEVELOPMENT ENVIRONMENT]
* 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.
2018-09-01 00:46:48 +02:00
gambas
a73c2ed412 Add three new color constants for syntax highlighting: Escape, Label and Constant.
[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.
2018-08-31 15:58:53 +02:00
bgermann
1b7abb97b7 Correct 3e6d9696 2018-08-30 14:07:18 +02:00
bgermann
3e6d969613 Change enum prefix that collides with statvfs 2018-08-30 13:33:13 +02:00
bgermann
b1a12236ad Convert from statfs to more portable statvfs
[INTERPRETER]
* NEW: Convert from statfs to more portable statvfs
2018-08-29 23:59:11 +02:00
bgermann
e74adab7c5 Use FreeBSD exp10() fix for all BSDs
[INTERPRETER]
* BUG: The exp10() function works on all BSDs now
2018-08-29 15:36:25 +02:00
bgermann
a3df769268 Use sys/ioctl.h instead of pty.h
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.
2018-08-29 14:29:54 +02:00
gambas
7d16436c5c Eof() now correctly works on file bigger than 4GB opened in direct mode.
[INTERPRETER]
* BUG: Eof() now correctly works on file bigger than 4GB opened in direct mode.
2018-08-27 23:57:30 +02:00
gambas
c2b2d7d624 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: 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.
2018-08-23 12:22:30 +02:00
gambas
706a605cc3 Correctly restore the stack after calling a method through the interpreter, and handle null values as object values having a null address automatically.
[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.
2018-08-22 09:30:27 +02:00
gambas
7492efcc0e Always load the class before accessing a static variable, as it may not be ready.
[INTERPRETER]
* BUG: FIx JIT class loading API.

[GB.JIT]
* BUG: Always load the class before accessing a static variable, as it may not be ready.
2018-08-18 15:28:19 +02:00
gambas
979e22f6e9 Correctly load classes from archives other than the main project one during JIT compilation.
[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.
2018-08-16 01:50:45 +02:00
gambas
0297c1bafa Load classes without running the _init method, so that the JIT behaviour is closer to the interpreter behaviour.
[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.
2018-08-14 16:46:55 +02:00
gambas
0975e520db JIT: Handle function datatype by raising a type mismatch error.
[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.
2018-08-11 14:06:46 +02:00
gambas
aa33e0ddad Add a '-j' option to the interpreter that disable the JIT compiler.
[INTERPRETER]
* NEW: Add a '-j' option to the interpreter that disable the JIT compiler.
2018-08-11 07:53:02 +02:00
gambas
28b52f2de0 Val() correctly reads thousand separators again.
[INTERPRETER]
* BUG: Val() correctly reads thousand separators again.
2018-08-10 23:37:55 +02:00
gambas
4e83422f20 Fix optional arguments management.
[INTERPRETER]
* NEW: Fix panic error message again.

[GB.JIT]
* BUG: Fix optional arguments management.
2018-08-10 14:22:49 +02:00
gambas
4209cffa11 [INTERPRETER]
* 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.
2018-08-10 13:26:54 +02:00
gambas
f5b1c1c03b Format$ now prints the expected number of decimal digits when using exponential format.
[INTERPRETER]
* BUG: Format$ now prints the expected number of decimal digits when using exponential format.
2018-08-10 11:49:12 +02:00
gambas
7b501542a1 Fix thousand separators again.
[INTERPRETER]
* BUG: Fix thousand separators again.
2018-08-09 15:47:29 +02:00
gambas
acf401ba2d Correctly reset the stack pointer when releasing the stack in error handlers.
[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.
2018-08-09 11:05:51 +02:00
gambas
bb34431646 Fix a crash in JIT relative to SUPER management.
[INTERPRETER]
* BUG: Clear the 'super' field of the object value returned by NEW.

[GB.JIT]
* BUG: Correctly reset EXEC_super in error catching.
2018-08-06 13:26:49 +02:00
gambas
609ef351f8 The interpreter does not crash anymore when using standard streams at the end of the program whereas they have been already freed.
[INTERPRETER]
* BUG: The interpreter does not crash anymore when using standard streams at the end of the program whereas they have been already freed.
2018-07-17 15:33:11 +02:00
gambas
e04ec717c7 JIT: Structures and static arrays have been implemented.
[INTERPRETER]
* NEW: JIT: Support for structures and static arrays.

[GB.JIT]
* NEW: Structures and static arrays have been implemented.
2018-07-07 14:54:23 +02:00
gambas
d3c93a05e4 Work on new JIT system continues.
[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.
2018-07-05 07:10:31 +02:00
gambas
4a1c81d0aa Jit.Time is a new property that returns the time spent in JIT compilation, in seconds.
[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.
2018-07-03 00:52:19 +02:00
gambas
9cf443a04f [INTERPRETER]
* BUG: Take JIT code into account when displaying current position in DEBUG instruction.

[COMPILER]
* BUG: Fix subroutine metadata.
* BUG: Fix subroutine search function.

[GB.JIT]
* BUG: Fix string referencing.
* NEW: Implement date arrays accessors.
* BUG: Fix error management.
* BUG: Fix mathematic functions implementation.
* NEW: Support of functions with a variable number of arguments.
* BUG: Fix support of Long constants.
* BUG: Fix implementation of Collection array operator.
* BUG: Fix READ, EXEC, SHELL and DEBUG instructions.
* BUG: Fix VarPtr().
* BUG: Fix TRUE constant implementation.
2018-07-02 19:37:37 +02:00
gambas
5f4f12acf3 [COMPILER]
* 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.
2018-06-29 00:10:31 +02:00
gambas
fe08dfa333 Work continues on new JIT system.
[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.
2018-06-27 19:35:23 +02:00
gambas
ab3963c99c Fix some bugs detected by clang, and JIT code can now raise events.
[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.
2018-06-25 19:17:44 +02:00
gambas
06d139920d Work continues on new JIT system.
[INTERPRETER]
* BUG: JIT: No need to support breakpoints.

[GB.JIT]
* BUG: No need to support breakpoints.
2018-06-23 01:37:06 +02:00
gambas
128b5de2f2 [INTERPRETER]
* NEW: JIT: Support for QUIT and STOP EVENT instructions.

[GB.JIT]
* NEW: Implement QUIT and STOP EVENT instructions.
2018-06-23 01:31:39 +02:00
gambas
6502645560 Work continues on new JIT system.
[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.
2018-06-22 04:49:05 +02:00
gambas
3bd9dca142 Work on new JIT system continues.
[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.
2018-06-19 00:30:12 +02:00
gambas
4ef9c15a1b Support for CATCH and FINALLY.
[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.
2018-06-16 01:12:13 +02:00
gambas
b9a83c8a10 Work continues on new JIT system.
[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.
2018-06-14 16:45:05 +02:00
gambas
83eed9707d Merge branch 'jit-with-c' 2018-06-13 00:45:19 +02:00
gambas
431be5bcea Fix string search routine optimization and thousand separator.
[INTERPRETER]
* BUG: Fix string search routine optimization.
* BUG: Fix thousand separator.
2018-06-12 16:30:11 +02:00
gambas
c671adfd6b Work continues on new JIT system.
[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.
2018-06-11 18:56:39 +02:00
gambas
4e50dec11d Work continues on new JIT system. Translation is now done at runtime.
[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.
2018-06-09 22:42:35 +02:00
gambas
23be942b6a Work continues on the new JIT system.
[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.
2018-06-05 11:43:39 +02:00
gambas
23081e47c6 Work continues on new JIT system. The "Fractal" example runs!
[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.
2018-06-02 17:59:47 +02:00
gambas
1d276cdc68 Work continues on new JIT system.
[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.
2018-06-01 14:40:07 +02:00
gambas
714b77a10d Work on new JIT system continues.
[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.
2018-06-01 03:50:42 +02:00
gambas
5219fc48d1 Work continues on new JIT system.
[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.
2018-05-29 23:25:57 +02:00
gambas
83a2452acb Continue working on new JIT system.
[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.
2018-05-29 03:43:23 +02:00
gambas
a2b64b190a Work on new JIT system continues.
[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.
2018-05-28 03:18:44 +02:00
gambas
d797a545b6 [COMPILER]
* 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.
2018-05-26 16:50:00 +02:00
gambas
cdc6d47922 Work continues on new JIT system.
[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.
2018-05-25 21:01:38 +02:00
gambas
e2a53d4a09 't' and 'tt' date format now return the correct timezone.
[INTERPRETER]
* BUG: 't' and 'tt' date format now return the correct timezone.
2018-05-25 12:17:30 +02:00
gambas
35e9859894 Correctly fix the READ instruction without leaking memory.
[INTERPRETER]
* BUG: Correctly fix the READ instruction without leaking memory.
2018-05-24 15:09:51 +02:00
gambas
b5edf09de9 Reading a fixed number of bytes with READ does not crash anymore if an "End of file" error is raised.
[INTERPRETER]
* BUG: Reading a fixed number of bytes with READ does not crash anymore if an "End of file" error is raised.
2018-05-23 20:39:16 +02:00
gambas
dfeb4243ab Continue working on the new jit system.
[COMPILER]
* NEW: Continue working on the new jit system.
2018-05-18 02:19:28 +02:00
gambas
f39f7063ef Start working on the new jit system.
[COMPILER]
* NEW: Start working on the new jit system.

[GB.JIT]
* NEW: Rename the component as 'gb.jit.llvm'.
2018-05-17 01:13:56 +02:00
gambas
14614f4e67 Check if the "-flto" link time optimzation flag is available.
[CONFIGURATION]
* BUG: Check if the "-flto" link time optimzation flag is available.
2018-05-08 18:44:31 +02:00
gambas
43285550c6 UTF-8 string routines position cache now should behave correctly in all cases.
[INTERPRETER]
* BUG: UTF-8 string routines position cache now should behave correctly in all cases.
2018-04-20 18:26:52 +02:00
gambas
de12caa1e7 Fix conversion between dates and their local string representation.
[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.
2018-04-09 18:58:11 +02:00
gambas
f47d63100c Raise an error if a object being freed has been referenced by its '_free' special method.
[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.
2018-03-17 23:33:02 +01:00
gambas
b517994783 Years written with a initial zero digit are not converted to years between 1931 and 2030 if lower then 100.
[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.
2018-03-16 01:45:32 +01:00
gambas
d6b8c451c9 Raise a more explicit "No return value" error when trying to get the return value of a task that didn't return anything.
[INTERPRETER]
* BUG: Raise a more explicit "No return value" error when trying to get the return value of a task that didn't return anything.
2018-03-14 16:59:57 +01:00
gambas
043229a013 Result.GetAll() is a new method that returns an array of the values of a specific field from each record.
[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.
2018-03-07 22:06:02 +01:00
gambas
83e95184c1 Fix the AND, OR, and XOR operator. The AND, OR, XOR and NOT operator now can take a Date, that is converted to boolean.
[INTERPRETER]
* BUG: Fix the AND, OR, and XOR operator.
* NEW: The AND, OR, XOR and NOT operator now can take a Date, that is converted to boolean.
2018-02-28 14:05:45 +01:00
gambas
a93f5b3cc2 Writing to a stream does not crash anymore if the stream is closed while the data is sent in several shots.
[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.
2018-02-23 04:01:56 +01:00
gambas
6f06d516b3 Deleting a collection item while the collection is enumerated does not crash anymore.
[INTERPRETER]
* BUG: Deleting a collection item while the collection is enumerated does not crash anymore.
2018-02-20 23:00:17 +01:00
gambas
5487a3ca88 Fix a possible memory leak when using the Stream.End() method.
[INTERPRETER]
* BUG: Fix a possible memory leak when using the Stream.End() method.
2018-02-17 23:16:28 +01:00
gambas
3c8c5a2243 Fix an uninitialized flag in streams, that make watching real files from reading incorrectly raise the Read event.
[INTERPRETER]
* BUG: Fix an uninitialized flag in streams, that make watching real files from reading incorrectly raise the Read event.
2018-02-16 02:39:30 +01:00
gambas
76c314a0e6 Class.IsLoaded() is a new static method that returns if a specific class is loaded.
[INTERPRETER]
* NEW: Class.IsLoaded() is a new static method that returns if a specific class is loaded.
2018-02-14 17:41:31 +01:00
gambas
ab89976564 Don't crash when building a collection with the bracket operator if one of the value is a class.
[INTERPRETER]
* BUG: Don't crash when building a collection with the bracket operator if one of the value is a class.
2018-02-12 23:45:27 +01:00
gambas
09a0573e61 Replace my old sourceforge mail address by the new one.
[CONFIGURATION]
Replace my old sourceforge mail address by the new one.
2018-02-12 02:53:46 +01:00
gambas
17834b13a6 Don't call QUIT when terminating a task, it crashes. Just clean up the temporary directory and exit.
[INTERPRETER]
* BUG: Don't call QUIT when terminating a task, it crashes. Just clean up the temporary directory and exit.
2018-01-28 17:57:13 +01:00
gambas
477116942d Tasks do not print memory and objects clean up warnings anymore, and their output serialization file is now automatically destroyed.
[INTERPRETER]
* BUG: Remove the task output serialization file when it is freed.
* BUG: Tasks do not print memory and objects clean up warnings anymore.
2018-01-20 16:43:13 +01:00
gambas
dc9bdcfc87 When a task terminates, it now internally calls the QUIT instruction, so that everything is cleaned up.
[INTERPRETER]
* BUG: When a task terminates, it now internally calls the QUIT instruction, so that everything is cleaned up.
2018-01-19 01:56:13 +01:00
gambas
e3f941c7e2 Use a dedicated stream for locks, and ignore Application.Busy when displaying a message box.
[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.
2017-12-18 13:02:39 +01:00
gambas
2bb28545a5 LOCK instruction now can be used on existing files without clearing them.
[INTEPRRETER]
* NEW: LOCK instruction now can be used on existing files without clearing them.
2017-12-17 21:21:29 +01:00
gambas
dfb179b549 Component.Version now returns the full version of libraries.
[INTERPRETER]
* NEW: Component.Version now returns the full version of libraries.
2017-11-25 06:02:46 +01:00
gambas
8bf14d2a7e New properties for knowing if a component is a user library, and for getting its version.
[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.
2017-11-25 05:40:12 +01:00
gambas
9519c3dc52 Implement string comparison based on MATCH operator with the gb.Match constant.
[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.
2017-10-21 01:19:27 +02:00
gambas
b8bb7e60c1 Fix internal renaming of overridden classes, and use the '^' character instead of '>' to name them.
[INTERPRETER]
* BUG: Fix internal renaming of overridden classes, and use the '^' character instead of '>' to name them.
2017-10-12 13:48:52 +02:00
gambas
e6495bcc5b READ instruction with a negtive length argument works correctly again.
[INTERPRETER]
* BUG: READ instruction with a negtive length argument works correctly again.
2017-10-10 18:49:15 +02:00
gambas
55a1701759 Correctly attach newly created objects.
[INTERPRETER]
* BUG: Correctly attach newly created objects.
* BUG: Lof() should work correctly now on streams having a specific implementation of Lof() function.
2017-10-05 23:18:19 +02:00
gambas
6018b475b6 Oct$() is a new functions that converts an integer to its octal representation.
[COMPILER]
* NEW: Oct$() is a new functions that converts an integer to its octal representation.

[INTERPRETER]
* NEW: Oct$() is a new functions that converts an integer to its octal representation.
2017-10-05 04:11:00 +02:00
gambas
12d51ca863 New syntax for octal numbers: "&Oxxx".
[COMPILER]
* NEW: New syntax for octal numbers: "&Oxxx".

[INTERPRETER]
* NEW: New syntax for octal numbers: "&Oxxx".

[GB.EVAL]
* NEW: New syntax for octal numbers: "&Oxxx".
2017-10-05 03:17:13 +02:00
gambas
57820e6d44 Val() and Eval() now correctly read binary and hexadecimal numbers with the maximum number of digits.
[INTERPRETER]
* BUG: Val() and Eval() now correctly read binary and hexadecimal numbers with the maximum number of digits.
2017-10-05 03:01:44 +02:00
Benoît Minisini
86f8104bd4 Merge branch 'rework-stream-interface' into 'master'
Rework the interpreter stream management

See merge request gambas/gambas!15
2017-09-30 18:43:25 +00:00
gambas
6cdcb477fc Array construction operator now accepts class names as Variants.
[INTERPRETER]
* BUG: Array construction operator now accepts class names as Variants.
2017-09-29 04:14:08 +02:00
gambas
2953ea8d85 Fix error management that could lead to other potential crashes.
[INTERPRETER]
* BUG: Fix error management that could lead to other potential crashes.
2017-09-28 02:05:43 +02:00
gambas
8a30ff0ec3 Fix a crash when an error occurs inside a constructor that is called from another constructor.
[INTERPRETER]
* BUG: Fix a crash when an error occurs inside a constructor that is called from another constructor.
2017-09-28 01:20:35 +02:00
gambas
b17c977502 Fix internal stream buffer management, and STREAM_read_max() function.
[INTERPRETER]
* BUG: Fix internal stream buffer management, and STREAM_read_max() function.
2017-09-27 14:15:23 +02:00
gambas
aa67ba1309 Rework the stream interface, so that the stream read & write methods just have to actually read or write the data.
[INTERPRETER]
* NEW: Rework the stream interface, so that the stream read & write methods just have to actually read or write the data.
2017-09-27 02:48:00 +02:00
gambas
a489f435e7 gb.notify: don't crash anymore when releasing watches.
[INTERPRETER]
* NEW: Add an API that returns the first element of a hash table.

[GB.NOTIFY]
* BUG: Don't crash anymore when releasing watches.
2017-09-21 18:15:37 +02:00
gambas
82c94e87a4 Dir() does not loop indefinitely anymore when browsing an archive file with a void pattern.
[INTERPRETER]
* BUG: Dir() does not loop indefinitely anymore when browsing an archive file with a void pattern.
2017-09-09 01:31:57 +02:00
gambas
7d6cf08a4b Some fixes in Format$() function.
[INTERPRETER]
* BUG: Translate comments in english.
* BUG: Take '\' escape character into account correctly in format strings.
* BUG: Remove undocumented feature in format strings.
2017-08-30 20:40:17 +02:00
gambas
21bf519dc9 Don't use CLOCK_MONOTONIC_RAW if the constant is not defined.
[INTERPRETER]
* BUG: Don't use CLOCK_MONOTONIC_RAW if the constant is not defined.
2017-08-28 22:08:48 +02:00
gambas
f8358c6fa1 Initialize pseudo-terminal with ICRNL too.
[INTERPRETER]
* BUG: Initialize pseudo-terminal with ICRNL too.
2017-08-28 19:04:25 +02:00
gambas
359471cc30 Initialize master terminal of processes run inside a pseudo-terminal before forking.
[INTEPRETER]
* NEW: Initialize master terminal of processes run inside a pseudo-terminal before forking.
2017-08-26 13:11:59 +02:00
gambas
f45192abb2 Fix pseudo-terminal management again. Now processes run through a terminal set the ECHO flag, and do not clear the OCRNL flag.
[INTERPRETER]
* NEW: Initialize pseudo-terminals with ECHO and don't clear OCRNL flag. This is not compatible with previous versions, as now, by default, printing a NL will become CR+NL through the pseudo-terminal.
  But I didn't succeed in modifying the pseudo-terminal reliably once the child has started. It sometimes fails silently.
* NEW: Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

[GB.TERM]
* NEW: Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

[GB.FORM.TERMINAL]
* OPT: TerminalView: Reorder some tests in escape codes analyze.
* NEW: TerminalView: The mouse wheel now sends up and down keys when we are not in mouse mode, and if there is nothing to scroll.
2017-08-23 18:10:58 +02:00
gambas
f05e6bc0ca Fix the TerminalView control again, and the way processes are run in pseudo-terminals.
[DEVELOPMENT ENVIRONMENT]
* BUG: Terminal: Replace "\n" by "\r\n" when sending text to the output terminal.

[INTERPRETER]
* NEW: When a process is run with a pseudo-terminal, don't set the ECHO flag, and clear the ONLCR flag.
  That way, the data printed on the standard output is the same as when the process is not run in a pseudo-terminal.

[GB.FORM.TERMINAL]
* BUG: TerminalView: Output filter now works correctly when it receives incomplete data.
* OPT: TerminalViews: Resize the terminal less often when the terminal view is resized.
* NEW: TerminalView: When a process is run inside the terminal, set the ECHO and ONLCR flags automatically.
2017-08-22 13:20:26 +02:00
gambas
ba37aa6da7 Fix pseudo-terminal initialization when running an external process with Exec or Shell.
[INTERPRETER]
* BUG: Fix pseudo-terminal initialization when running an external process with Exec or Shell.

[COMPILER]
* BUG: Fix a typo in 'gbc_trans.h' header.
2017-08-21 13:57:40 +02:00
gambas
91de2cccd5 Flush the process outputs when it stops immediately after having been launched.
[INTERPRETER]
* BUG: Flush the process outputs when it stops immediately after having been launched.
2017-08-21 01:45:59 +02:00
gambas
38a60179aa Fix Process.Wait() (remove debugging messages). 2017-08-18 13:19:10 +02:00
gambas
e1a5412f4f Fix Process.Wait()
[INTERPRETER]
* BUG: Process.Wait() does not freeze anymore when the child process actually ends before checking the end of the process just after having run it.
2017-08-18 13:15:03 +02:00
Tobias Boege
48c951987b [CONFIGURATION]
* NEW: Add (short) commit hash and branch name to gb{a,c,i,x}3 --version when compiled from git
2017-08-15 11:58:48 +02:00
Benoît Minisini
a3410b006f [INTERPRETER]
* NEW: Collection.First is a new property that returns the key of the first element of the collection, or NULL if the collection is void.
* NEW: Collection.Last is a new property that returns the key of the last element of the collection, or NULL if the collection is void.


git-svn-id: svn://localhost/gambas/trunk@8174 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-08-08 12:33:47 +00:00
Benoît Minisini
986e7eeb85 [INTERPRETER]
* NEW: Add an API that allows to create an array class before instanciating it.

[GB.DBUS]
* BUG: When marshalling from DBus to Gambas, create the array classes before instanciating them.


git-svn-id: svn://localhost/gambas/trunk@8173 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-08-07 13:51:33 +00:00
Benoît Minisini
d42a49b57d [CONFIGURATION]
* NEW: Switch version to 3.10.90.

[GB.DB]
* NEW: Connection.TimeZone is new property that will allow to define the default timezone of dates stored in the database we are connected to. Not implemented yet.


git-svn-id: svn://localhost/gambas/trunk@8168 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-07-24 18:53:33 +00:00
Benoît Minisini
5189530aaf [INTERPRETER]
* BUG: Don't raise events just after a process has been started and has just been terminated. Postpone them.


git-svn-id: svn://localhost/gambas/trunk@8142 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-06-09 23:00:45 +00:00
Benoît Minisini
cbfcb9fb00 [INTERPRETER]
* BUG: Check if linking with 'librt' is needed to get monotonic clock.


git-svn-id: svn://localhost/gambas/trunk@8139 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-05-26 12:26:39 +00:00
Benoît Minisini
cfacf387ec [CONFIGURATION]
* NEW: Add a autoconf check for monotonic clock.

[INTERPRETER]
* BUG: Use a monotonic clock (if possible) to implement the WAIT instruction.


git-svn-id: svn://localhost/gambas/trunk@8138 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-05-26 00:20:40 +00:00
Benoît Minisini
c20cbb7972 [COMPILER]
* NEW: New instruction MOVE ... DOWNTO ... that renames a file and erase the destination atomically.

[INTERPRETER]
* NEW: New instruction MOVE ... DOWNTO ... that renames a file and erase the destination atomically.
* BUG: The signal handler now loops until the signal pipe is void.


git-svn-id: svn://localhost/gambas/trunk@8129 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-04-27 13:18:35 +00:00
Benoît Minisini
1184d41881 [INTERPRETER]
* BUG: Fix a possible bad serialization of arrays.
* BUG: Don't crash during the unserialisation of an array whose datatype has been incorrectly serialized. Raise an error instead.


git-svn-id: svn://localhost/gambas/trunk@8110 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-03-18 12:14:01 +00:00