Gambas Documentation - /doc/release/3.7.0

# Gambas 3.7.0

- What's new

- ChangeLog

- Compilation and installation

## What's new

This new release fixes 267 bugs, adds 299 new features and 7 optimizations.

Note that many of these bugs have already been back-ported to the 3.6.x versions.

Here is a summary of the main changes:

### General

- A new software repository made with Gambas for Gambas. It allows to publish and install Gambas softwares. All Gambas examples will be stored there now.

### Development environment

- Projects can be published to a "farm server", and installed from there.

- The database editor now automatically store the description of the database into a template file that can be used at runtime to initialize a new database.

- The text editor now can handle Unix, Windows and Mac end-of-lines characters.

### Interpreter & compiler

- Array accessors are now faster.

- Two new functions for encoding URLs: Url$ and FromUrl$.

- The child process interface has been fixed and optimized.

- The USE instruction of Gambas scripts is now part of the language.

### Components

- gb.db got new methods to create databases from templates generated by the IDE.

- gb.db.mysql is now faster, as metadata requests are now cached.

- gb.db.sqlite3 now supports common table expressions introduced in SQLite 3.8.3.

- ListEditor is a new control that allows to edit and reorder the contents of a ListBox.

- Completion is a new class that helps implementing automatic completion.

- FileCompletion is a new class that implements file automatic completion.

- DocumentView is a new control that allows to implement a viewer of any document.

- ColorPalette is a new control that allows to select a color among a predefined list of colors.

- MessageView is a new control that implements an embedded notification panel that is automatically hidden and shown if there is a message to display.

- Keyboard management and input method nightmare have been fixed in gb.gtk and gb.gtk3.

- The Border class is now creatable and allows to paint complex css-like border where you want.

- HttpForm is a new class to help submit forms to HTTP servers.

- /wiki/comp/gb.report2 is a new and better implementation of the reporting component.

- gb.scanner is a new component based on SANE to help dealing with scanners.

- gb.sdl2 and gb.sdl2.audio are two new components for using SDL2.

- The same Settings can now be shared by several running applications.

- gb.util is a new component written in Gambas that provides utility functions to the interpreter.

- gb.util.web is a new component written in Gambas that provides utility functions to web applications.

## ChangeLog

    [CONFIGURATION]
    * BUG: The gbw3 symbolic link is correctly uninstalled now.
    * BUG: Remove '.gambas' directories that must not be under version control.
    * BUG: Fix 'components written in Gambas' installation Makefile.am.
    * BUG: Redirect to the wiki from the INSTALL file. It contained a generic
      (and not working) excerpt from the autoconf manual before.
    * BUG: Remove '.settings' project files that must not be versioned.
    * NEW: Examples are not installed anymore and were removed. They are now
      stored in the Gambas farm server.
    * NEW: Update Chinese translations.
    * NEW: Update the state of many components.
    * NEW: When installing a component entirely written in Gambas,
      automatically remove possible existing old shared library files.
    * NEW: Modify the installation process so that it will be able to run the
      'gbh3' tool to extract help from component source files.
    * NEW: Support for GNU/Hurd.

    [DEVELOPMENT ENVIRONMENT]
    * BUG: Don't use "sTable" as field name for the metadata table, because
      apparently "STABLE" is a reserved word in PostgreSQL. Upgrade an already
      existing metadata table automatically.
    * BUG: Don't crash when starting a search from a image or connection
      editor.
    * BUG: Run packaging commands through a virtual terminal.
    * BUG: Project property dialog: The component grid view now correctly keeps
      its state when filtering is applied, or if only the used components are
      displayed.
    * BUG: Project property dialog: The component help viewer now works
      correctly in off-line mode.
    * BUG: Don't crash when installing the Gambas font, if the
      '~/.config/fontconfig' directory does not exist.
    * BUG: Workaround the behaviour of appmenu by setting the
      'APPMENU_DISPLAY_BOTH' environment variable at startup if menus are
      explicitly hidden.
    * BUG: Form editor: Undo correctly resets the selection.
    * BUG: Fix offline help of project classes.
    * BUG: Expression analyze now works correctly when ME or SUPER is used.
    * BUG: Do not remove the '.gambas' directory when compiling everything.
      Just remove its contents, and keep a possible '.svn' directory inside.
    * BUG: Don't crash if the '.gambas' directory does not exist.
    * BUG: Off-line help: The help time stamp is now used for detecting updates.
      File modification time is not used anymore as it is a localized time.
    * BUG: Source archive files now ignore files named 'core'.
    * BUG: Don't crash when trying to download the off-line help if 'wget' is
      not installed on the system.
    * BUG: Opening a web page in a browser now works if the BROWSER environment
      variable is not defined.
    * BUG: Fix Mageia package generation.
    * BUG: Help on virtual classes (like TreeView.Item) is correctly displayed
      now.
    * BUG: Ignore comment lines when completing a control structure after the
      RETURN key has been hit.
    * BUG: Correctly refresh the 'Recent' tab in the open project dialog.
    * BUG: Make Wizard.ActionText property translatable.
    * BUG: Fix initial focus of welcome dialog.
    * BUG: Fix object control properties edition.
    * BUG: FMakePatch: Don't add a patch to the viewer multiple times.
    * BUG: Fix project property dialog validation for component/library
      projects.
    * BUG: Database editor: Support for requests beginning with "WITH" or
      "PRAGMA".
    * BUG: Don't apply theme colors to the form property editor.
    * BUG: Do not invert Blur and Spread.
    * BUG: Opening a form using an unknown control now displays an error
      message and the form is not opened.
    * BUG: Pasting an unknown control from another project now displays an
      error message and nothing is pasted.
    * BUG: Fix form control check by ignoring the action part of the form file.
    * BUG: Don't apply theme background to the hierarchy window.
    * BUG: Image editor: Fix interaction between pasting and transformation
      tools (flip, rotate, scale).
    * BUG: Don't crash if the selected background is not available.
    * BUG: Packager: Really use the same package name as displayed in the first
      wizard step in all cases.
    * BUG: Packager: Clean up system selection.
    * BUG: Several fixes in the editor position history.
    * BUG: Workaround some spurious Qt4 webkit warnings.
    * BUG: Packager: Fix the use of Shell$() in Debian packaging.
    * BUG: Packager: Forbid spaces in extra files for Debian systems, as they
      are not supported: this is a many years old bug in the Debian packaging
      system that has never been fixed!
    * BUG: Loading a new project correctly updates the desktop component
      toolbar button.
    * BUG: Fix search inside output console.
    * BUG: Image editor: Don't crash when starting drawing outside of the
      image.
    * BUG: Image editor: Fix color palette.
    * BUG: Correctly update end-of-line menu and button visibility.
    * BUG: Correctly reset Application.Busy when opening a connection fails.
    * BUG: FPatch: Don't forget to decrease Application.Busy.
    * BUG: Image editor: Fix a possible crash when pasting an image.
    * BUG: If A picture is not on the given path then CFamilyreport crashes.
    * BUG: Welcome dialog: Disable the filter when the example or recent list
      is void.
    * BUG: Form editor: Always display the arrangement icon of all parents and
      grand-parents of the hovered control.
    * BUG: The ".component" file is now automatically versioned.
    * BUG: Form editor: When inserting a control, show the name of the control
      without setting the Text property.
    * BUG: Form editor: Undo is not broken anymore by the popup menu capturing
      the MouseUp event.
    * BUG: Form editor: when dropping a control from the toolbox, the position
      of the mouse cursor now gives the center of the control, not its top-left
      corner. It prevents the drop to be ignored when it occurs on the gray
      d&d frame!
    * BUG: Form editor: Don't show the name of the control in buttons if a
      picture is defined.
    * BUG: Correctly refresh the icons everywhere when the startup class is
      changed.
    * BUG: Default IDE window size should be big enough now.
    * NEW: Use the 'gb.markdown' component for converting help comments.
    * NEW: Farm server client.
    * NEW: A wizard for publishing a project on a farm server.
    * NEW: Update German translation.
    * NEW: Add a description field to the crash dialog box. This description is
      added to the mail.
    * NEW: Automatic completion of event handlers if an object is declared
      globally with an event name (Private MyObject As MyClass As "event").
    * NEW: The IDE now can edit *.gbs Gambas scripts. But there is no automatic
      completion.
    * NEW: Use labels instead of buttons inside project items.
    * NEW: Improve Cygwin System Information awareness.
    * NEW: Update the offline help to the new wiki look.
    * NEW: The off-line style sheet file is now a symbolic link to the style
      sheet file located in the wiki project.
    * NEW: Database editor: The database structure is now written to a
      '*.template' file in the '.connection' directory.
    * NEW: Add the 'blues' color theme made by Kevin Fishburne.
    * NEW: Design changes in the welcome dialog.
    * NEW: The project open dialog has a bookmark that points at software
      sources installed form the farm.
    * NEW: Add a dark gray background.
    * NEW: No gradient for drawing project or software boxes, but a solid
      background.
    * NEW: Remove the examples from the welcome dialog, the open project dialog
      and the 'File' menu.
    * NEW: Animate wizards.
    * NEW: Project version display routine is now centralized.
    * NEW: Don't force the form hierarchy to be expanded.
    * NEW: Update Chinese translation.
    * NEW: Add an "Examples" button in the welcome dialog that displays the
      projects installed in '~/.local/share/gambas3/src/example'. Add an help
      text if no example is installed yet.
    * NEW: Add gb.sdl2 and gb.sdl2.audio to the component list.
    * NEW: Translation dialog: Add an option to replace existing translations
      when importing an external translation file.
    * NEW: The project property dialog now uses an IconPanel.
    * NEW: New design of the component tab in the project property dialog.
    * NEW: Don't display an error message when a newly inserted file cannot be
      automatically opened.
    * NEW: Put the component/library properties into the project property
      dialog.
    * NEW: Project properties dialog: Make component filters visible again.
    * NEW: Project properties dialog: To get help on a component, you have to
      double-click on it now. It opens a embedded web browser on the help. The
      back button of the browser goes back to the component list.
    * NEW: Use the new GridView cell Border property to draw the component tab
      of the project property dialog differently.
    * NEW: Description of the gb.util.web component.
    * NEW: A component/library project now can define if its information should
      include the information of other components. This is useful if your
      component includes another component at runtime that is hidden, or that
      it does not depend on.
    * NEW: Component/Library dependencies now are chosen from a new component
      selection dialog.
    * NEW: Use row borders in project property component list. But still use
      cell borders in component / library requirements!
    * NEW: Use the new filter feature of the ButtonBox control.
    * NEW: Use the internal ComponentChooser control to replace the previous
      component selection in the project property dialog.
    * NEW: Image editor: Move tools to the property panel.
    * NEW: Color selection dialog: Replace the deprecated ListContainer by a
      GridView.
    * NEW: The IDE background image can be colorized.
    * NEW: Add support for ReportMargin.
    * NEW: New property AllowNegative in CoordBox to allow negative numbers.
    * NEW: Now FamilyReport.ToPixel supports negative numbers.
    * NEW: A ReportBoxShadowChooser dialog to manage the Report BoxShadow.
    * 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.
    * NEW: New component status icons.
    * NEW: Add a "run that class" button in the class editor.
    * NEW: Add a "run that class" entry in the project tree popup menu.
    * NEW: Remove two ugly backgrounds.
    * NEW: Packager: Use a ListEditor to edit mimetypes.
    * NEW: Packager: A checkbox now allows to enable or disable package
      signature. Works only for *.deb package, and only if you have correctly
      configured 'gpg'.
    * NEW: The '.component' file is removed if the project type is switched
      back to "normal".
    * NEW: New icon for autotools packages.
    * NEW: Implement the new wiki component description and class list for the
      offline help.
    * NEW: The argument editor of the project property dialog now has an
      automatic file completion.
    * NEW: Use specific gray icons for the debugging panel.
    * NEW: Balloon message have been replaced by the new MessageView control.
    * NEW: Remove some icons that are not used anymore.
    * NEW: Files including a '\r' character are not considered as binary files
      anymore.
    * NEW: Text editor now can handle Unix, Windows and MAC end-of-line
      formats, through a new toolbar button and a menu.
    * NEW: Add support for gb.report2 and gb.scanner.
    * NEW: Project property dialog: Add management of excluded components.
    * NEW: Add a popup menu on the debugger expression window that allows to
      edit or watch the selected value.
    * NEW: Update support list.
    * NEW: Add a menu entry in debugger windows to print the value of the
      current line on the console.
    * NEW: Form editor: Selected controls do not display a frame when they are
      hovered. It is useless.
    * NEW: Form editor: The hover frame is now updated when a control is
      resized.
    * NEW: Form editor: Panels with no child and that have their Expand
      property set now display red hatch lines whose orientation depends on
      the arrangement of its parent container.
    * NEW: Form editor: Arrangement icons have been redesigned.
    * NEW: Remove the "Break on error" debugging option. It is useless, and
      leads to unexpected errors when it is forgotten.
    * NEW: Allow to mark component as deprecated.
    * NEW: Draw the version number the same size as the application title in
      the welcome and about dialogs.
    * NEW: Use the tawhid background in the about dialog.
    * NEW: Make the current procedure highlighted again in the editor procedure
      list.
    * NEW: French translation updated.
    * OPT: FPatch: Make hunk (un)checking behave more intuitive.
    * OPT: Translation dialog: Closing the dialog is now faster.

    [WIKI SERVER]
    * BUG: Fix the display of page without headers.
    * BUG: Fix creatable class detection.
    * BUG: Take the new ".info" file format into account.
    * BUG: Some style fixes for lists.
    * NEW: Help comments of component classes and symbols are now automatically
      used for creating non-existing documentation pages.
    * NEW: Images are clickable in editing mode. They point at the image wiki
      page.
    * NEW: New look for the documentation wiki.
    * NEW: Indexes are now displayed on two or more columns.
    * NEW: New login panel.
    * NEW: New class list design in component pages.
    * NEW: Full description in component pages.
    * NEW: The old wiki cgi script project has been removed.
    * NEW: Take '*.help' help files into account.
    * NEW: Support for babelmark markdown syntax comparison.
    * NEW: Automatically use the english page if the current page has not been
      translated.
    * NEW: Automatically use the parent class if possible when a symbol page
      does not exist.

    [FARM SERVER]
    * NEW: A new little CGI script that implements a Gambas farm server. You
      need a SQL database server too.

    [BENCHMARKS]
    * BUG: Use the same data table in all version of the 'sort' benchmark.
    * BUG: Call python2 explicitly.
    * NEW: A new bubble sort benchmark.
    * NEW: A script that runs all the benchmarks and prints the result as an
      HTML table.
    * NEW: Update the 'benchmark.gbs' script.
    * NEW: Do less in the polynomial benchmark, so that it runs about as long as
      the other benchmarks.

    [EXAMPLES]
    * BUG: MoviePlayer: Use an embedder as mplayer container. It's the only
      control that has its own X11 window in all toolkits.
    * BUG: Fix the GNUBoxWorld icon.
    * BUG: ReportExample works again.
    * BUG: BeastScroll: Fix frame rate.
    * NEW: Painting: Update the example.
    * NEW: Delete examples.
    * NEW: Put the old examples in '/trunk/app/examples'.
    * NEW: Start porting SDL examples to gb.sdl2. They are not published to the
      farm server yet.
    * NEW: Update BeastScroll example to SDL2.
    * NEW: LCDLabel now uses gb.sdl2.audio.
    * NEW: Change the version number on the Google map.

    [INTERPRETER]
    * BUG: Fix array accessor optimization on multi-dimensional native arrays.
    * BUG: The internal UTF-8 string position cache now works in all cases.
    * BUG: Add the gb.scanner component to the build list.
    * BUG: Process: Don't check end of stream before calling the Read event. I
      don't remember what this test was supposed to fix, but for sure it leads
      to data loss if some data arrives just after the test.
    * BUG: SHELL now correctly resets the interpreter to '/bin/sh' if the
      System.Shell property is reset to a null string.
    * BUG: Process: Don't call the Read event if there is nothing to read.
    * BUG: Retrieve the child process output correctly when it has terminated.
      No data should be lost anymore.
    * BUG: Read data ahead before raising a Read event (on Process, File, or
      any stream). Use the result of that read to detect EOF, as using the
      stream end-of-file detection routine is not reliable.
    * BUG: Don't remove the possible watch when freeing the file. The file may
      be closed, and the file descritor may have been reused!
    * BUG: The process error output callback now immediately closes its file
      descriptor as soon as read() returns zero or an error, or if the Error
      event is not handled.
    * BUG: 'Exec ... To' and 'Shell ... To' work correctly again.
    * BUG: Do read ahead for any watched file descriptor. It may break when
      watching special device files, depending on its internal kernel driver
      behaviour. We'll see.
    * BUG: Correctly flush the output of a terminated child process.
    * BUG: Release standard i/o File objects before cleaning up the classes, to
      avoid an incorrect "circular reference" message.
    * BUG: "create static" classes are now taken into account when using the
      _call() special method.
    * BUG: Force the interpreter to link with the system thread library,
      whatever the global linker configuration is.
    * NEW: Url$() is a new function to encode an URL.
    * NEW: FromUrl$() is a new function to decode an URL.
    * NEW: FromBase64$() is now a synonymous for UnBase64$().
    * NEW: Support for the new USE instruction.
    * NEW: New GB.AllocZero() API for allocating memory and filling it with
      zeros.
    * NEW: Apply the "close on exec" flag to all non-temporary file descriptors
      opened by the interpreter.
    * NEW: Remove the GB.UnrefKeep() interpreter API, as it is not used
      anymore.
    * NEW: The process child errors raised before the exec() system call are
      now caught in a separate function called by the compiler explicitly
      after a SHELL or EXEC assignment.
    * NEW: Remove an unused internal stream method.
    * NEW: Split() has a new behaviour when its escape argument has two
      characters, the second one being the first splitting character. It uses
      the first character to escape splitting characters. For example,
      Split("a;b~;c;d",";","~;") returns ["a","b;c","d"].
    * NEW: String[].Join() method handle the new Split syntax.
      ["a","b;c","d"].Join(";","~;") returns "a;b~;c;d". Moreover, in the
      traditional escape syntax, the joined string are not escaped anymore if
      they are void.
    * NEW: The data format 'u' displays all milliseconds digits as soon as
      there is at least two 'u' characters, and not if there is exactly two
      'u' characters only.
    * NEW: Allow WAIT to raise errors.
    * NEW: Do not stop watching a file descriptor that is ready to read but has
      no data.
    * NEW: Sleep up to 10 ms inside the watch file descriptor read callback if
      it is called too often.
    * NEW: Support for the new '*.list' file format.
    * NEW: Support for GNU/Hurd.
    * NEW: The Task return value is now persistent (it is stored inside the
      Task object).
    * NEW: Add end-of-line format constants to the interpreter API.
    * OPT: Array accessors have been optimized. The 'sort' benchmark is now 25%
      faster.

    [COMPILER]
    * BUG: Dump boolean constants in *.info files the same way as the informer.
    * BUG: Fix a badly initialized variable in syntax tree analyze, that could
      lead to spurious "Expression too complex" errors.
    * NEW: The parser now assumes that an identifier is a subroutine taking
      some arguments only if it is followed by an open brace.
    * 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.
    * NEW: USE can be followed by a comma-separated list of component names.
      That way the syntax is the same as what was implemented in the gambas
      scripter 'gbs3'.
    * NEW: SHELL and EXEC assignments now call an hidden subroutine just after
      the assignment to immediately check for a possible child error.
    * 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.
    * NEW: A symbol followed by a point is never interpreted as a function if
      it is used as a function name in the current class.

    [INFORMER]
    * NEW: Support for information included from components written in Gambas.

    [SCRIPTER]
    * BUG: The '-f' option now creates a usable script.
    * BUG: Be more intelligent when parsing arguments. Now all arguments after
      the first non option argument are sent to the script process.
    * NEW: If the script crashes, a "Segmentation fault" message is printed.
      Not perfect, as the signal was not necessarily a segmentation fault...
    * NEW: New argument '-u' that allow to force the given components to be loaded.
      It is useful in some case. For example:
        gbs3  -u 'gb.scanner' -e 'dim s as string:for each s in scanners:print
        s:next'
    * NEW: Update the usage files.

    [HELPER]
    * NEW: A new 'gbh3' tool that extracts help comments from a gambas project.

    [GB.DATA]
    * BUG: Don't use forward typedefs as some compilers don't seem to
      understand them.
    * BUG: Silence false positive compiler warnings.
    * BUG: Trie: Use sufficient bit widths in numerical constants (could cause
      data loss on 32 bit systems).
    * BUG: TriePrefix: Don't drop reference counts of the Trie when the prefix
      is not found.
    * BUG: Trie: Fix a memory leak when an object is replaced.
    * BUG: Graph: Add the Weight property to the edge interface.
    * BUG: GraphMatrix.Add() does not add identical vertices multiple times
      anymore.
    * BUG: GraphMatrix: Multiple simultaneous enumerations are possible now.
    * NEW: Trie: New Add() and Remove() cosmetic methods.

    [GB.DB]
    * BUG: Try to retrieve the connection password only if the 'gb.desktop'
      component is loaded, and only display warning messages in that case.
    * BUG: Don't crash at connection opening when no database name is
      specified.
    * BUG: Fix a 'not enough arguments' error in Connections.Create().
    * BUG: Connections: Fix a not enough argument error.
    * BUG: Don't crash when trying to open a non-existing sqlite database with
      the 'sqlite' pseudo-driver.
    * BUG: Fix a crash when using the Connection.Collation property on a not
      yet opened connection.
    * BUG: The timeout is now really taken into account at database opening,
      and it is 20 seconds by default as wanted initially.
    * BUG: Don't crash when opening a connection if the database driver is
      unknown or not specified.
    * NEW: Add support for databases like PostgreSQL that are not fully case
      insensitive.
    * NEW: The Connection class has now a part written in Gambas, and the C
      part has been put in a parent hidden class named '_Connection'.
    * NEW: Connection.GetTemplate() is a new method that returns the
      description of the database as a string template.
    * NEW: Connection.ApplyTemplate() is a new method that takes the previous
      template to initialize the structure of the database. If a table included
      in the description already exists, it is silently ignored.
    * NEW: Connections.Create() is a new static method that creates a specific
      database from a named connection and its template as saved by the IDE
      in the current project.
    * NEW: More detailed error message for SQLite connections.
    * NEW: Add a Connections.Count property that returns the number of
      connections defined in the current project / executable.

    [GB.DB.FORM]
    * BUG: Setting DataView.Editable property to FALSE and then to TRUE works
      correctly now.
    * NEW: The DataSource BeforeSave event can be stopped. That cancels the
      current record save then.

    [GB.DB.MYSQL]
    * BUG: Try to reconnect to a lost database server when listing existing
      databases and the fields of a table.
    * OPT: Cache metadata queries during 30 seconds to speed up things.

    [GB.DB.POSTGRESQL]
    * BUG: Automatically convert field names to lowercase when creating a
      table.
    * BUG: Quote field names when creating a table, even if they are converted
      to lower cases.

    [GB.DB.SQLITE2]
    * NEW: Mark the component as deprecated.

    [GB.DB.SQLITE3]
    * BUG: Support for common table expressions ("WITH ... SELECT ..." SQL
      expressions) that appeared in 3.8.3 version.
    * BUG: Remove an unused function.
    * BUG: Support for PRAGMA requests. Start cleaning up the horrible C++
      classes.
    * BUG: Use the official standard quoting character.
    * NEW: More detailed error message for SQLite connections.

    [GB.DESKTOP]
    * BUG: Patch 'xdg-open' so that 'kde-open' uses its '-noninteracitve' flag.
      That way, the return value seems to be accurate in case of failure.
    * BUG: Desktop.NetworkAvailable now tries to find 'ifconfig' or 'ip' in
      '/sbin' and '/usr/sbin' before relying on the PATH environment variable.
    * BUG: DesktopWindow X, Y, Width and Height properties return the window
      geometry without the frame.
    * BUG: Desktop.Passwords.Enabled works correctly now on Gnome-like systems.
    * BUG: Fix compilation warnings.
    * BUG: Change the Mime loading code so it does not fail on the first read
      glob2 file and checks all the available files.
    * NEW: DesktopFile.MimeTypes is a new property corresponding to the
      'MimeType' entry of the '*.desktop' file.
    * NEW: DesktopFile now can be used for creating or modifying '*.desktop'
      files.
    * NEW: DesktopFile.Categories is a new property to read or set the
      categories of a desktop menu entry.
    * NEW: DesktopFile: GenericName and Comment are two new properties
      corresponding to the *.desktop file fields.
    * NEW: DesktopWindow.Geometry is a new property that returns the geometry
      of the window inside as a rectangle.
    * NEW: DesktopWindow.Frame is a new property that returns the geometry
      of the window outside (with the frame) as a rectangle.
    * NEW: DesktopWindow.GetScreenshot() is a new method that returns a
      screenshot of a window, with or without the frame.
    * NEW: Support for the 'secret-tool' utility. If it is installed on the
      system, it is used instead of the 'gb.desktop.gnome.keyring' component.
    * NEW: More detailed error message when the mime database cannot be read.
    * NEW: Desktop.GetDesktopDirectory() is a new method that returns the
      specific desktop directory specified in its argument, that can be one of
      the following values: "DESKTOP", "DOCUMENTS", "DOWNLOAD", "MUSIC",
      "PICTURES", "TEMPLATES", "VIDEOS".

    [GB.DESKTOP.GNOME.KEYRING]
    * BUG: Retrieving a password now returns NULL if no password is stored in
      the keyring, instead of raising an error.
    * NEW: More explicit error messages.
    * NEW: Storing a NULL password now removes the password from the keyring
      instead of storing a void password.

    [GB.DRAW]
    * BUG: Raise an error if an immediate Paint drawing routine
      (Paint.DrawImage, Paint.DrawText...) is called while there is a current
      path, because this is not supported by gb.gtk.
    * BUG: Using Paint.Begin() on an already painted device automatically calls
      Paint.Save(), and Paint.Restore() will be called with Paint.End().
    * BUG: The PathExtents.Merge() method does not crash anymore.
    * NEW: Paint.Begin() now takes a new optional argument that allows to
      define the painting area as a sub-rectangle of the painting device.

    [GB.EVAL]
    * BUG: Fix a badly initialized variable in syntax tree analyze, that could
      lead to spurious "Expression too complex" errors.
    * NEW: Lines beginning with '#!' are highlighted like comments. It's the
      'shebang' of Gambas scripts.
    * NEW: The parser now assumes that an identifier is a subroutine taking
      some arguments only if it is followed by an open brace.

    [GB.EVAL.HIGHLIGHT]
    * BUG: The '.startup' file must not be versioned.

    [GB.FORM]
    * BUG: DirChooser: Correctly update the toolbar according to the file view
      visibility.
    * BUG: Setting Spinner.Enabled to FALSE correctly stops the animation now.
    * BUG: SwitchButton: Use a "disable" look for ON and OFF state when the
      Enabled property is FALSE.
    * BUG: Don't use Style.FontOf(), it has been removed.
    * BUG: ValueBox: The Value property is not visible to the IDE anymore.
    * BUG: ValueBox.Text can understand a void string for all ValueBox types
      now.
    * BUG: ImageView: Setting the Image property to NULL correctly resets the
      control.
    * BUG: FileProperties: Fix the media preview.
    * BUG: FileChooser.Bookmarks and DirChooser.Bookmarks properties now have
      the 'Collection[]' datatype.
    * BUG: FileChooser & DirChooser: The 'desktop' bookmark works correctly
      now.
    * BUG: Remove a WAIT inside the Balloon.Hide method.
    * BUG: The ToolPanel buttons now takes Style.FrameWidth into account.
    * BUG: IconPanel: The mouse wheel cannot select hidden tabs anymore.
    * BUG: Wizard: Remove default padding for wizards having a border.
    * BUG: TabPanel[].Closable works as expected now.
    * BUG: FileView: When setting the Current property, the current item is
      made visible later.
    * BUG: ButtonBox.FilterNow always raises the Filter event now.
    * BUG: FileView: Fix a possible crash when the current item disappears
      before begin made visible.
    * BUG: MenuButton: Draw the focus state correctly.
    * BUG: MaskBox: Setting the Mask property now clears the text only if it
      does not match the new mask. That allows the IDE to define the initial
      value of the Text property.
    * NEW: Add a copy menu entry to the FileChooser and DirChooser controls.
    * NEW: New stock icon named "download".
    * NEW: ListEditor is a new control that allows to edit the contents of a
      ListBox control.
    * NEW: Update German translation.
    * NEW: Completion is a new class to implement automatic completion on an
      already existing TextBox.
    * NEW: DirChooser & FileChooser: The popup menu is available when clicking
      on the bookmark button representing the top-level directory.
    * NEW: DirChooser & FileChooser: The root button now goes to the current
      root when bookmarks are hidden.
    * NEW: FileProperties: Preview of audio files, provided that the gb.media
      component has been loaded.
    * NEW: New 'muted' stock icon.
    * NEW: DocumentView is a new widget that allows to display documents such
      as pdf, printing previews, pictures... and so on. It allows zooming, and
      will have differents options for arranging the pages. Each page can have
      it's own size and orientation property.
    * NEW: The SliderBox is now in the same change group as Slider.
    * NEW: SwitchButton: Handle the keyboard and take the focus into account.
    * NEW: MenuButton displays a focus rectangle now.
    * NEW: URLLabel is a new control that displays a clickable URL. If the
     'gb.desktop' component is loaded, then a browser is automatically opened
      when clicking on the link.
    * NEW: Wizard.ActionText and Wizard.ActionPicture are two new properties to
      define the contents of the final 'OK' wizard button.
    * NEW: DirChooser & FileChooser: Draw a little arrow instead of a big arrow
      in the top directory box.
    * NEW: ButtonBox: ClearButton is a new property that enabled a clear button
      besides the standard ButtonBox button. The 'Clear' event is raised when
      the clear button is clicked.
    * NEW: Format files sizes with two decimals.
    * NEW: Wizard.Animated is a new property that animates the wizard when
      going to the next or previous step.
    * NEW: IconPanel tabs can be individually hidden, by using their Visible
      property.
    * NEW: Three new stock icons: "development", "multimedia" & "office".
    * NEW: Wizard.ShowButton is a new property that allows to hide the wizard
      buttons.
    * NEW: ButtonBox.Filter is a new property to make it act like a filter box.
      The new Filter event is raised when filtering must be triggered.
    * NEW: ButtonBox.FilterMenu is a new property that allows to define the
      popup menu associated with the filter icon.
    * NEW: ColorPalette is a new control that allows to select a color among a
      predefined list of colors.
    * NEW: TabPanel[].Closable is a new property that defines if a specific tab
      has a close button.
    * NEW: ColorPalette.ReadOnly is a new property to prevent the palette
      contents to be modified.
    * NEW: ColorPalette.AddFirst() is a new method that adds a color to the
      beginning of the palette.
    * NEW: ColorPalette now has a popup menu to remove or sort colors.
    * NEW: ColorPalette.Index is a new property to define or get the index of
      the current color. The current color is drawn with a big black border.
    * NEW: ColorPalette.Current is a new property to define or set the current
      color.
    * NEW: ColorChooser now uses a ColorPalette.
    * NEW: Redraw some control icons.
    * NEW: FileCompletion is a new class that implements automatic file name
      completion.
    * NEW: MessageView is a new control that implements an embedded
      notification panel that is automatically hidden and shown if there is a
      message to display.
    * NEW: ColorPalette.Exist() is a new method that returns if a specific
      color exists in the palette.
    * NEW: Completion.Icons is a new property that allows to associate an icon
      to each completion item.
    * NEW: ValueBox now raises a Change event when its content changes.
    * NEW: MaskBox: The Clear() method now takes the focus into account.

    [GB.FORM.MDI]
    * NEW: Workspace.Picture property has been replaced by a Workspace.Image
      property that takes an Image instead of a Picture. The Workspace.Picture
      property has been deprecated.
    * NEW: Workspace: Try to minimize flickering during resizing. Not very
      successful.
    * NEW: Support for "huge" toolbar icons.

    [GB.FORM.STOCK]
    * BUG: Fix 'development.svg' that had unknown SVG urls, and consequently
      the "Could not resolve property" warnings displayed by the IDE now are
      gone.
    * NEW: New default icons for "download" stock icon.
    * NEW: New 'muted' stock icon.
    * NEW: New stock icons.

    [GB.GEOM]
    * BUG: RectF: Fix the implementation of several methods and properties.

    [GB.GTK]
    * BUG: Correctly interpret "&#xxx;" HTML entities in rich text.
    * BUG: Start fixing drag and drop.
    * BUG: Clipboard.Copy() now works for all text formats.
    * BUG: Use GtkSelectionData accessor function.
    * BUG: Ensure that the Embedder background is painted.
    * BUG: TextBox: Postpone the Change event so that replacing the selection
      raises a unique Change event.
    * BUG: Ensure that Clipboard.Paste() behaves the same as in gb.qt4.
    * BUG: Fix get_style function() to use GType and not integer. Fix crash
      issue with X Win in CygWin.
    * BUG: Fix an uninitialized variable.
    * BUG: Fix warning with Slider or SpinBox when setting a minimum value
      equal to the maximum value, or the contrary.
    * BUG: Menus opened through the PopupMenu property work correctly now.
    * BUG: Implement the Invert property in vertical containers.
    * BUG: Redesign the keyboard event management so that it works with all
      input methods.
    * BUG: Fix a possible GTK+ warning when drawing widget borders.
    * BUG: Do not crash when a piece of rich text contains the "</>" string.
    * BUG: Fix arrangement of ScrollView control.
    * BUG: Fix crash when using read-only ComboBox.
    * BUG: Closing a window now should not lose FocusOut events anymore.
    * NEW: Link to the pthread library explicitly.
    * NEW: WAIT inside a keybord handler now prints a warning message and does
      nothing, only if a duration is specified.
    * NEW: PictureBox.Padding is a new property that defines the inner padding
      around the displayed picture.
    * NEW: If the GB_X11_INIT_THREADS environment variable is defined to a non-
      null integer number, the X11 client library is initialized to support
      multithreaded applications.
    * NEW: Now Frame can be replaced by any Panel-like containers in the IDE.
    * NEW: Window.TakeFocus is a new property that indicates if the window will
      take the focus the first time it is mapped.

    [GB.GTK3]
    * BUG: Correctly interpret "&#xxx;" HTML entities in rich text.
    * BUG: Start fixing drag and drop.
    * BUG: Remove two symbolic links on source files that do not exist anymore.
    * BUG: Clipboard.Copy() now works for all text formats.
    * BUG: Use GtkSelectionData accessor function.
    * BUG: Ensure that Clipboard.Paste() behaves the same as in gb.qt4.
    * BUG: Correct get_style function to use GType and not integer.
           Resolves issue with X Win crash in cygwin
    * BUG: Fix an uninitialized variable.
    * BUG: Fix warning with Slider or SpinBox when setting a minimum value
      equal to the maximum value, or the contrary.
    * BUG: Paint.Reset() now works as expected on non-cached DrawingArea.
    * BUG: Menu opened through the PopupMenu property work correctly now.
    * BUG: Implement the Invert property in vertical containers.
    * BUG: Redesign the keyboard event management so that it works with all
      input methods.
    * BUG: Fix a possible GTK+ warning when drawing widget borders.
    * BUG: Do not crash when a piece of rich text contains the "</>" string.
    * BUG: Fix arrangement of ScrollView control.
    * BUG: Fix crash when using read-only ComboBox.
    * BUG: TextArea now has a minimum size, as GTK+3 crashes when they are too
      small.
    * BUG: Correctly handle widget grabs, i.e. popups, modal dialogs...
    * BUG: Read-only combo-boxes do not prevent windows to shrink vertically.
    * BUG: SpinBox does not expand horizontally up to the right border of its
      parent anymore.
    * BUG: SpinBox: Use a larger minimum width.
    * NEW: Link to the pthread library explicitly.
    * NEW: WAIT inside a keybord handler now prints a warning message and does
      nothing, only if a duration is specified.
    * NEW: PictureBox.Padding is a new property that defines the inner padding
      around the displayed picture.
    * NEW: If the GB_X11_INIT_THREADS environment variable is defined to a non-
      null integer number, the X11 client library is initialized to support
      multithreaded applications.
    * NEW: Window.TakeFocus is a new property that indicates if the window will
      take the focus the first time it is mapped.
    * NEW: ComboBox height can be smaller now.

    [GB.GUI.BASE]
    * BUG: TreeView renaming works now if the renamed item is not visible.
    * BUG: IconView item renaming does not crash anymore.
    * BUG: ProgressBar now raises native control events.
    * BUG: GridView.Select() with one argument now only selects one row, as
      stated by the documentation.
    * BUG: GridView: Remove "Collapse" from the property list.
    * BUG: GridView default row height now correctly follows font changes.
    * BUG: ListBox row height and column width now correctly follow font
      changes.
    * BUG: ListBox now correctly maintains its selection when items are removed
      or added.
    * NEW: ProgressBar now has a flat look. And a new Border property that
      allows to hide the border.
    * NEW: GridView: The background of the sorted column is now lighter.
    * NEW: The Border class is now creatable, and has a lot of new properties.
      It allows to draw complex borders anywhere.
    * NEW: Border.Paint() draws a border object according to the value of its
      properties: Style, Width, Radius, Color...
    * NEW: Border has margin properties now.
    * NEW: Border.Clip() is a new method to clip to the border inside.
    * NEW: The Border constructor can take an optional style argument. That
      style follows a CSS-like syntax.
    * NEW: Border.Copy() is a new method that returns a copy of a Border
      object.
    * NEW: GridView: cells now have a Border property. If it points at a Border
      object, that border will be drawn in the cell.
    * NEW: Border: Properties for diagonal strikes.
    * NEW: Border: The Paint and Clip methods now take neighbourg borders as
      optional arguments. When a neighbourg is specified, their opposite
      margins are collapsed.
    * NEW: GridView.Rows[].Border is a new property to define the border of an
      entire row.
    * NEW: GridView.Rows.Border is a new property to define the default row
      border.
    * NEW: Border.GetRect() is a new method that returns the available border
      inside as an integer rectangle.
    * NEW: Border(...) now create a new Border object, like the constructor.
    * NEW: Border.IsVoid() returns if the Border object will actually draw a
      border. The slash and backslash strokes are not taken into account.
    * NEW: The GridView automatic column resizing now uses Application.Busy and
      cannot run longer than five seconds.
    * NEW: ScrollArea.UseMouse is a new property. When set to FALSE, the
      mouse wheel will not automatically scroll the ScrollArea contents.
    * NEW: ScrollArea now raises a Font event when its font has changed.
    * NEW: ScrollArea shadows are smaller now.
    * NEW: ListBox.Remove() now takes a new optional Length argument.

    [GB.JIT]
    * BUG: IIf generated incorrect code for the types CSTRING and STRING.
    * BUG: Ensure that llvm version is between 3.1 and 3.5, as llvm 3.6 JIT has
      been replaced by a new one that is not compatible.

    [GB.LOGGING]
    * BUG: Added missing EXPORT.
    * NEW: Use handlers so that each logger can output to multiple
      locations, and several loggers can share a handler.
    * OPT: Allow anonymous ussage of the Logger class.
    * OPT: Make it backwards compatible with the previous implementation of
      gb.logging.

    [GB.MAP]
    * BUG: Now the proj class takes and returns MapPoints convertion the right
      way.
    * BUG: The WMS is really working now and _maptile layer is now able to tile
      and cache a BBoxed wms rendered map.
    * NEW: An external httpserver can be instanciate to load layer maps. This
      is useful when the server queries a specific way to access to wms
      permissions.
    * NEW: New property ClearCache(Optional Days) that removes files from cache
      according to the distance time in day. Or all files if they're is no days
      given as arguments.
    * NEW: Upgrade the gb.map status to Not Terminated but stable.

    [GB.MARKDOWN]
    * BUG: Remove the useless Markdown.Root property.
    * BUG: Don't forget to close the last paragraph.
    * BUG: The list syntax works correctly again.
    * BUG: <hr> are now only generated from lines including only '*' or '-'. No
      space is allowed anymore.
    * BUG: Fix replacement of lines of dashes by '<hr/>' markup.
    * NEW: Close the mismatched markup before displaying the error.
    * NEW: Support for "standard" markdown ordered list syntax.

    [GB.MEDIA]
    * BUG: MediaPipeline.Pause() does nothing if the media is not playing. That
      avoid some GStreamer bad behaviour.

    [GB.MEDIA.FORM]
    * BUG: MediaView: The Control property has been renamed as ShowControl.
    * BUG: MediaView: Do pause or stop the media file only if it has sense.
    * BUG: MediaView: Don't crash if the internal media player is not yet
      initialized.
    * NEW: MediaView: New methods: Play, Pause, Stop.
    * NEW: MediaView: The URL property can receive a true URL or a file path.
      The conversion is automatically done.
    * NEW: MediaView: Hide the video part if the control height is too low.

    [GB.MEMCACHED]
    * BUG: Fix a typo in a Memcached constant name.
    * BUG: Fix compilation of the component.

    [GB.MIME]
    * BUG: MimePart.Data does not crash anymore if the mime part is void.
    * BUG: MimePart.ContentType is actually a read-write property.

    [GB.NET]
    * BUG: Fix a function declaration.
    * BUG: Fix the DnsClient properties description: it is synchronous by
      default.
    * BUG: Fix SerialPort.DTR property.
    * NEW: Support for GNU/Hurd.

    [GB.NET.CURL]
    * BUG: Found a workaround for having accurate upload progress data.
    * BUG: HttpClient: Internal header array is now correctly managed.
    * BUG: Rename CURL_CopyFrom function to CURL_copy_from as defined in
      CCurl.h and used in CHttpClient.c. Enables compilation on Cygwin.
    * NEW: Add a Gambas part to the component.
    * NEW: HttpForm is a new class that inherits HttpClient and that allows to
      post HTML forms easily.
    * NEW: HttpClient and FtpClient now raise a 'Cancel' event when their
      Stop() method is called.
    * NEW: HttpClient.CopyFrom() is a new method that allows to fill an
      HttpClient object with the configuration of another HttpClient object.
    * NEW: HttpClient: Add a TargetFile property that allows to override the
      corresponding argument in Get(), Put() and Post() methods.

    [GB.NET.SMTP]
    * BUG: SmtpClient: Correctly detect when connection fails in SSL or TLS
      mode. Raise an error instead of eating the CPU in an infinite loop.
    * NEW: Add a Content-Disposition header to attachments.

    [GB.OPENSSL]
    * BUG: Cipher: Fix memory leaks from returning strings.
    * BUG: Cipher[...].Encrypt() now passes the three mandatory arguments when
      creating a CipherText.
    * BUG: Fix memory errors from Cipher.List and Digest.List
    * NEW: Return Cipher.List and Digest.List sorted without duplicates

    [GB.PCRE]
    * BUG: RegExp.Replace() now replaces once if the pattern starts with "^".
    * BUG: MATCH operator: A void string now only matches a void string.

    [GB.PDF]
    * BUG: Check for the availabilty of private poppler headers.

    [GB.QT4]
    * BUG: Application.PreviousControl returns the expected value now.
    * BUG: Sometimes assigning Paint.Font has no effect. Workaround that
      strange Qt bug.
    * BUG: Fix Clipboard.Paste() when there are both a text and a qt image in
      the clipboard.
    * BUG: The Menu.Checked property now returns the correct value for
      non-radio menu items.
    * BUG: TextBox: Workaround a Qt4 weird behaviour that sometimes lose the
      selection. Same workaround for editable ComboBox.
    * BUG: ScrollView layout algorithm now takes the margin into account
      correctly.
    * BUG: Don't crash when a modal dialog is destroyed while visible.
    * BUG: Close the main window explicitly during the QUIT instruction.
    * BUG: Message boxes now use the current modal dialog as parent if there is
      no active window.
    * BUG: Do not use 'QEventLoop::DeferredDeletion' anymore, it is deprecated.
      Use qApp->sendPostedEvents() instead.
    * BUG: ScrollView: Layout is now correct if the ScrollBar property is set
      to Scroll.None.
    * BUG: Don't fill the menu bar background. Let it be transparent.
    * BUG: Implement the Invert property in vertical containers.
    * BUG: Do delete open windows later when the event loop is finished.
      This is supported by QT, provided that you explicitly ask him to send the
      deferred deletion events.
    * BUG: Paint.Dash now understands zero widths like gb.gtk.
    * BUG: Fix compilation with Qt <= 4.6.
    * BUG: Simplify the clipping management, because the old one was based on
      the QPainterPath::intersected() Qt method that is buggy. Clipping mixed
      with world transform matrix has still to be checked.
    * BUG: Fix Border properties description.
    * BUG: Setting the Border property now correctly refreshes the viewport
      size.
    * BUG: Newlines characters are not ignored anymore in message boxes when
      rich text is used. The behaviour is now the same as in gb.gtk.
    * NEW: Link to the pthread library explicitly.
    * NEW: PictureBox.Padding is a new property that defines the inner padding
      around the displayed picture.
    * NEW: If the GB_X11_INIT_THREADS environment variable is defined to a non-
      null integer number, the X11 client library is initialized to support
      multithreaded applications.
    * NEW: WAIT inside a keybord handler now prints a warning message and does
      nothing, only if a duration is specified.
    * NEW: A newly created control becomes visible the first time it is resized
      now, and not immediately. The goal is having almost the same behaviour as
      gb.gtk, even if it not 100% backward-compatible in a few cases.
    * NEW: Now Frame can be replaced by any Panel-like containers in the IDE.
    * NEW: When creating a Control, a Printer or displaying a MessageBox, check
      that the GUI has been initialized, and raise an error if not, instead of
      letting Qt abort the application.
    * NEW: Window.TakeFocus is a new property that indicates if the window will
      take the focus the first time it is mapped.

    [GB.QT4.EXT]
    * BUG: Editor: Don't draw line numbers if the margin is hidden.
    * BUG: Changing the Editor.KeywordsUseUpperCase property does not break
      syntax highlighting anymore.
    * NEW: Editor.Font property now can take any font in the IDE.
    * NEW: Editor.EndOfLine is a new property that defines which end-of-line
      format (gb.Unix, gb.Windows or gb.Mac) is used when retrieving text from
      the control.
    * NEW: Editor: When setting the Text property, the end-of-line format is
      automatically guessed.

    [GB.QT4.WEBKIT]
    * BUG: WebView: Don't raise the Error event if the webview has been
      explicitly stopped by the Stop() method.
    * NEW: WebView.History is a new virtual access to get the number of entries
      in the history, to set or get the current history entry index, and to get
      or set the history maximum capacity.

    [GB.REPORT]
    * BUG: Now you can choose a non existing file in the openbox for saving as
      pdf.
    * BUG: The parsing of options now works as expected.
    * BUG: Now if an element is the first listed after fixed ones and if its
      height is greater than the remaining space, its height is set to the
      remaining space and the content is clipped. So there is no more problem
      of infinite loop.
    * BUG: ReportImage now takes care of strech mode for computing the needed
      size.
    * BUG: The ReporView now shows all the report pages.
    * BUG: Fix some errors on layout page count.
    * NEW: The default autoresize size of an image is based on a standard
      resolution of 96 dpi.
    * NEW: Mark component as deprecated.

    [GB.REPORT2]
    * NEW: This is a new reporting component that is similar (and better) than
      gb.report, but that is not fully backward compatible. Hence the new
      version. It uses the new DocumentView control for implementing the
      automatic preview of the report.

    [GB.SCANNER]
    * NEW: New component that provide classes to manage scanners devices via
      gambas code. It is a frontend to the 'scanimage' binary provided by the
      SANE toolkit.

    [GB.SDL2]
    * NEW: This is a new component that similar to gb.sdl, but that uses the
      SDL2 library instead.

    [GB.SDL2.AUDIO]
    * NEW: The audio part of the SDL2 component. It's the old gb.sdl.sound
      without the CD-Rom support, but with a few more features planned.
    * NEW: Now Channel is creatable, and returns the first available channel
      that has never been used.
    * NEW: Channel now raises the Finish event when it has finished to play its
      sound.
    * NEW: Channel.Index is a new property that returns its channel number.
    * NEW: Channel.Distance is a new property that defines the channel
      distance, between 0 (near) and 255 (far).
    * NEW: Channel.Angle is a new property that defines the channel direction,
      0° being the front, 90° the right, 180° behind and 270° the left.
    * NEW: Channel.Reverse is a new boolean property that reverses the channel
      stereo.
    * NEW: Music.SoundFontPath is a new property to tell SDL the directories
      where the MIDI sound font files are stored.

    [GB.SETTINGS]
    * BUG: Settings.Clear() now really clears the entire settings.
    * BUG: Erasing a settings is correctly saved in all cases now.
    * BUG: Fix settings saving routine.
    * BUG: Settings.Clear() now works correctly.
    * BUG: Settings.Keys does not return a key slot if it is void.
    * OPT: Settings.Save() now does not save all the keys anymore, but only the
      modified one. That allows several programs running simultaneously to
      share the same settings file.

    [GB.UTIL]
    * NEW: New interpreter utility routines component.
    * NEW: Date.ToUnixTime() and Date.FromUnixTime() are two new methods to
      convert between Date and Unix timestamp.
    * NEW: File.FormatSize() formats a file size in bytes, KiB (1000 bytes),
      MiB (1 000 000 bytes), and GiB (10^9 bytes).
    * NEW: Date.EasterDay returns the Easter day of a specific year greater
      than 1583.

    [GB.UTIL.WEB]
    * NEW: A new component that provides useful routines for web applications.
      They were located in gb.web before.

    [GB.V4L]
    * BUG: Fix typo in error messages.

    [GB.WEB]
    * NEW: The default response content type is now HTML with UTF-8 charset.
    * NEW: 'gb.util.web' is now automatically loaded, to provide
      backward-compatibility with Gambas 3.6 applications using 'gb.web'.

    [GB.XML]
    * BUG: Parsing errors are now correctly thrown.
    * BUG: Fixed some memory leaks when an error is raised.

## Compilation and installation

Read the instructions there.

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

Enjoy it !

### See also

- Gambas 3.6.0