Commit graph

68 commits

Author SHA1 Message Date
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
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
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
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
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
f7c783f536 Add a '-j' option to run multiple jobs in background to speed-up compilation.
[COMPILER]
* OPT: Add a '-j' option to run multiple jobs in background to speed-up compilation.
2021-01-30 14:06:09 +01:00
gambas
68af5ed6c4 Remove now useless structure fields.
[COMPILER]
* OPT: Remove now useless structure fields.
2020-06-11 01:44:23 +02:00
gambas
ac5068e9c2 Automatically add 'gb.test' component information when a project includes a test module.
[COMPILER]
* BUG: Automatically add 'gb.test' component information when a project includes a test module.
2020-05-09 20:55:04 +02:00
gambas
b09ab39338 Function names can be put between parenthesis to disable possible warnings on them.
[COMPILER]
* NEW: Function names can be put between parenthesis to disable possible warnings on them.
2019-12-22 20:48:58 +01:00
gambas
b7f2918fbd Correctly generate metadata file for events so that there is no spurious ByRef arguments anymore.
[COMPILER]
* BUG: Correctly generate metadata file for events so that there is no spurious ByRef arguments anymore.
2019-10-08 09:12:12 +02:00
gambas
225f2833da Fix again the management of the new new PROPERTY ... USE syntax.
[COMPILER]
* NEW: Don't emit debugging information for generated functions, but emit void sections for backward compatibility.
* NEW: Don't emit source file path in the debugging information.
2019-09-12 03:23:38 +02:00
gambas
133fd6e2d9 Fix again some crash when using the new PROPERTY ... USE syntax.
[COMPILER]
* BUG: Fix again some crash when using the new PROPERTY ... USE syntax.
2019-09-11 19:50:19 +02:00
gambas
51a9a1035d Fix crash when using the new PROPERTY ... USE syntax.
[COMPILER]
* BUG: Fix crash when using the new PROPERTY ... USE syntax.
2019-09-11 19:38:04 +02:00
gambas
a3b14f765b Fix the declaration of static properties using USE.
[COMPILER]
* BUG: Fix the declaration of static properties using USE.
2019-09-05 23:31:19 +02:00
gambas
abf4dfb110 PROPERTY...USE... is a new syntax to declare a property automatically associated with a private global variable.
[COMPILER]
* NEW: PROPERTY...USE... is a new syntax to declare a property automatically associated with a private global variable.
2019-08-22 03:13:58 +02:00
gambas
9f2da35cbe Emit column position in almost all error messages.
[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.
2019-05-08 06:20:35 +02:00
gambas
4f72989680 Unused function warnings now point at the beginning of the function.
[COMPILER]
* BUG: Unused function warnings now point at the beginning of the function.
2019-02-08 23:07:47 +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
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
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
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
58ddc650ad Try to add some more static datatype analysis, but did not succed.
[COMPILER]
* NEW: Try to add some more static datatype analysis, but did not succed.
2018-03-03 03:14:11 +01:00
gambas
a2099dea77 Fix a warning message typo.
[COMPILER]
* BUG: Fix a warning message typo.
2018-02-14 17:07:06 +01:00
gambas
d1f6bc62c4 Add a warning for uninitialized local and private global variables.
[COMPILER]
* NEW: Add a warning for uninitialized local and private global variables.
2018-02-14 17:03:14 +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
Benoît Minisini
b225eba20f [CONFIGURATION]
* NEW: Update copyright year in all source files.


git-svn-id: svn://localhost/gambas/trunk@8056 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-01-13 03:29:42 +00:00
Benoît Minisini
2599961aca [DEVELOPMENT ENVIRONMENT]
* NEW: Get rid of the new warnings.
* NEW: Support for arguments without a datatype in function signatures.
* NEW: [ALT] + any brace character is a new editor shrotcut that add or 
  remove braces around the current word. Same thing for [ALT] + [<] or [>].
* NEW: Property editor: Add a clear button. Replace the MenuButton by a
  normal ComboBox.

[INTERPRETER]
* NEW: Support for the new '*.list' file format.

[COMPILER]
* NEW: New '*.list' file format that marks classes having static elements.
* NEW: A warning is emitted when a class having static elements is 
  overriden by a declaration. This is suspicious.
* NEW: A symbol in a local variable declaration, or a global variable or 
  property declaration can now be surrounded by braces to prevent a 
  possible warning.

[GB.FORM]
* NEW: Get rid of the new warnings.
* NEW: TabPanel[].Closable is a new property that defines if a specific tab
  has a close button.

[GB.FORM.MDI]
* NEW: Workspace: Try to minimize flickering during resizing. Not very
  successful.


git-svn-id: svn://localhost/gambas/trunk@6838 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-01-16 00:31:59 +00:00
Benoît Minisini
5b930daea7 [INTERPRETER]
* NEW: Support for the new USE instruction.

[COMPILER]
* NEW: A class header now can include USE "xxxx" declarations, where "xxxx"
  is a component name. It means that the specified component will be loaded
  when the class is initialized, the first time it is loaded.


git-svn-id: svn://localhost/gambas/trunk@6648 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2014-11-12 22:25:37 +00:00
Benoît Minisini
c9ca5ab982 [CONFIGURATION]
* NEW: Update copyright year to 2013.

[GB.FORM]
* NEW: ImageView is a new control that allows to view an image inside a 
  scrolled view, at different zoom levels.
* BUG: FileProperties now works correctly if 'gb.desktop' is not used.
* NEW: The FileProperties preview tab now uses an ImageView control and has
  a toolbar to zoom the preview.
* BUG: Add the 'linux' and 'gnu' icon in the stock icon list.


git-svn-id: svn://localhost/gambas/trunk@5770 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2013-08-03 15:38:01 +00:00
Benoît Minisini
a7855016ca [DEVELOPMENT ENVIRONMENT]
* NEW: "Compress all" and "Uncompress all" action on project sub-
  directories.
* BUG: Do not crash when checking for completion in text editor.

[INTERPRETER]
* BUG: Void string contants work correctly now.

[COMPILER]
* BUG: Functions now can have up to 65536 bytecode operations instead of
  32768.
* NEW: Support for the Parent property of WebPage.
* NEW: WebPage markups attributes can use the <%...%> syntax.

[GB.EVAL.HIGHLIGHT]
* NEW: HTML highlighting has be rewritten. <%...%> markups are taken into
  account inside <style> and <script> markups.

[GB.FORM]
* NEW: FileView and DirView now display hidden files lightly, and symbolic
  links in italic.
* NEW: File properties dialog in FileChooser and DirChooser.

[GB.FORM.STOCK]
* NEW: Default icons for some mime types.

[GB.GTK]
* BUG: Menu click event is now triggered the same way as in gb.qt4.
* BUG: Control.HasFocus() works correctly now.
* BUG: Modal windows cannot be shrinked less then their initial size 
  anymore.

[GB.GUI.BASE]
* NEW: IconView, TreeView, ListView and ColumnView items now have a 
  RichText property.

[GB.WEB]
* NEW: WebPage.Parent property returns the parent webpage that includes the
  current webpage with the <<...>> markup.



git-svn-id: svn://localhost/gambas/trunk@5623 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2013-04-29 21:27:11 +00:00
Benoît Minisini
ca7856bf80 [INTERPRETER]
* NEW: Clean up allocation macros.

{GB.EVAL.HIGHLIGHT]
* NEW: Add 'transition' to the CSS keywords.


git-svn-id: svn://localhost/gambas/trunk@5599 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2013-03-29 23:33:01 +00:00
Benoît Minisini
53d4d9c752 [INTERPRETER]
* BUG: Fixes of bugs detected by Coverity Scan.
* BUG: Process output is correctly flushed at process exit now.

[COMPILER]
* BUG: Fixes of bugs detected by Coverity Scan.

[ARCHIVER]
* BUG: Fixes of bugs detected by Coverity Scan.

[INFORMER]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.COMPRESS]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.DEBUG]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.EVAL]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.IMAGE]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.IMAGE.EFFECT]
* BUG: Fixes of bugs detected by Coverity Scan.

[GB.VB]
* BUG: Fixes of bugs detected by Coverity Scan.


git-svn-id: svn://localhost/gambas/trunk@5493 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2013-01-06 16:13:31 +00:00
Benoît Minisini
c61a906431 [DEVELOPMENT ENVIROMNENT]
* BUG: Do 'svn cleanup' in the parent directory of the project.

[COMPILER]
* BUG: Do not emit inaccurate line number information for forms and global
  variables with no initialization.

[INTERPRETER]
* BUG: When creating the process temporary directory, check the permissions
  of both the top directory (gambas.<userid>) and the process directory 
  inside.


git-svn-id: svn://localhost/gambas/trunk@5461 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-12-22 00:23:51 +00:00
Benoît Minisini
643ef0c03c [COMPILER]
* BUG: Remove debugging messages.


git-svn-id: svn://localhost/gambas/trunk@5453 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-12-19 21:58:47 +00:00
Benoît Minisini
ca59b5880f [COMPILER]
* NEW: Emit line positions in debugging information for global 
  initializations.


git-svn-id: svn://localhost/gambas/trunk@5452 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-12-19 21:55:16 +00:00
Benoît Minisini
f131eb6060 [COMPILER]
* BUG: Prevent self-inheritance.


git-svn-id: svn://localhost/gambas/trunk@5394 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-11-29 11:41:42 +00:00
Benoît Minisini
28c9d6d59b [COMPILER]
* NEW: Make one warning for each symbol kind that is overridden.

[GB.DB.FORM]
* BUG: Fix warnings.

[GB.DESKTOP]
* BUG: Fix some warnings.

[GB.EVAL.HIGHLIGHT]
* BUG: Correctly rewrite the following keywords with no spurious space 
  after: TRUE, FALSE, NULL, +INF, -INF.

[GB.FORM]
* BUG: Fix warnings.

[GB.FORM.MDI]
* BUG: Fix warnings.

[GB.WEB]
* BUG: Fix warnings.


git-svn-id: svn://localhost/gambas/trunk@5125 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-09-04 23:11:11 +00:00
Benoît Minisini
0026fb1489 [DEVELOPMENT ENVIRONMENT]
* NEW: Support for compiler warnings.
* BUG: Fix all detected warnings.

[COMPILER]
* NEW: A new compiler option '-w' to let it emit warnings.
* NEW: Emit warnings for unused variables, arguments, functions and for 
  local symbols that override global symbols. Public symbols are of course 
  not taken into account.
* NEW: If an argument is surrounded by braces, no warning will be emitted
  if the argument is not used.

[GB.EVAL]
* NEW: OPTIONAL keyword is always followed by a space now when rewriting 
  Gambas code.


git-svn-id: svn://localhost/gambas/trunk@5122 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-09-04 07:29:39 +00:00
Benoît Minisini
9478faa8d7 [COMPILER]
* BUG: Last change was not a good idea. Local variables should be able to 
  override global variables. When the compiler will be able to emit 
  warnings, that could make a good warning of course...


git-svn-id: svn://localhost/gambas/trunk@5115 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-09-02 00:38:34 +00:00
Benoît Minisini
5d2a8b172e [COMPILER]
* BUG: Prevent local variables from hiding global variables.


git-svn-id: svn://localhost/gambas/trunk@5114 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-09-02 00:20:29 +00:00
Benoît Minisini
a865d9e227 [INTERPRETER]
* NEW: Support for variable number of arguments in extern functions.
* BUG: Fix use of static classes as extern function argument.

[COMPILER]
* NEW: Support for variable number of arguments in extern functions.

[GB.JIT]
* BUG: The GB_JIT environment variable has really no effect if it is 
  defined but a null string.


git-svn-id: svn://localhost/gambas/trunk@4796 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-06-01 00:18:38 +00:00
Benoît Minisini
326c380ff6 [DEVELOPMENT ENVIRONMENT]
* NEW: Handle the FAST keyword in function declaration.

[COMPILER]
* NEW: Each function can be declared individually FAST. The keyword must be
  the first one on the line.

[GB.EVAL]
* NEW: Handle the FAST keyword in function declaration.


git-svn-id: svn://localhost/gambas/trunk@4769 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-05-24 12:05:21 +00:00
Benoît Minisini
0309f98b60 [DEVELOPMENT ENVIRONMENT]
* NEW: Take property synonymous into account.
* BUG: Pasting text as comments correctly converts tabulations into spaces.

[INTERPRETER]
* NEW: GB.RaiseBegin() and GB.RaiseEnd() are two new intepreter APIs that 
  allow to define a callback that will be called if an exception is raised
  during a call to GB.Raise().
* BUG: CATCH and FINALLY correctly restore the stack pointer. Without that,
  it is possible to use more stack than possible and to crash the 
  interpreter.

[COMPILER]
* NEW: A property now can has up to four different names. The syntax is:
  "Property Name [ , Synonymous1, ..., Synonymous3 ] As Datatype".

[GB.DB]
* BUG: Table.Type property now correctly handle null table types.

[GB.DB.FORM]
* NEW: DataBrowser.Grid is a new property to define the grid visibility.
* BUG: The DataBrowser and DataView controls have been fixed. There is only 
  one problem to fix that depends on a gb.gtk bug.

[GB.DRAW]
* BUG: Setting Draw.Font to NULL does not crash anymore, and raise an error
  instead.

[GB.FORM]
* NEW: The new GridView is finished and replaces the old one now.
* NEW: GridView.ShowCursor is a new property that displays a light cursor 
  around the current cell when set.

[GB.GTK]
* NEW: Font.Copy() is a new method to copy a font object.
* NEW: GTK+ GridView has been disabled.
* NEW: The Container Insert event has been renamed as NewChild.

[GB.QT4]
* NEW: Font.Copy() is a new method to copy a font object.
* NEW: Qt4 GridView has been disabled.
* NEW: The Container Insert event has been renamed as NewChild.
* BUG: If the DrawingArea Draw event handler raises an error, then the 
  interpreter should not crash anymore.

[GB.QT4.EXT]
* BUG: Fix an uninitialized field in Editor internal GLine class.


git-svn-id: svn://localhost/gambas/trunk@4503 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2012-02-25 01:35:55 +00:00
Benoît Minisini
dd3b512daf [CONFIGURATION]
* NEW: Update copyrights.


git-svn-id: svn://localhost/gambas/trunk@4384 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2011-12-31 02:39:20 +00:00
Benoît Minisini
2fbf67cb29 [CONFIGURATION]
* NEW: Update FSF address in every source file.


git-svn-id: svn://localhost/gambas/trunk@3870 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2011-06-03 00:51:09 +00:00
Benoît Minisini
b936c83f0d [CONFIGURATION]
* NEW: Update copyright strings.

[DEVELOPMENT ENVIRONMENT]
* NEW: Display menu shortcuts inside the form editor.


git-svn-id: svn://localhost/gambas/trunk@3670 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2011-03-21 00:04:10 +00:00
Benoît Minisini
b0a0c52af0 [INTERPRETER]
* NEW: More work on structure support.
* BUG: Fix optimization in error management.

[COMPILER]
* OPT: More optimizations. The Gambas 3 compiler is faster to compile the 
  Gambas 3 IDE than the Gambas 2 compiler to compile the Gambas 2 IDE, 
  which is smaller!
* NEW: Do not compute variable position and size, as it is done by the 
  interpreter anyway.

[GB.EVAL]
* NEW: Use the same optimizations as the compiler in the parser.

[GB.XML.RPC]
* BUG: The component compiles again.



git-svn-id: svn://localhost/gambas/trunk@2964 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2010-05-25 11:19:00 +00:00
Benoît Minisini
117f2ac635 [INTERPRETER]
* NEW: New GB.NewZeroString() API to create a Gambas string from a 
  null-terminated string. Components were modified to use it.
* OPT: Many optimizations everywhere.

[COMPILER]
* OPT: Many optimizations. The compiler should be noticeably faster.


git-svn-id: svn://localhost/gambas/trunk@2953 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2010-05-22 18:02:34 +00:00