Gambas Documentation
Application Repository
Code Snippets
Compilation & Installation
Components
Controls pictures
Deprecated components
Developer Documentation
Development Environment Documentation
Documents
About The Best Formula In The World
Architecture details
Benchmarks
Books
By Reference Argument Passing
Compatibility between versions
Creating And Using Libraries
Database Datatype Mapping
Database Request Quoting
Date & time management
Dates and calendars
DBus and Gambas
Differences Between Shell And Exec
Differences From Visual Basic
Distributions & Operating Systems
Drag & Drop
DrawingArea Internal Behaviour
External functions datatype mapping
Frequently Asked Questions
Gambas Farm Server Protocol
Gambas Mailing List Netiquette
Gambas Markdown Syntax
Gambas Naming Conventions
Gambas Object Model
Gambas Scripting
Gambas Server Pages
Gambas Unit Testing
Gambas Wiki Markup Syntax
Getting Started With Gambas
Hall Of Fame
Image Management In Gambas
Including Help Comments in Source Code
Interpreter limits
Introduction
Just In Time Compiler
Just In Time Compiler (old version)
License
Localisation and Internationalization
Mailing Lists & Forums
Naming Conventions
Network Programming
ODBC Component Documentation
PCRE Pattern Syntax
Porting from Gambas 2 to Gambas 3
Previous News
Project Directory Structure
Release Notes
Gambas 2.23.0
Gambas 2.23.1
Gambas 2.24.0
Gambas 3.0.0
Gambas 3.1.0
Gambas 3.1.1
Gambas 3.2.0
Gambas 3.2.1
Gambas 3.3.0
Gambas 3.3.1
Gambas 3.3.2
Gambas 3.3.3
Gambas 3.3.4
Gambas 3.4.0
Gambas 3.4.1
Gambas 3.4.2
Gambas 3.5.0
Gambas 3.5.1
Gambas 3.5.2
Gambas 3.5.3
Gambas 3.5.4
Gambas 3.6.0
Gambas 3.6.1
Gambas 3.6.2
Gambas 3.7.0
Gambas 3.7.1
Gambas 3.8.0
Gambas 3.8.1
Gambas 3.8.2
Gambas 3.8.3
Gambas 3.8.4
Gambas 3.9.0
Gambas 3.9.1
Gambas 3.9.2
Gambas 3.10.0
Gambas 3.11.0
Gambas 3.11.1
Gambas 3.11.2
Gambas 3.11.3
Gambas 3.11.4
Gambas 3.12.0
Gambas 3.12.1
Gambas 3.12.2
Gambas 3.13.0
Gambas 3.14.0
Gambas 3.14.1
Gambas 3.14.2
Gambas 3.14.3
Gambas 3.15.0
Gambas 3.15.1
Gambas 3.15.2
Gambas 3.16.0
Gambas 3.16.1
Gambas 3.16.2
Gambas 3.16.3
Gambas 3.17.0
Gambas 3.17.1
Gambas 3.17.2
Gambas 3.17.3
Gambas 3.18.0
Gambas 3.18.1
Gambas 3.18.2
Gambas 3.18.3
Gambas 3.18.4
Gambas 3.19.0
Gambas 3.19.1
Gambas 3 RC1
Gambas 3 RC2
Gambas 3 RC3
Gambas 3 RC4
Gambas 3 RC5
Gambas 3 RC6
Gambas 3 RC7
Reporting a problem, a bug or a crash
Rich Text Syntax
Screenshots
Text highlighting definition file syntax
The Program has stopped unexpectedly by raising signal #11
Variable Naming Convention
WebPage Syntax
Web site home page
What Is Gambas?
Window & Form Management
Window Activation & Deactivation
Window Life Cycle
XML APIs
Error Messages
Gambas Playground
How To's
Language Index
Language Overviews
Last Changes
Lexicon
README
Search the wiki
To Do
Topics
Tutorials
Wiki License
Wiki Manual

Gambas 3.13.0

What's new?

This release fixes some disturbing bugs in Gambas 3.12, and add the following features:
  • Support for automatic translation in the IDE.

  • JIT compilation is now done in background, speeding up program start.

  • File.RealPath() to canonicalize a path, removing all its symbolic links.

  • Array.SortUsing() to sort an array using an order defined by another array.

  • Array.Shuffle() to randomly shuffle the contents of an array.

  • TimeBox, a new control to enter durations.

  • Enhancements to the gb.map component.

  • Enhancements to the gb.media component

Compilation and installation

Read the instructions there.

If everything was fine, type "gambas3" to run the development environment.

Enjoy it !

Changelog

CONFIGURATION

  • Do not reset CFLAGS or CXXFLAGS so one can overwrite them.

  • Now that *.mo files are automatically generated by the compiler, do not put them in the git repository.

  • Put gbh3 back into the git repository.

  • Add blurring algorithm attribution.

  • Get rid of many gcc warnings.

DEVELOPMENT ENVIRONMENT

Code editor

  • The background color of error or watch tooltips is now explicitly merged with the theme default background color.

  • The method popup font is sized according to the number of methods to display.

Code formatting

  • Format on load & save option now marks the files as modified, so that search does not become silly.

  • Format on load & save option is now taken into account by the text editor, not just by the code editor.

  • Ignores void files now.

Database editor

  • Display the duration of custom requests is the request editor.

  • The request editor now wraps its contents.

Form editor

  • The dialog for editing text property now displays the name of the editor property in its title.

Help browser

  • Opening the help browser from the welcome dialog does not crash anymore if the left panel is visible.

  • Fix the left panel contents.

Image editor

  • Do not crash when using the erase tool while pressing SHIFT key.

Option dialog

  • Support for automatic translation based on translate-shell tool.

  • Add new snippets.

  • Display custom snippets in bold.

  • Fix spacing of some options in Project tab.

Packager

  • Do not create component with a name having a leading dot anymore.

  • Fix slackware package generation.

Project properties dialog

  • Use custom icons for component tab check boxes, because some style cannot draw them correctly.

  • Add GB_NO_JIT as predefined environment variable.

  • The environment variable table now automatically resizes its columns.

Search dialog

  • Text highlight now works correctly whatever the editor font is.

  • Make it larger for long checkbox labels.

Text editor

  • Some fixes in javascript compression.

Translation dialog

  • Move the current translation related buttons to their own toolbars juste above the translation field.

  • Add two buttons to move between translated strings.

  • Support for automatic translation based on translate-shell tool.

  • Deleting a translation correctly removes it from the translation combo box.

Welcome dialog

  • Use the new icon instead of the old one.

Miscellaneous

  • Update Italian translation.

  • Update French translation.

  • Update Spanish translation.

  • Update Dutch translation.

  • Update financial support.

  • Do not call msgfmt anymore, this is automatically done by the compiler now.

  • Mark some strings in forms as not to be translated.

EXAMPLES

  • Fix corrupted image in BeastScroll example.

WIKI

  • Update French translation.

  • Support for webm video files.

  • Support for integrated playground.

  • The page title now starts with the page path.

  • Update Dutch translation.

WEBSITE MAKER

  • Update Dutch translation.

INTERPRETER

  • InStr() and RInstr() work correctly again when case is ignored and pattern length is at least two characters.

  • Add a API to know if a native component exists on the disk.

  • Fix loop optimization that didn't work on loops calling themselves recursively.

  • Take care of components that modify the environ variable. Using gb.httpd does not crash anymore.

  • Make the "./" path equivalent to "." as before, and not a prefix for a component with a null name.

  • Allow one more decimal digit in floating point number constants.

  • Ignore trailing zeros in the decimal part of floating point number constants. It may introduce rounding differences.

  • Don't crash if a component uses NULL as error message argument. Replace it by a void string.

  • Fix string to floating point conversion routine.

  • Allocate custom language environment variables statically, because environment is accessed by shared library exit routines, after the interpreter memory allocations have been freed.

  • Define a new limit constant, that is the maximum length of the System.Language variable. It is 16 bytes.

  • File.RealPath() is a new static method that returns the canonicalized absolute path name of the specified path, with no symbolic links inside.

  • String.Code() now returns -1 on incorrect UTF-8 string.

  • Array.SortUsing() is a new method that sorts an array according to the sort order defined by another array.

  • String.Right() does not crash anymore on invalid UTF-8 strings.

  • Add Sort() method to variant arrays.

  • JIT compilation is now run in two steps.

  • Active file descriptor watches and active timers are now automatically transferred to the component declaring a custom event loop. Consequently, a process started before the declaration of the event loop will have its termination signal correctly catched.

  • Use waitpid() instead of wait4().

  • Array.Shuffle() is a new method that randomly shuffles an array using Fisher–Yates algorithm.

  • JIT compiler does not run static initializers anymore when loading a class. Otherwise bytecode can be modified before being compiled, leading to a JIT compiler crash.

  • Fix Url$() escaping characters.

COMPILER

  • If the option -t is specified, the compiler now automatically calls msgfmt to compile the translation files if needed.

  • Unused function warnings now point at the beginning of the function.

  • Raise an error if there is not enough local slots for control structures.

  • ASSERT ... PRINT or ERROR allows to use PRINT or ERROR to print a message when the assertion fails.

  • Fix LOCK subroutine meta-information.

SCRIPTER

  • Scripter now compiles the content of arguments in inline mode (-e).

GB.ARGS

  • Update Italian translation.

  • Update Dutch translation.

GB.COMPLEX

  • Optimize division, thanks to Cedron Dawg.

GB.DB

  • Connection.GetTemplate() and Connection.ApplyTemplate() now take tables without primary key into account correctly.

GB.DB.FORM

  • Update Italian translation.

  • Update Dutch translation.

GB.EVAL

  • Code formatting: Unary minus operator is now sticked to its argument.

GB.EVAL.HIGHLIGHT

  • TextHighlighter: Paint() is a new method that paints the highlighted text.

GB.FORM

  • Update Italian translation.

  • Update Dutch translation.

  • ToolPanel: Does not crash anymore.

  • Spinner: Enable the spinner timer only if needed, and not permanently!

  • TimeBox is a new control that allows to enter a duration. Maybe the name of the control is not very good.

  • URLLabel: Rewrite the control as a child of Label.

  • FileView: Sometimes the contents was not correctly refreshed.

GB.FORM.DIALOG

  • Update Italian translation.

  • Update Dutch translation.

GB.FORM.EDITOR

  • TextEditor: Entering a string delimiter while text is selected correctly encloses it again.

  • TextEditor: The inner shadow now covers the margin.

GB.FORM.MDI

  • Update Italian translation.

  • Workspace: Sometimes closing a tab with the middle button is triggered twice, leading to a crash. Made a workaround.

  • Workspace: Add CloseButton property that allows to remove the global close button.

GB.FORM.STOCK

  • Fix some icons.

GB.FORM.TERMINAL

  • TerminalView: Implement ESC <N> b sequence.

  • TerminalView: the minimal screen height is now 2 lines.

GB.GTK

  • Do not propagate mouse wheel events of ComboBox, TextArea, Slider and ScrollBar, as in Qt components.

  • Window: Windows without any active child control correctly catch keyboard events now.

  • Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

GB.GTK3

  • Do not propagate mouse wheel events of ComboBox, TextArea, Slider and ScrollBar, as in Qt components.

  • TabStrip: Tab labels are now correctly displayed when the tab has no icon.

  • Make component compile with GTK+ version < 3.20.

  • Window: Windows without any active child control correctly catch keyboard events now.

  • Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

GB.GUI

  • Take the other requested GUI components into account to choose the toolkit.

GB.GUI.BASE

  • Paint: Add an hidden undocumented method that computes the character width of a fixed font.

  • SpinBox: Alignment is a new property that allows to define the alignment of the control inner text.

  • SpinBox: ShowZero is a new property that tells to pad the displayed number with zeros.

  • SpinBox: Limit is a new event that is raised when the user tries to move past the maximum value, or before the minimum value.

  • SpinBox: The value entered with the keyboard is now always taken into account by the next use of the mouse.

  • ScrollArea: The shadow is smoother now.

  • GridView: Make selected color less transparent.

GB.GUI.QT

  • Take the other requested GUI components into account to choose the toolkit.

GB.INOTIFY

  • Watch: Events[] incorrectly reset events outside the given event set and ignored the assigned value.

GB.JIT

  • Do not use loop initial declaration in generated C code for old gcc versions.

  • Fix the default value of optional Object function arguments.

  • Support for tcc compiler.

  • Fix Debug instruction.

  • Support for the new Assert instruction.

  • Run JIT compilation in the background.

  • JIT.Debug is a new property that allows to enable JIT debugging messages at runtime.

  • Don't display abortion debugging message if there is no compilation to abort.

  • Object variables are correctly managed now.

  • DO...LOOP and REPEAT...UNTIL at the beginning of the function now is correctly compiled in all cases.

GB.MAP

  • MapView: Map is now correctly located under the mouse cursor when zooming out.

  • Circle items now have the good radius.

  • MapPoint.Distance() is now a static public function.

  • Map.Proxy is a new property that allows to define the proxy used by all HTTP requests made to retrieve the map tiles.

  • GetShape(), GetTile(), Remove() and Exists() are new methods to manipulate Map Layers.

  • DefaultCache is a new property to set default cache path elsewhere from User's Home.

  • GetItem is a new method to manipulate shape items inside a Shape Layer.

  • GetCenter made static in MapPoint.

  • LineStyle is a new property to Shape Layer's Items.

  • Added some inline Help comments on several methods and properties.

  • Circles can now be moved by changing it's Center property.

  • Circles can now have Fill colors other than Shape's default.

  • Item's icon is now centered, if other than default.

  • Item's icon can now be colorized, if other than default.

  • Better Layer opacity handling.

  • Better ZoomOut handling.

  • Use of FAST in MapPoint class and Geo module.

GB.MEDIA

  • MediaPipeline: Pos is a new synonymous for the Position property.

  • MediaPipeline: Position is a new event that is raised when the media position has changed.

  • MediaPipeline: Seek() is a new method that allows to move the media to a specific position while specifying GStreamer seek flags.

  • MediaPipeline: Speed is a new property that allows to define the media playing speed rate. A negative speed will play backward.

  • MediaPipeline: Forward() is a new method that allows to move forward a specific amount of frames. Moving backward does not work at the moment.

  • Media: Add MediaPipeline.Seek() seek constants.

GB.MEDIA.FORM

  • MediaView: Merge the play and pause button.

  • MediaView: Remove the big white pause symbol.

  • MediaView: Speed is a new property that allows to define the media playing speed.

  • MediaView: Resizing the control while the media is paused correctly resizes the displayed frame.

GB.NET

  • UdpSocket: Fix class declaration.

  • UdpSocket: Host is a new property that allows to define the IP address the UDP socket will be bounded to.

  • SerialPort: Open() method now raises more detailed errors.

  • SerialPort: Support for any port speed on Linux.

GB.NET.CURL

  • Curl.DefaultProxy is a new property that allows to define the default proxy of all newly created HttpClient objects.

GB.NET.PO3

  • Update Dutch translation.

GB.PDF

  • Replace Guint by uint, otherwise the component seems to not compile anymore on some systems.

  • Make gb.pdf compile with poppler 0.72.

GB.REPORT

  • Update Dutch translation.

GB.REPORT2

  • Update Dutch translation.

GB.QT4

  • Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

GB.QT5

  • Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

GB.REPORT2

  • Update Italian translation.

  • Add the requirement for gb.eval in component information, and loads it explicitly.

GB.SDL2

  • Draw.Image() opacity argument works as expected now.

  • Font[] now assumes a default size of 10 points, so that you don't have to specify the font size when creating the Font object.

  • Don't crash when drawing one-character static strings.

GB.TERM.FORM

  • Update Dutch translation.

GB.UTIL

  • Allow to retrieve timezone from Date.FromRFC822().

  • Propagate internal errors from Date.FromRFC822() instead of shadowing them with a Catch block.

  • Improve error message from Date.GetRFC822Zone() by showing what couldn't be recognized as a timezone.

  • Add Date.FromUTC() as inverse to Date.ToUTC().

  • Fix timezone bug in Date.FromRFC822() and pass all tests.

GB.UTIL.WEB

  • URL is a now a dynamic class that can be used for analyzing and modifying the contents of an URL.

  • URLQuery is a new class that represents the query part of an URL.

GB.WEB

  • Correctly normalize SQLite session file names.

GB.WEB.FEED

  • Update Dutch translation.

  • Introduce RssDate class for date+timezone handling and update documentation.

  • RssGuid: do not set IsPermaLink by default when parsing.

  • Mark component as "Stable".

  • Depend on gb.util for RFC822 date conversions.

GB.WEB.FORM

  • Update Italian translation.

  • Update Dutch translation.

  • WebTextArea: The Text property works correctly again.

GB.XML

  • <!DOCTYPE> declaration is now case-insensitive.