doc • release • 3.9.2

Gambas 3.9.2

What's new

This release fixes most of the serious bugs found since the release of Gambas 3.9.1.



  • Correctly detect update of svn database for generating trunk version file.


  • Optionally load gb.inotify component.

  • Farm client: Support for library publishing and library installation.

  • Translation: Locations of translated strings should be more readable now.

  • Welcome dialog: Software button is disabled if no software is installed.

  • Welcome dialog: Software and example lists are automatically refreshed after the farm software client has been used.

  • Welcome dialog: Software can be uninstalled by clicking on the little icon on the top right of the software box.

  • Packager: The package name of the library is now always prefixed with the vendor name or prefix, so that this name is predictable.

  • Packager: Consequently, making a package of a project using another library does not crash anymore if that library was never packaged.

  • Packager: When creating the package, display the messages in a box below the output log. Do not use message boxes anymore.

  • Farm client: When uninstalling a library, automatically remove the vendor directory if it is void.

  • Farm client: When uninstalling a software installed from the farm, automatically remove the vendor directory if it is void.

  • Allow files located in a linked directory to be modified only if they are opened in fake mode, i.e. alone.

  • Connection editor: The "SQL request" button is now an entry in the table list.

  • Connection editor: The database description is now the tooltip of the database configuration button.

  • Editor: Fix crash in code scanning after a deletion.

  • Packager: The description text box now expands vertically.

  • Packager: Debian package description is now correctly generated in all cases.

  • Editor: Workaround an interpreter crash when analyzing an expression including the LAST keyword.

  • Remove the pretty code indentation on function Begin/End. I need to find a way to close indentations on functions without ending.

  • Library dialog: Do not crash if a global library and a local library have the same vendor.

  • Explicitly close the FOutput form so that it can save its settings before its parent is destroyed.


  • The translation file of the project is now always correctly loaded. That was a very old bug.

  • Timer delay is now stored in 31 bits, and so can now be up to 2^31 - 1 milliseconds, i.e. about 24 days, 20 hours and 31 seconds.

  • Exec with a null program name does not crash anymore.

  • Debugger does not crash anymore when displaying a static collection-like object.

  • Close watched process input & outputs as soon as it is killed. Otherwise, running two processes using virtual terminals successively may fail.

  • Remove debugging messages.


  • Take UTF-8 into account when formatting help text.

  • Fix help text for options having no short name.


  • Connection.ApplyTemplate() now correctly handles a collation whose name is "default" in the template file.


  • SQL strings including backslash characters are now correctly quoted.


  • SQL strings including backslash characters are now correctly quoted.


  • DBusObject.Raise() now uses the default object interface if no interface is specified in the event name.

  • Fix string leak in signature marshalling routine.


  • Desktop.RunAsRoot() now uses gksu if gksudo is not found.

  • Desktop.RunAsRoot() should work correctly on SuSE now. It uses kdsu if kdsudo is not found.

  • Use KDE5 wallet when the desktop is KDE5. Use a possible old KDE4 wallet only if no password is found in the KDE5 wallet.

  • Support for cygwin desktops.

  • Setting Desktop.Passwords[] now works correctly if secret-tool is used.


  • Add some CSS properties and symbols.


  • DirChooser,FileChooser: Add a "delete directory" menu that can delete void directories only.

  • DirView: File watch events does not disturb renaming anymore.

  • MenuButton: Automatic menu popup routine should not crash anymore.


  • TextEditor: Editor works correctly again when a procedure is collapsed.


  • Window.Menus[] does not crash anymore.

  • Workaround that prevents system tooltip colors to be unreadable.


  • Window.Menus[] does not crash anymore.

  • Workaround that prevents system tooltip colors to be unreadable.


  • GridView: Stop the scrolling timer when focus is lost, as if you open a modal dialog during a MouseDown event, you don't get the MouseUp event! Maybe I should systematically raise a fake MouseUp event when focus is lost, and QT didn't send it.

  • IconView: Correctly refresh layout when icon pictures are made smaller.


  • Creating a watch with a null path now raises an error instead of crashing.

  • Don't assume inotify_add_watch() succeeds in all cases. The watched path may have been deleted after the watch has been created.


  • Fix jit.h detection and resolve issue where multiple versions of llvm are present. jit.h is only available prior to llvm 3.6 and gb.jit can only be compiled with those versions.


  • Now polylines work properly.

  • Zoom in does not change the center of the map anymore.


  • Link explicitly with the thread library.

  • MediaPipeline: Prevent message callback routine possible recursion.

  • MediaPipeline: Raise the Start event when a new stream is started.

  • MediaPipeline: The Position and Duration properties are now computed during the message callback routine.

  • MediaPipeline: Raise the AboutToFinish event two seconds before the stream end.

  • MediaPlayer: NextURL is a new property that you must set to define the next stream that will be played without gap.

  • MediaPlayer: Setting the URL property now automatically stops the player.

  • MediaPlayer: The AboutToFinish event is now raised by MediaPipeline. This is not the GStreamer about-to-finish signal anymore.


  • MediaView: Expose the inner MediaPlayer AboutToFinish event.

  • MediaView: Expose the inner MediaPlayer NextURL property.


  • Pop3Client.Refresh() has been implemented. This method was needed to refresh the internal message cache, so that you don't have to open a new connection each time you need to read the message box.


  • Workaround that prevents system tooltip colors to be unreadable.


  • Workaround that prevents system tooltip colors to be unreadable.


  • Cygwin needs the shared library x11 - as per Bastian Germann.


  • Remove unneeded references to Channel objects, which lead to memory leak.


  • XmlNode: Don't crash when _get()ing an empty attribute value.

  • XmlNode.Attributes now works correctly when getting empty attributes.

  • XmlElement.GetAttribute() now works correctly with empty attributes.

  • Cygwin changes - as per Bastian Germann.


  • If Http-Accept-Language header is void, Request.Language returns the current system language instead of "C".

  • Mime types for json, kml & kmz files. Used by the Response.SendFile() method.

  • Don't modify DB.Current when sessions are managed with sqlite databases.

  • Using Response.SendFile() correctly sets the Done property.

  • Getting the sessions keys using sqlite works correctly now.


  • WebForm.Download() is a new static method that triggers a file download on the client side.

  • WebTextBox: The default event is "Change" now.

  • Allows quotes in automatic completion items.

  • WebControl.Name is now writable, so that the Group virtual property can be used in the IDE.

  • WebContainer: Force a full refresh when the Visible property changes.

  • WebTable: Add an Hidden property to the column object.

  • WebUploadArea: Clear() is a new method that clears the possibly uploaded file.

  • WebTable: Selection is now correctly maintained between requests.

  • The static public method HandleRequest is now correctly called in your startup form.

  • Remove support for multiple main forms.

  • WebTable: AddColumn() is a new method to add a column and defining its properties in one line of code.

  • WebForm: Prevent non resizable dialog window from expanding to fit its contents.

  • WebForm: Correctly restore automatic instances between requests.

  • WebForm: The Hide() method works as expected now.

  • WebForm: Persistent is a new property that tells a form must be hidden instead of being deleted when clicking on the close button or calling the Close() method.

  • WebDataBox: DateTime is a new property that allows the control to accept a time part.

Compilation and installation

Read the instructions there.

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

Enjoy it !

See also