Gambas Documentation - /doc/release/3.6.0

# Gambas 3.6.0

- What's new

  - General

  - Development environment

  - Interpreter & compiler

  - Components

- ChangeLog

- Compatibility

- Compilation and installation

## What's new

This new release fixes 459 bugs, adds 465 new features and 22 optimizations.

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

Here is a summary of the main changes:

### General

- Support for GNU/kFreeBSD systems.

- Support for CygWin.

### Development environment

- New project open dialog.

- Support for session management.

- Offline help automatically downloaded from the wiki.

- The packager now handles GUI-independent projects by creating one package for each GUI component.

- Program crash dialog that can create a mail report automatically.

- The IDE now can open files outside of the project.

- The IDE now can open a single file without any project. Use the Gambas 3 IDE for editing your sqlite database files for example!

### Interpreter & compiler

- Array and Collection constructor operator `[` ... `]` now can take any number of arguments.

- IsMissing allows to check for a missing optional argument.

- The `...` token can be used for passing all the optional arguments of the current function to another function.

- Rand is a new function that returns an integer random number.

- Overriding a class that is the parent of other classes is possible again.

- System.Log is a new method that sends a message to the system log.

### Components

- gb.data: graph interface, heaps and patricia tries.

- gb.db: support for field collations.

- gb.desktop: The X11 specific part has been put in its own x11 component.

- gb.desktop.x11: System tray container implementation.

- gb.form: New design for file and directory controls.

- Spinner is a new control that displays a rotating spinner.

- SwitchButton is a new control that displays an ON/OFF button.

- DirBox is a new control that allows to select a directory.

- FontBox is a new control that allows to select a font.

- gb.form.dialog: custom font selector dialog.

- gb.form.mdi: Workspace windows can now be detached.

- Session management support.

- Shadowed text drawing routines.

- Support for transparent windows, i.e. windows having a RGBA visual.

- New GTK+3 component!

- gb.inotify is a new component to monitor filesystem events with Linux' inotify interface.

- gb.markdown is a new component that implements the Gambas Markdown syntax.

- gb.media: A simple method to take a screenshot of a video frame.

- gb.media.form is a new component that provides a media player control.

- gb.net.smtp: the component has been entirely rewritten in Gambas and fixed.

- gb.sdl now uses a custom integrated bitmap font as default font.

## ChangeLog

    [CONFIGURATION]
    * BUG: Set Cygwin shared library extension to 'dll'.
    * NEW: Chinese translations updated.
    * NEW: Dutch translations updated.
    * NEW: Do not use deprecated autoconf macros anymore.
    * NEW: The version information is now located in the 'version.m4' file in
      the source root directory.
    * NEW: The GB_FIND macro now searches files one directory deeper.
    * NEW: Add an automake init flag to prevent warnings with recent versions
      of automake.
    * NEW: Add a new autoconf macro that can compare version numbers.
    * NEW: Support of GNU/kFreeBSD systems.
    * NEW: Add an gambas appdata file and install it in /usr/share/appdata.

    [DEVELOPMENT ENVIRONMENT]
    * BUG: Automatically solve conflicts on project configuration files by
      taking the ones from the repository.
    * BUG: Fix project browser cursor management when the focus is on the
      filter field.
    * BUG: Fix form editor control highlighting when the hovered control is a
      ScrollView.
    * BUG: Packager now use the current Gambas major & minor version as minimum
      version for component dependencies.
    * BUG: Follow Ubuntu package naming convention.
    * BUG: Some fixes in GUI metapackage creation for Debian/Ubuntu.
    * BUG: Automatic completion of identifiers now correctly shows the known
      classes.
    * BUG: Correctly display optional values in signatures.
    * BUG: Fix the procedure list fill routine in the text editor.
    * BUG: Now the report borders are shown correctly in the editor
    * BUG: Support for subversion >= 1.8.
    * BUG: The property help WebView now uses the same default font size (80%)
      than the help window.
    * BUG: Fix management of translated button or menu texts ending with "...".
    * BUG: The 'Clean up' project function really cleans up everything now.
    * BUG: Splitting view shortcuts now act like toggles.
    * BUG: Fix the memory leaks of the new automatic completion.
    * BUG: Fix HTML compression so that everything is not put on the same line.
    * BUG: Automatically remove the ".lang/.pot" file from version control, as
      it is a generated file, and as its conflicts cannot be resolved.
    * BUG: Fix the subversion conflict management.
    * BUG: Raise the svn commands timeout to 30 seconds: some commits can take
      a long time.
    * BUG: In the menu editor, the last menu can be move up now.
    * BUG: Fix popup menu when clicking on the "Data" project tree folder.
    * BUG: File property dialog: The 'Revert' button is correctly hidden now.
    * BUG: Menu editor: Fix the highlight of the current menu.
    * BUG: Menu editor: Fix the menu search box.
    * BUG: Form editor: Correctly hide and show toolbar entries according to
      the current state (debugging, read-only...).
    * BUG: Form editor: Formatting toolbar buttons act on the entire form if
      nothing is selected now.
    * BUG: Don't set the focus to the console if it is hidden.
    * BUG: Use the same icon for the option dialog and its corresponding
      toolbar icon.
    * BUG: Packager: Fix *.deb package description.
    * BUG: Use '/etc/os-release' to know the SuSE version, instead of
      '/etc/SuSE-release' which is deprecated.
    * BUG: Image editor: Don't left the editor in an inconsistent state after a
      paste has been done.
    * BUG: Form editor: When double-clicking on a control, don't crash if a
      there is a mistake in its default event declaration. Just display a
      warning message on the standard error output.
    * BUG: The "open terminal" and "open file browser" toolbar icons now work
      as expected.
    * BUG: The report editor take the ReportLabel rotate angle (in degree)
      into account.
    * BUG: Fix background of CoordBox controls.
    * BUG: Image editor: Scaling selection is done from the top left corner by
      default, and from the selection center only if you press the SHIFT key.
    * BUG: Project property dialog: Fix component list layout.
    * BUG: Write project configuration before making an executable or a source
      archive, so that their contents is up to date.
    * BUG: Read-only files now can be reloaded.
    * BUG: Form editor: The read-only status is correctly refreshed in all
      cases now.
    * BUG: Packager: Ensure that *.deb changelog does not use lines longer than
      80 columns.
    * BUG: Fix how CoordBox control is drawn.
    * BUG: Form editor: Property tool buttons are now hidden correctly.
    * BUG: Image editor: The clipboard tab of the image toolbox is updated
      correctly now.
    * BUG: The GUI component menu button is updated correctly in all cases now.
    * BUG: Text in ReportLabel is now drawn with antialiasing as expected.
    * BUG: Fix automatic completion with non-ASCII characters.
    * BUG: Fix word separators in text editor automatic completion.
    * BUG: Don't freeze when loading an older version of a component project
      that misses some classes implemented in the newer versions of the
      component.
    * BUG: Patch: the gambas-patch-ignore file is now chmod'd to 'rw-------'.
    * BUG: Fix the analyze of exported classes that override a class from a
      component.
    * BUG: Fix integer properties reading when loading a form.
    * BUG: All forms types are supposed to be their own event observer.
    * BUG: Some fixes in wiki URLs used by the help system.
    * BUG: Automatically redirect to gb.qt4 and gb.qt4.opengl help from other
      GUI components.
    * BUG: Make splitted views visible with dark themes.
    * BUG: Splitted views now work as expected in text editors, not just in
      source code editors.
    * BUG: Some fixes in the help system.
    * BUG: If we are opening a project having the same name as the component,
      then that project is assumed to be the gambas part of the component. And
      so the classes described in the '.info' file can be actually part of the
      gambas part and must not be processed.
    * BUG: Fix building of project classes help pages.
    * BUG: The user font config file is "~/config/fonts.conf", not
      "~/config/.fonts.conf".
    * BUG: Remove a debugging message.
    * BUG: Image editor: Fix alignment in the text draw routine.
    * BUG: Image editor: the text and grid properties are now visible only if
      needed.
    * BUG: Fix Gambas font files so that all characters have the same width in
      the same font.
    * BUG: Disable replace controls in the search dialog when searching the
      output window.
    * BUG: Help on function argument is correct now.
    * BUG: Reset correctly the Application.Busy property after a program has
      crashed.
    * BUG: Image editor: Fix the "paste" tool.
    * BUG: Form editor: Setting the "Invert" property of a container now does
      not crash anymore.
    * BUG: Don't check conflict on project configuration file if that files
      does not exist.
    * BUG: Make the IDE depends explicitely on 'gb.desktop.x11'.
    * BUG: Fix automatic conflict resolution on project configuration files.
    * BUG: Sort the database list in the connection dialog.
    * BUG: Correctly load information files on component classes overriden by a
      project class.
    * BUG: Remove Firebird from the database drivers list.
    * BUG: Fix the custom browser support.
    * BUG: Remove shortcuts from the tooltips of the translation dialog
      buttons.
    * BUG: Fix help URLs of non-english languages.
    * BUG: Subversion: Fix automatic conflict resolving of configuration files.
    * BUG: Creating a new SDL project correctly checks all needed components.
    * BUG: FPatch: Allow binary patches to be applied.
    * BUG: Patch: Check by header if a file is a patch file.
    * BUG: Fix copy & paste in the form menu editor.
    * BUG: Fix GUI for single-file mode.
    * BUG: Converting into lower or upper case now keep the selection as
      expected.
    * BUG: Catch errors again if loading a profile file fails.
    * BUG: Fix a possible crash when highlighting source code positions in the
      output window.
    * BUG: Hitting ENTER key in the project tree filter now works correctly,
      and open the first matching file if none is selected.
    * BUG: Fix a crash in the menu editor when inserting a new item.
    * BUG: Fix a typo in english tips.
    * BUG: The close menu now works for all editors in single file mode.
    * BUG: Form editor: Selecting a control ensures that it is visible if one
      of its parent is a multi-container.
    * BUG: Correctly hide compress & uncompress actions.
    * BUG: Fix a crash when opening the help browser after the F2 key has been
      hit.
    * BUG: Webkit seems to not like encoded square brackets in 'file://' URLs.
      So don't encode them.
    * BUG: Don't crash when opening the translation dialog whereas no project
      string is translatable.
    * BUG: ImageEditor: Fix a possible crash when pasting an image.
    * BUG: Correctly detect if a project is handled by subversion or not.
    * BUG: Console echo command now works as expected when the project is
      running.
    * BUG: Correctly handle truncated profile files when the debugged project
      has been suddenly stopped.
    * BUG: Try to fix the position history management.
    * BUG: Fix project lists layout when they are filtered.
    * BUG: Image editor: Fix magic wand tool.
    * BUG: Correctly initialize ProjectChooser control.
    * BUG: Convert to uppercase or lowercase now works as expected in the code
      editor.
    * BUG: FPatch: Fix a possible crash when trying to disable a hunk when no
      row was selected
    * BUG: Fix background color of code editor tooltip messages.
    * BUG: Fix project list filter when hitting RETURN.
    * BUG: If the build directory does not exist, make the executable inside
      the project directory in all cases.
    * BUG: Fix the routine that checks for program availability.
    * BUG: FMakePatch: Don't require a destination file name to view the patch.
    * BUG: The component description file is now correctly updated when the
      project properties change.
    * BUG: Create an initial component description file when needed.
    * BUG: Fix a crash at startup if there is no IDE configuration file.
    * BUG: Fix ArchLinux package creation when a vendor prefix is used.
    * BUG: Fix Slackware package creation too.
    * BUG: Don't say that the class is creatable when displaying help from
      comments, if the class has no '_new' public method.
    * BUG: Clicking on the paste button correctly set the focus back to the
      editor.
    * BUG: Activating the form editor property sheet now disable the form
      editor poup menu. Consequently, the delete shortcut is not triggered
      unexpectedly anymore.
    * BUG: Correctly reset position buttons when a project is loaded.
    * BUG: Text editor: Fix word delimiter characters for automatic completion.
    * BUG: Help browser: Mark class as creatable if they don't have a
      constructor but have dynamic variables.
    * BUG: Fix the behaviour of the file creation dialog. The filter of the
      "existing" tab is now always set according to the type of file selected
      in the first tab.
    * BUG: When browsing the entire project, skip *.WAV and *.OGG files, and
      check that the file is not binary as last resort.
    * BUG: When converting a Gambas 2 project, correctly replace Arrangement.
      LeftRight by Arrangement.Row and Arrangement.TopBottom by
      Arrangement.Column.
    * NEW: The system information dialog now displays the Gambas version.
    * NEW: The 'gb.desktop.gnome' component is now visible and explicitely
      checkable.
    * NEW: If a project uses gb.gui, then the packager will create two extra
      packages: one for Qt4 support, the other for GTK+ support. At the moment,
      this is supported only for Debian/Ubuntu.
    * NEW: Support for package version number.
    * NEW: Display help for third-party components.
    * NEW: Add Afrikaans to the language list.
    * NEW: Add Willy Raets to the list of contributors.
    * NEW: Update the Gambas size 12 fonts (medium and bold).
    * NEW: Add Gambas size 13 fonts (medium and bold).
    * NEW: Added $PROJECT, $USER and $DATE macro atoms. These are handy if you
      write your own code snippets.
    * NEW: A new menu to open any arbitrary files inside the IDE.
    * NEW: '&' shortcuts are automatically removed from the translatable
      captions of the following controls: Menu, Button, CheckBox, RadioButton,
      ToolButton, ToggleButton, DataCheckBox. The leading "..." are removed
      too. Now, for example, "&About..." and "About" lead to the same
      translated string. Consequently the number of translatable strings of the
      IDE project is 7% lower.
    * NEW: A menu entry in the "Tools" menu allows to update all forms, so that
      the previous features can be tested easily. Save your projects before!
    * NEW: Translation imports now automatically extracts translations from
      strings having "&" shortcuts inside and leading dots ("...").
    * NEW: Implement automatic completion in text editors.
    * NEW: Add "GB_REVERSE=1" in the environment variable list of the project
      properties dialog.
    * NEW: Display a warning message in the IDE window title for both alpha and
      development versions.
    * NEW: For projects whose version is read from a text file, automatically
      save the project version at project loading if it has changed on disk.
    * NEW: Project tree: Add a project filter to show all files in conflict.
    * NEW: Project converter: try to not crash if the Gambas 2 project has been
      partially converted.
    * NEW: The debugger now can be told to break the program on any error.
    * NEW: Statistic tab in the project property dialog.
    * NEW: Add a toolbar button to define the GB_GUI environment variable in
      one click. This button is visible only if the project uses the gb.gui
      component (and if it has been added to the toolbar of course!).
    * NEW: Add GTK+3 to the system information dialog.
    * NEW: Check the current GUI component in its popup menu.
    * NEW: Option dialog: Use SwitchButton instead of ComboBox.
    * NEW: ImageEditor: A text tool has been added.
    * NEW: Image editor: The mouse wheel now zooms the image.
    * NEW: Some new backgrounds.
    * NEW: Add a "paste special" entry in the popup menu of the paste button.
    * NEW: Update czech translation.
    * NEW: Form editor: Property tool buttons now work accordingly to the type
      of the edited form (Form, Report...).
    * NEW: Add gb.markdown component.
    * NEW: New option to run a program inside a true virtual terminal, but its
      standard error output is redirected to the IDE console.
    * NEW: FMakePatch: Save chosen paths (old source archive, old project, patch
      file name) in the project's .settings.
    * NEW: FPatch: Save last loaded patch in .settings.
    * NEW: Re-read the entire project after patching/reverting since a patch can
      change version numbers, components used, etc..
    * NEW: Menu shortcut for defining a class or a form as startup class has
      been removed from the editor (but not from the project tree).
    * NEW: A new menu to run a specific form as if it was the startup class.
    * NEW: Support for "Angle" properties. These properties are integer
      properties that represent an angle in degrees. Radians are not supported
      at the moment.
    * NEW: Added the shortcut information in the buttons on the translate form.
    * NEW: Updated the Brazilian Portuguese translation.
    * NEW: The 'F2' key now can jump from a GOTO or GOSUB instruction to its
      target label.
    * NEW: Spanish translation updated.
    * NEW: Use the new wiki for the documentation.
    * NEW: New program crash dialog that can send a bug report by mail with all
      the details inside.
    * NEW: Add an "add everything to repository" menu entry.
    * NEW: The image editor text tool now has twelve buttons to define the text
      anchor.
    * NEW: Image editor: Rework the text tool alignment interface.
    * NEW: Remove now useless text tool icons.
    * NEW: Add a text entry under the output console to evaluate expressions,
      with history. The console output is now read-only.
    * NEW: An option to toggle comments automatic insertion.
    * NEW: Add a echo button in the output console, that echoes the entered
      command.
    * NEW: Update error messages.
    * NEW: Add a new background generated from the QuasiRegular new example.
    * NEW: Define the description of the gb.notify component.
    * NEW: Image editor: Now pasting an image is done by clicking again on the
      paste icon. The ESC key resets the pasting process.
    * NEW: Image editor: The "paste" tool now takes the current opacity into
      account.
    * NEW: Automatically create a ".gitignore" file in the project directory.
    * NEW: Do not store the executable path inside ".project" file anymore.
      Store it inside ".settings", so that it is not managed by subversion.
    * NEW: A Gambas project directory is now identify by a ".project" file that
      actually begins with the expected header.
    * NEW: Shrink the welcome window a bit if the window is too small.
    * NEW: Update czech translate
    * NEW: New menu entries for sorting text in text editor.
    * NEW: Add Chromimum to the list of browsers.
    * NEW: Add an IDE keyboard shortcuts help window.
    * NEW: A left mouse click with the CONTROL key jumps to the definition of
      a symbol, like the F2 key.
    * NEW: Use a transparent background in the about dialog, just to show that
      new feature.
    * NEW: Use the new ColorChooser.ShowCustom property.
    * NEW: Make debugging positions in the output window links to the source
      code. I should make that optional by the way...
    * NEW: Opening a SQLite database file automatically creates a new
      connection and open it in the database editor.
    * NEW: Redesign the form menu editor.
    * NEW: The IDE now can open a single extern file without any project. This
      is done internally by creating a temporary fake project. The GUI tries to
      adapt to that new mode, but this is not yet perfect.
    * NEW: Normalize the IDE window title.
    * NEW: A new button in the welcome dialog to open a single file.
    * NEW: Support for choosing LinkForeground and VisitedForeground system
      colors.
    * NEW: An option to toggle the display of current file name in the IDE
      window title.
    * NEW: Color chooser in forms now allows to select a transparent color.
    * NEW: Support for iceweasel browser.
    * NEW: When adding new project files, now you can insert several existing
      files in one shot.
    * NEW: Form editor: Add a "Select parent" menu entry that selects the
      parent of the master control of the current selection.
    * NEW: All files can be "locked". This is implemented by using the file
      write permissions. The old form locking mechanism has been removed.
    * NEW: Update translations by using the gambas.wiki project translations.
    * NEW: Centralize the help browser in a custom control.
    * NEW: The project tree view popup menu now has an entry for opening
      recently closed files.
    * NEW: Comment automatic insertion is now triggered only if [SHIFT]+
      [RETURN] is pressed. Not if just [RETURN] is pressed.
    * NEW: Support for automatic session management.
    * NEW: New design of recent projects and examples choosers in the welcome
      dialog and the project open dialog.
    * NEW: Support for classes defined twice in a component: once in the native
      part, once in the gambas part.
    * NEW: Use the new Paint.TrimText() method.
    * NEW: Add 'gb.media.form' to the list of components.
    * NEW: Support for the new GridView.Padding property.
    * NEW: Change the way GridView and TableView are represented in the form
      editor.
    * NEW: Use text shadow to draw project titles.
    * NEW: Make the environment Cygwin aware.
    * NEW: Profiler: Format data with the thousand separator.
    * NEW: Allow to choose the prefix characters when inserting a color.
    * NEW: Add a menu entry to open the current project tree directory in the
      system file manager.
    * NEW: Use the new WebSettings.Cache.Clear() method.
    * NEW: Add a little "open in another window" transient button in all items
      of the project list.
    * NEW: When hiding the menu bar, remove the popup message and add a button
      in the toolbar that shows the menu back instead.
    * NEW: FMakePatch: Add feature to view/edit patch before saving.
    * NEW: Procedure list contents is now sorted differently: public symbols
      first, and then static symbols first.
    * NEW: The project list filter now searches in the project description too.
    * NEW: Add the executable size in the project statistics.
    * NEW: Recent file list is now stored in the following file:
      '~/.local/config/gambas3/gambas3.recent.conf'
    * NEW: Support for the new Menu.Radio property.
    * NEW: Dutch translation corrected and updated.
    * NEW: Database editor: Support for the new Collation field property.
    * NEW: The option dialog was reorganized so that user identity information
      has itw own panel.
    * NEW: The user identity is now written inside translation files.
    * NEW: When renaming an item in the project treeview, the file extension
      is not selected.
    * NEW: Use the FontBox control in the option dialog.
    * NEW: New module type icons.
    * NEW: Create file dialog: Replace the deprecated ListContainer control by
      a ListView.
    * NEW: Update financial support.
    * OPT: Optimize project box control drawing routine.

    [OLD WIKI CGI SCRIPT]
    * NEW: Add a deprecation message in all wiki pages.

    [WIKI CGI SCRIPT]
    * NEW: New Gambas wiki CGI script. It replaces the old wiki.

    [WEB SITE MAKER]
    * BUG: Fix pages not located in the wiki.
    * NEW: Support for Dutch language.
    * NEW: Dutch translations.
    * NEW: Use the new wiki now.

    [EXAMPLES]
    * BUG: NeHeTutorial: Fix compilation error.
    * BUG: Update the googlemap version.
    * BUG: MediaPlayer: Buttons images are correctly resized at startup.
    * BUG: DnsClient: Don't use the special _free() method.
    * BUG: Database: Remove Firebird as option for connection type.
    * BUG: PdfViewer: Some little fixes.
    * BUG: PhotoTouch: Fix the example.
    * NEW: Move DBusExplorer example to the 'Misc' directory.
    * NEW: Add a new SerialPort example made by Claus Dietrich and remove the
      old example.
    * NEW: New SmallWiki example. This is a web application that implements a
      wiki based on the Gambas markdown syntax in less than 25 Kb.
    * NEW: Pong: Update uses of Window.Ask().
    * NEW: Add a new WaveGenerator example that plays a sinusoid wave whose
      frequency can be modified in realtime with a slider.
    * NEW: LCDLabel: New example.
    * NEW: Add the new RandomColorSort example, made by Louis W. Adams, Jr. and
      fixed by myself.
    * NEW: QuasiRegular: A new example that shows an example of a quasi-regular
      pattern.
    * NEW: MediaPlayer: video screenshot example inside the MTest module.
    * NEW: SystemTray is a new example that shows how to use the system tray
      support of the gb.desktop.x11 component.
    * NEW: BeastScroll: Add a keyboard shortcut that takes a screenshot, and
      add more text to the screen.
    * NEW: WatchGambasDirectory: gb.inotify example to demonstrate basic usage.
    * NEW: Dutch translations for the examples.
    * NEW: BeastScroll: Use the new default font scaling support.

    [INTERPRETER]
    * BUG: Don't detach a process that returns an error otherwise the Kill
      event is lost.
    * BUG: Correctly check that there is a current enumeration in the Enum
      class methods and properties.
    * BUG: The [] operator is now correctly overridden in classes inheriting an
      array class or Collection.
    * BUG: VarPtr() correctly works on method arguments.
    * BUG: Reading a string from a memory stream now works correctly.
    --- * BUG: Undo one change of last revision: reading a stream from a memory
      stream is a special case. It reads a null-terminated C string, and not a
      serialized Gambas string.
    * BUG: Fix the CLOSE instruction when dealing with a string stream.
    * BUG: Prevent crashes at exit by releasing array classes first.
    * BUG: String.InStr() does not crash anymore if the string pattern is void.
      It returns 0 instead (like InStr).
    * BUG: Don't crash if an unknown option is passed with the '-g' option.
    * BUG: Fix the LIKE operator whith "{...}" patterns.
    * BUG: Fix a crash when using CStr() on an object having a conversion
      function.
    * BUG: Be virtual even the first time when calling the [] operator!
    * BUG: Correctly close the standard error output of an ending process if
      its standard output has already been closed.
    * BUG: If an error is raised inside a TRY context, the Error.Backtrace
      property is reset to NULL. It does not keep its previous value anymore.
    * BUG: Fix the maximum number of array declaration in the same class.
    * BUG: Fix array creation operator when it has no arguments.
    * BUG: Fix a possible file descriptor leak when using LOCK.
    * BUG: The debugger does not change the Key property of collections anymore
      when displaying them.
    * BUG: Use interpreter API constants in 'gbx_watch.c' so that duplicate
      constants are removed.
    * BUG: Fix memory leak with Lower$() and Upper$() on some null strings.
    * BUG: Correctly drop arguments when using the new '...' symbol syntax.
    * BUG: Use a control variable to store the missing optional argument map,
      so that the JIT compiler is not trapped.
    * BUG: Add a small reserved area in the stack for the Eval() function, so
      that the debugger can return the contents of a variable after a stack
      overflow without raising a new stack overflow error and then crashing.
    * BUG: System.TimeZone now returns the accurate value, i.e. the number of
      seconds that must be *added* to go to UTC.
    * BUG: Forgot to add two source files.
    * BUG: Fix a string leak in program exit routine.
    * BUG: The Param class now can be used while debugging.
    * BUG: Fix a crash when running the Application_Error global error handler.
    * BUG: Fix a crash when the first use of a class symbol recursively calls
      the current function being executed.
    * BUG: When reading lines ending with a "Window" end-of-line sequence
      (CR+LF), the LINE INPUT instruction could sometimes forget to remove the
      first end-of-line character from the end of the line (CR).
    * BUG: A new Task now resets the state of its standard output stream to
      avoid side effects from its parent.
    * BUG: The stream available length function now correctly returns zero when
      it fails.
    * BUG: Disable profiling for forked tasks.
    * BUG: Fix Swap$() function.
    * BUG: Take the "GB_VIRTUAL_CLASS()" declaration into account to decide if
      a native class is virtual or not. Don't just check the dot prefix in the
      name.
    * BUG: Fix the 'Class' class declaration, so that is not virtual.
    * BUG: The PUSH CHAR byte code now works correctly with ASCII code greater
      than 127.
    * BUG: Displaying a Result object in the debugger does not crash anymore.
    * NEW: Support for the GB_PATH environment variable, that gives the Gambas
      interpreter path if set.
    * NEW: Enum.Stopped is a new property that returns if the current
      enumeration  has been stopped.
    * NEW: Make WRITE behave the same way as READ on a memory stream. I.e. it
      writes a null-terminated "C" string.
    * NEW: Display the error returned by the glibc when a locale cannot be set.
    * NEW: Allow the class conversion routine to define the target datatype by
      itself.
    * NEW: The debugger now can be told to break the program on any error.
    * NEW: System.BreakOnError is a new property that allows to set the
      internal "break on error" option at runtime. I don't know if it is
      actually useful, so I may remove it.
    * NEW: When a void string is sent to an extern function argument expecting
      a string, it is converted to a zero-length string instead of a null
      pointer.
    * NEW: Successives spaces in a regular expression pattern now acts like a
      single space.
    * NEW: Array and Collection constructor operator [ ... ] now can take any
      number of arguments. It is only limited by the maximum function size,
      which leads for example to about 32000 elements for a short array.
    * NEW: The GB.CanRaise() API now does not take the locked status of the
      parent object into account anymore. It really checks if an event has an
      event handler.
    * NEW: A new '-t' hidden command-line argument to support redirecting the
      standard error output to a named pipe.
    * NEW: A new '-s' command-line option to override the startup class defined
      in the project.
    * NEW: Use vfork() instead of fork() when running a child process. Use it
      only if the new process does not use a virtual terminal, does not run in
      a shell, or use a specific environment.
    * NEW: New LOCK ... WAIT ... syntax.
    * NEW: Collection.Key is writable now.
    * NEW: Now a method or property object datatype can be overridden by a more
      specialized one.
    * NEW: Support for the new '...' symbol usage in function calls.
    * NEW: Support for IsMissing().
    * NEW: System.TimeZone now takes the daylight saving time into account.
    * NEW: Rand() is a new function that returns an integer random number.
      Rand(X) returns a integer random number between 0 and X included.
      Rand(X,Y) returns a integer random number between X and Y included.
    * NEW: Raising an error during the program exiting is possible now.
    * NEW: Raise an error if an _exit method loads a new class. This is now
      forbidden!
    * NEW: GB.GetProperty() and GB.SetProperty() API now return TRUE when they
      have raised an error. FALSE is everything was ok.
    * NEW: Args.Max is a new property that returns Args.Count - 1.
    * NEW: Abs(True) now returns 1, and Abs(False) returns 0. It breaks the
      rule of TypeOf(Abs(x)) = TypeOf(x), but it is more useful while being
      backward compatible.
    * NEW: Args.All is a new property that returns all the command-line
      arguments as a string array. Not definitive: it may be removed in the
      future.
    * NEW: Replace the internal `class->state` variable by two boolean flags:
      `class->loaded` and `class->ready`.
    * NEW: Overriding a class that is the parent of other classes is possible
      again. I don't remember what prevented that to work, so I want to see.
    * NEW: Redefine FIONREAD for Cygwin.
    * NEW: Cygwin needs <strings.h> to avoid compiler issues when
      redefining strcasecmp etc.
    * NEW: A new API for browsing a directory recursively.
    * NEW: Add GB_DECLARE_STATIC() macro to declare native classes, and use it
      in many class declarations.
    * NEW: System.Log() is a new method that send a message to the system log.
      Useful if you write a daemon.
    * NEW: When running an external process, search the PATH environment
      variable before forking, so that if the program does not exist, an error
      is immediately raised.
    * NEW: System.Exist() is a new method that returns if a specific program
      can be found in the PATH environment variable.
    * NEW: System.Find() is a new method that returns the absolute path of a
      specific program according to the PATH environment variable.
    * NEW: The GB.Realloc() API now calls GB.Alloc() if the pointer to
      reallocate is null.
    * OPT: Move the string splitting routine in its own file and optimize it.
    * OPT: Define the TZ environment variable at startup if it not defined to
      prevent the glibc to stat the '/etc/localtime' file again and again.
    * OPT: Cache the last value of System.TimeZone during at most 10 minutes.

    [COMPILER]
    * BUG: Fix compilation of NOT LIKE, NOT BEGINS and NOT ENDS operators when
      they are not alone in an expression.
    * BUG: Prevent NEW and READ from being used without an affectation.
    * BUG: Fix array creation operator when it has no arguments.
    * BUG: Raise an error if a function has too many arguments or too many
      local variables.
    * BUG: Correctly drop arguments when using the new '...' symbol syntax.
    * BUG: Correctly raise a syntax error now when there is anything between
      the left part of an assignment and the assignment operator.
    * NEW: New OPEN STRING instruction.
    * NEW: OPEN MEMORY and OPEN PIPE are synonymous of the MEMORY and PIPE
      instructions alone.
    * NEW: Allow a CASE expression list to spread among the next line provided
      that the current line ends with a comma.
    * NEW: New LOCK ... WAIT ... syntax.
    * NEW: The '#' character is now optional if possible (for example in the
      'OUTPUT TO' instruction).
    * NEW: '...' can be used for passing all the variables arguments of the
      current function to another function. The '...' symbol must be the last
      argument of the function call.
    * NEW: IsMissing() is a new function that returns if an optional argument
      is missing. It always returns FALSE on a non-optional argument.
    * NEW: Write meaningful information in generated translation files.

    [INFORMER]
    * BUG: Remove unneeded parenthesis on a test.
    * NEW: Support of kFreeBSD.
    * NEW: Support for classes defined twice in a component: once in the native
      part, once in the gambas part.

    [SCRIPTER]
    * BUG: Don't be case sensitive when searching for the "USE" keyword.

    [DOC.CGI]
    * NEW: Dutch translations updated.

    [GB.ARGS]
    * NEW: Dutch translations corrected and updated.

    [GB.CLIPPER]
    * BUG: Remove an unused variable.
    * NEW: Upgrade to clipper 6.1.3a.

    [GB.COMPLEX]
    * BUG: Conversion from complex to number now returns the real part if the
      imaginary part is null, and raises an error otherwise. It does not return
      the complex modulus anymore. Use Abs() for that.

    [GB.COMPRESS.ZLIB]
    * BUG: Fix file compression routine when the file size is a multiple of the
      internal buffer size.

    [GB.CRYPT]
    * NEW: SHA256 and SHA512 crypting were implemented.

    [GB.DATA]
    * BUG: Trie: Fix Complete() method where the completion would be empty
      and a memory leak there.
    * BUG: The 256 values of an input byte were mapped to just 128 bits of the
      trie children mask, so corruption could have happened with non-ASCII keys.
    * BUG: Add a special case when using GB.AddString() on an empty key.
    * BUG: Fix a memory error from Trie.Complete()'s return value.
    * NEW: A Graph class interface.
    * NEW: Heap is a new class that implements a Min- or MaxHeap, depending upon
      a mode parameter to its constructor. It supports some advanced ways to
      manipulate the contained data -- beyond the first entry.
    * NEW: Deque: Add a Copy() method to return a deep copy of a Deque. Stack
      and Queue "inherit" this method.
    * NEW: Add a GraphMatrix class which represents a Graph in a (non-sparse)
      adjacency matrix.
    * NEW: gb.data has a part written in Gambas now.
    * NEW: PrioSet is a weaker (WRT ordering) variant of a PrioQueue which
      allows operations to be reasonably more efficient.
    * NEW: Trie and TriePrefix are new classes which implement a Patricia Trie.
    * OPT: Use the Gambas API in trie.c to manage memory and thus remove error
      recovery since the interpreter will crash anyway.
    * OPT: Remove checks for "unsupported" characters as all 256 values of a
      byte are supported in this version of the code.

    [GB.DB]
    * BUG: Don't crash anymore when releasing database objects.
    * BUG: The automatic Blob to String conversion does not lead to a crash
      anymore.
    * BUG: Add an explicit warning message when a connection password must be
      retrieved and the 'gb.desktop' component is not loaded.
    * NEW: Table.Fields.Add() method takes a new optional argument to define
      the field collation.
    * NEW: Connection.Collations is a new property that returns the list of
      available collations as a String array.
    * NEW: Field.Collation is a new property that returns the collation of a
      specific table field.
    * NEW: Database driver now have a flag to tell if they support collation or
      not.

    [GB.DB.FORM]
    * BUG: DataCheckBox correctly defines its internal TriState property
      depending on whether its database field is mandatory or not.
    * BUG: Editable DataBrowser and DataView do not create a spurious extra
      line anymore.
    * BUG: DataView: The new record mark is correctly managed now.
    * BUG: DataControl and DataView now automatically disable editing if their
      DataSource is read-only.
    * BUG: Fix a possible infinite recursion when updating the current record
      and refreshing controls.
    * BUG: DataView: The current row now should be correctly selected in all
      situations.
    * NEW: The DataCheckBox control now raises its Click event as expected.
    * NEW: Raise the maximum size of a DataView text column to 65536 characters
      instead of 1024.
    * NEW: DataSource: Raise a new BeforeDelete event just before trying to
      delete a record. Cancel that event to cancel the deletion.
    * NEW: Dutch translations corrected and updated.

    [GB.DB.MYSQL]
    * NEW: Support for field collations.

    [GB.DB.ODBC]
    * NEW: Does not support field collations.

    [GB.DB.POSTGRESQL]
    * BUG: Check more directories when searching for libraries, so that it
      works on debian systems.
    * NEW: Support for field collations, only if database version is greater or
      equal than 9.1.

    [GB.DB.SQLITE2]
    * NEW: Does not support field collations.

    [GB.DB.SQLITE3]
    * BUG: Use the sqlite3_column_decltype() API to get the real datatype
      declaration of result fields, so that aliasing field does not change its
      resulting datatype.
    * BUG: Correctly handle requests returning only one table name inside field
      names.
    * NEW: Support for field collations.

    [GB.DEBUG]
    * BUG: Fix a possible crash if the debugged process is stopped during the
      Debug Read event.
    * NEW: The debugger now can be told to break the program on any error.
    * NEW: Propagate the changes in the interpreter class structure.

    [GB.DESKTOP]
    * BUG: Small change to xdg-email for LXDE so it doesn't open the
      web browser if there is a default email application.
    * BUG: Fix error message in DesktopMime.
    * BUG: Requires gb.desktop.x11 explicitely now.
    * NEW: 'gb.desktop' is now a pure Gambas component that relies on
      'gb.desktop.x11' and 'gb.desktop.gnome.keyring'.
    * NEW: Update with the new gb.desktop.x11 syntax.
    * NEW: Automatically load the 'gb.desktop.x11' component the first time the
      Desktop class is used, to be backward-compatible.
    * NEW: Desktop.NetworkAvailable is a new property that returns if the
      network is available. It just use 'ifconfig' to search for a network
      interface having an IP address different from '127.0.0.1'. If 'ifconfig'
      is not available, try to use the 'ip' command instead.

    [GB.DESKTOP.GNOME.KEYRING]
    * NEW: Make this component visible to the IDE.
    * NEW: This component was named 'gb.desktop.gnome' before. It allows to
      store and retrieve passwords from the GNOME 2 keyring.

    [GB.DESKTOP.X11]
    * BUG: Do not display X11 errors anymore.
    * BUG: Disable the X11 event filter if the system tray has been closed.
    * NEW: This new component offers a bunch of helper functions that allows to
      deal with the low-level X11 library.
    * NEW: X11.SetProperty and X11.GetProperty window argument is now first,
      and is not optional anymore. You have to specify X11.RootWindow
      explicitely.
    * NEW: The global X11 event handler 'Desktop_Change' is now named
      'X11_PropertyNotify'.
    * NEW: The global X11 event handler 'Desktop_Window' is now named
      'X11_ConfigureNotify'.
    * NEW: X11Systray is a new static class that implements a system tray
      inside an already existing DrawingArea of your project.

    [GB.DRAW]
    * BUG: Correctly initialize the Paint class when calling Paint.Begin() on
      an already opened drawing device.
    * BUG: Setting Paint.Background now resets Paint.Brush to NULL.
    * NEW: Paint.PathOutline is a new property that returns a array of polygons
      corresponding to the current drawing path.

    [GB.EVAL]
    * NEW: Highlight the new OPEN STRING instruction correctly.

    [GB.EVAL.HIGHLIGHT]
    * NEW: Add an hidden method to provide list of keywords to the IDE
      according to the highlighting style.
    * NEW: Add a list of all values of CSS 2.1 properties.

    [GB.FORM]
    * BUG: DirChooser.ShowPreview used FDirChooser.GetPreview which does not
      exist. The correct symbol is FDirChooser.GetShowPreview.
    * BUG: The FileProperties does not crash anymore if the directory size
      calculation task returns rubbish.
    * BUG: The icon of the FileProperties control now correctly adapts its
      size.
    * BUG: FileChooser: The Paths property now returns the selected path in
      single mode and not a void array anymore.
    * BUG: ButtonBox: Some drawing fixes for other themes than Oxygen.
    * BUG: DateChooser: Better management of the month menu button width.
    * BUG: DateChooser: Remove a debugging message.
    * BUG: ButtonBox button is correctly disabled when the Enabled property is
      cleared.
    * BUG: ButtonBox: Setting the ReadOnly property to TRUE must not disable
      the button!
    * BUG: FontChooser: Fix the behaviour when size changes.
    * BUG: Balloon: Fix position on desktop having top and/or left panels.
    * BUG: Balloon: Use Tooltip.Foreground color as expected.
    * BUG: Balloon: Fix arrow drawing.
    * BUG: MaskBox: Raise the Change event after moving the cursor, so that it
      behaves exactly like a TextBox.
    * BUG: ValueBox.ReadOnly works as expected now.
    * BUG: Draw.Line() correctly takes into account the LineStyle property in
      all cases now.
    * BUG: Fix the dash patterns used for implementing the Draw.LineStyle
      property.
    * BUG: FileView & DirView: Symbolic link to directories are now followed
      like before.
    * BUG: TableView.Clear now hides the current edited cell.
    * BUG: TabPanel: Moving a tab when one of them has been detached does not
      lead to a stack overflow anymore.
    * BUG: DirView does not raise its Click event twice anymore.
    * BUG: FileView: Delayed refresh is now forced when needed.
    * BUG: FileChooser: Multiple file selection works correctly again.
    * BUG: Stock.Themes property does not crash anymore if an 'index.theme'
      file is not readable.
    * BUG: FileChooser: Fix an infinite loop when trying to initialize the path
      with an unknown file.
    * BUG: TableView now hides its editor when it is resized.
    * BUG: FileChooser: Do not display a spurious error message when saving a
      file.
    * BUG: ColorChooser: Don't memorize custom colors spuriously.
    * BUG: Fix FileChoose/DirChooser directory buttons layout.
    * BUG: Be more robust when scanning icon theme inheritance.
    * BUG: Use the same color between hidden files in FileView and
      hidden directories in DirView.
    * BUG: Fix the balloon drawing routine. It should never be transparent
      anymore.
    * BUG: FileProperties: Do not crash if file mime type is not available.
    * BUG: FileProperties: Try again to really prevent it from crashing when
      no mimetype is available.
    * BUG: Wizard: Fix the layout of wizard step titles.
    * NEW: FileChooser now has support for uncompressing 'zip' files, provided
      that the 'zip' utility is installed on the system.
    * NEW: TabPanel[] got a new RichText property, that allows to define the
      title of a tab as rich text.
    * NEW: DateChooser: Replace the month ComboBox by a MenuButton.
    * NEW: Spinner is a new control that displays a rotating spinner.
    * NEW: SwitchButton is a new control that displays an ON/OFF button.
    * NEW: FontBox is a new control that allows to select a font from a text
      field.
    * NEW: The FontChooser control now adapts its interface if its height is
      too small.
    * NEW: TabPanel: Now there are a left and a right arrow to navigate through
      the tabs.
    * NEW: TabPanel: Using the mouse wheel on the tab buttons does not steal
      the focus anymore.
    * NEW: DateChooser.MinValue is a new property that allows to define the
      minimum date that can be selected.
    * NEW: DateChooser.MaxValue is a new property that allows to define the
      maximum date that can be selected.
    * NEW: DateChooser: The mouse wheel allows to scroll months and days now.
    * NEW: LCDLabel: Add support for some new characters.
    * NEW: MaskBox has a new ShowDefault property. When set, the maskbox does
      not hide its contents anymore when losing the focus if its value was the
      default value.
    * NEW: LCDLabel: Support for new characters.
    * NEW: Some new icons.
    * NEW: The Balloon background color is now the system tooltip background
      color.
    * NEW: Expander.Border is a new property that defines if the Expander must
      display a border around its contents.
    * NEW: TabPanel.Moveable is a new property that makes tab button moveable
      if set.
    * NEW: FileChooser: Uncompressing a file automatically selects the
      uncompressed directory if appropriate.
    * NEW: ColorChooser.ShowCustom is a new property that allows the color
      chooser to remember the last chosen colors.
    * NEW: FileChooser: Typing a file name automatically selects it.
    * NEW: FileView: Selection property is now writable.
    * NEW: Dutch translations updated
    * NEW: The FileChooser Change event is now raised when the file is
      unselected.
    * NEW: DirBox is a new control that allows to choose a directory from a
      ButtonBox.
    * NEW: DirBox, FontBox and DateBox are now put in the "Chooser" tab of the
      IDE control toolbar.
    * NEW: ListContainer has been deprecated. It has design problems.
    * NEW: DirView.HideRoot is a new property that hides the root row of the
      DirView.
    * NEW: Add an history in the FileChooser and DirChooser controls.
    * NEW: Add a 'link' stock icon.
    * NEW: New design of FileChooser and DirChooser.
    * NEW: MenuButton now uses the new DrawingArea Font event.
    * NEW: Bookmark editor: Now you can edit the name of the bookmark by just
      clicking inside the table.
    * NEW: TableView editor background is used by its container now.
    * NEW: Add a new icon named 'identity'.
    * NEW: DateChooser: Make the time font size a little bit smaller.
    * NEW: TabPanel: Use text shadow for highlighting tab captions.
    * NEW: Little design changes in the FontChooser control.
    * NEW: FontBox.Default is a new property that defines which text is
      displayed in the control when no font is set. By default, the application
      default font name is used.
    * NEW: FontChooser.ShowRelative is a new property that set if relative
      sizes are allowed or not. They are allowed by default.
    * OPT: A little optimization in the DirChooser control.
    * OPT: Implement a directory cache to minimize the number of calls to the
      Stat() function.

    [GB.FORM.DIALOG]
    * BUG: Dialog.Open() in multiple mode works now.
    * NEW: Dutch translations corrected and updated.
    * NEW: Add a custom font chooser dialog for Dialog.SelectFont().
    * NEW: Dialog.FixedOnly is a new property to set if the font chooser will
      show fixed fonts only.

    [GB.FORM.MDI]
    * BUG: Toolbar configuration dialog: the toolbar elements with a short text
      are correctly displayed now.
    * BUG: Workspace: Popup menu now correctly displays the title of windows
      having a RichText property. Note that this is not officially documented.
    * BUG: Workspace: Fix the new Remove() method and the old Add() method.
    * NEW: If a window embedded in a Workspace has a public RichText property,
      it will be used instead of the normal Text property as window title. This
      is some sort of dirty hack, so don't use it at the moment.
    * NEW: Raise an error if the Toolbar.Configure() method is called whereas
      the toolbar Key property is not defined.
    * NEW: ToolBar now inverts its layout if the current language is right-to-
      left written.
    * NEW: Shrink the toolbar height a bit.
    * NEW: Workspace tab buttons are now moveable.
    * NEW: Workspace: Windows now can be detached and attached back.
    * NEW: Workspace: Count the number of detached windows so that the "detach
      current tab" menu entry is disabled when needed.
    * NEW: The Workspace popup menu has been redesigned.
    * NEW: A menu entry to close all tabs.
    * NEW: A menu entry to close tabs to the right.
    * NEW: Redesign the shortcuts configuration dialog.
    * NEW: Shortcuts now can be exported and imported.
    * NEW: Workspace.Count is a new property that returns the number of
      windows embedded in the workspace.
    * NEW: Workspace: Closing a tab now raises the Close event, with the
      closing window as argument. Stopping that event cancels the close.
    * NEW: Dutch translations updated.
    * NEW: Workspace.Remove() is a new method for removing a window from the
      workspace.
    * NEW: Workspace.Add() automatically calls Workspace.Remove() to remove the
      window from its previous workspace if needed.
    * NEW: Workspace now raises the Attach and Detach events when a window is
      respectively attached or detached.
    * NEW: Workspace.Exist() is a new method that tells if a specific window is
      embedded inside the Workspace.
    * NEW: Shortcut editor: Use the standard background for the shortcut
      TableView editor.
    * NEW: Dutch translations corrected and updated
    * OPT: Workspace: Make the background flicker less.

    [GB.FORM.STOCK]
    * BUG: Fix all missing icons.
    * NEW: Add a new icon named 'identity'.

    [GB.GSL]
    * BUG: Polynomial: Create a new void polymonial does not lead to a crash
      anymore.
    * BUG: Conversion from complex to number now returns the real part if the
      imaginary part is null, and raises an error otherwise. It does not return
      the complex modulus anymore. Use Abs() for that.

    [GB.GTK]
    * BUG: The rtl layout is correctly initialized at startup.
    * BUG: Embedder.Embed() does not take two arguments.
    * BUG: Imbrication of popup menu click events works correctly now and does
      not crash anymore.
    * BUG: The Window.Picture property now should work correctly.
    * BUG: Patch the GtkSpinButton class so that it is drawn correctly when
      not having a normal height.
    * BUG: Correctly update background and foreground of multi-container
      controls.
    * BUG: Fix memory leak when loading images without alpha channel.
    * BUG: Menu.Children.Clear() works again.
    * BUG: The TextArea.Text property does not waste memory anymore.
    * BUG: TextArea: Border is drawn as expected now.
    * BUG: TrayIcon: Handle DblClick and MouseWheel events correctly.
    * BUG: Controls inside TabStrip now are detected correctly and are not
      insensitive anymore.
    * BUG: The MouseDrag event can be cancelled now, like with gb.qt4.
    * BUG: The printer configuration dialog does not crash anymore.
    * BUG: Remove some GLib warnings when displaying the printer configuration
      dialog.
    * BUG: Fix the default size of message boxes.
    * BUG: Control Move() and MoveScaled() method do not try to resize the
      control anymore if their width and height arguments are omitted.
    * BUG: Rich text support is more robust now: it can handle self-closed
      markups.
    * BUG: Paint.TextSize() and Paint.RichTextSize() now correctly take into
      account the device resolution.
    * BUG: Fix a Slider warning when setting the MinValue or MaxValue property.
    * BUG: Fix incorrect translation when drawing inside a DrawingArea.
    * BUG: Fix Align.IsBottom() and Align.IsMiddle().
    * BUG: TextArea.Text property can be set to a null string correctly now.
    * BUG: Fix the behaviour of auto-resize labels.
    * BUG: Setting Application.Font now updates the font of all controls.
    * BUG: Embedded windows can now be reparented to NULL to become top-level
      again.
    * BUG: Showing a top-level window now raises it automatically.
    * BUG: Window.Utility should now work even if the window is mapped.
    * BUG: Default tray icon is correctly visible now.
    * BUG: Invisible startup forms are not opened at startup anymore.
    * BUG: DrawingArea: Clipping is correctly established now before raising
      the Draw event.
    * BUG: Keyboard events have been fixed. Key array accessor and Key.Code now
      behave the same way as in gb.qt4.
    * BUG: The Key.Meta property works correctly now.
    * BUG: Now keyboard events seem to be sent twice by GDK. Found a workaround
      for that new weird behaviour.
    * BUG: Automatic window minimum size now works correctly.
    * BUG: Windows can take focus as in gb.qt4.
    * BUG: Correctly resets the clip region offset after a DrawingArea draw
      event.
    * BUG: Fix TabStrip behaviour when its Closable property is set.
    * BUG: Fix Frame children detection.
    * BUG: The Foreground property of RadioButton and CheckBox now works correctly.
    * BUG: System tray icons deletion is delayed now. It prevents spurious GTK+
      warnings that appear if you hide an icon inside an event handler.
    * BUG: Wait 10 ms after showing a tray icon. Apparently you must not be too
      fast when creating several tray icons.
    * BUG: Fix auto-resized labels layout.
    * BUG: A reparented control does not lose its default foreground or
      background color anymore.
    * BUG: Fix Style.ForegroundOf() method.
    * BUG: Fix borderless TextBox padding to be the same as with gb.qt4.
    * BUG: Fix input method handling.
    * BUG: Automatic grabbing on mouse button press is now released if the
      top-level window of the target control is hidden during the grab.
    * BUG: Fix how menu items are drawn.
    * BUG: Fix menu item drawing again.
    * BUG: Fix 'Menu' event and PopupMenu property behaviour. The default
      behaviour of the control is cancelled if: the PopupMenu property is
      defined, or if the 'Menu' event is stopped with STOP EVENT, of if a popup
      menu is displayed during the 'Menu' event handler.
    * BUG: DrawingArea.Clear() works as expected now.
    * BUG: DrawingArea.Clear now raises an error if the DrawingArea is cached
      and if it currently being painted.
    * NEW: When a popup menu is shown, underscore shortcuts are automatically
      assigned. This feature is a based on a new hidden property of the Menu
      class named "_Text". So don't use this new property for your own needs!
    * NEW: Mouse.Translate() is a new method that allows to translate the
      current mouse event.
    * NEW: Remove source files of the old ProgressBar control.
    * NEW: Rework Style.PaintBox() method.
    * NEW: Style.StateOf() is a new method that returns the state flags of a
      specific control.
    * NEW: Style.BackgroundOf() is a new method that returns the actual
      background color of a specific control.
    * NEW: Style.ForegroundOf() is a new method that returns the actual
      background color of a specific control.
    * NEW: All state flag constants of the Draw class are now implemented in
      the Style class.
    * NEW: Paint.PathOutline is a new property that returns a array of polygons
      corresponding to the current drawing path.
    * NEW: Application.PreviousControl is a new property that returns the
      previous control having the focus.
    * NEW: TextArea: Remove extra margin around text.
    * NEW: Ignore trailing spaces in font description elements: you can use
      Font["Arial  , 12, Bold "] now.
    * NEW: The Frame container now has all arrangement properties.
    * NEW: TrayIcon: Try to provide the icon size to the system tray, but it is
      apparently overriden by the GTK+ library with the default small size.
    * NEW: Window.Transparent is a new property that makes the window
      background transparent (i.e. it uses a RGBA visual).
    * NEW: Color.LinkForeground and Color.VisitedForeground are two new
      properties that return the system color associated with links and visited
      links. If not applicable, some default colors are returned.
    * NEW: Support for X11 event filter has been implemented.
    * NEW: Application.Restart is a new property that allows to define the
      application restart command for the session manager.
    * NEW: Support for automatic session management.
    * NEW: Add an environment variable to debug keypress events.
    * NEW: Remove useless gb.gtk exported functions.
    * NEW: DrawingArea now raises a new Font event when its font changes.
    * NEW: Menu has a new Radio property that defines if a menu item must act
      as a radio button. All successive menu items having the Radio property
      set are mutually exclusive.
    * OPT: Prevent an unneeded image conversion in Paint.DrawImage().

    [GB.GTK.OPENGL]
    * BUG: GlArea can take the focus now.

    [GB.GTK3]
    * NEW: New GTK+3 component! Note that 'gb.gtk' and 'gb.gtk3' share the same
      source code. Another point: GTK+3 theming support is a fucking nightmare.

    [GB.GUI]
    * NEW: If one GUI component fails to load, try the other one.
    * NEW: Abort if no GUI component is found.
    * NEW: Define the GB_GUI environment variable with the GUI component
      actually loaded.
    * NEW: Support for the gb.gtk3 component.

    [GB.GUI.BASE]
    * BUG: GridView: Setting the background color correctly refreshes the
      control.
    * BUG: IconView: Clicking inside the selection now keeps it unchanged.
    * BUG: Fix a crash in GridView.ColumnAt() method.
    * BUG: Clicking on GridView/ColumnView headers now should work correctly
      again.
    * BUG: GridView: Dnd now works as expected even in multiple selection mode.
    * BUG: Draw.End() now resets antialiasing to TRUE.
    * BUG: If the Layout property of HSplit or VSplit controls does not receive
      one size for each child control, then child controls without size are
      hidden (i.e. their size is assumed to be zero).
    * BUG: Fix Draw class drawing accuracy.
    * BUG: Draw: Use Paint.LineJoinRound by default.
    * BUG: GridView: Setting the column width to -1 is taken into account by
      the layout routine.
    * BUG: The GridView, TreeView (and all its cousins) background correctly
      reacts to system color theme changes.
    * BUG: If Action_Activate() does not return a value as expected, ignore it
      instead of crashing.
    * BUG: TreeView, ColumnView and ListView now correctly manage the selection
      when items are removed, or when the view is cleared.
    * BUG: GridView: Setting the width of a column now should work in all
      cases.
    * BUG: GridView: Automatic scroll now should work as expected.
    * BUG: ListBox: Selection is correctly drawn in multiple selection mode.
    * BUG: Correctly draw GridView headers, especially when right alignment is
      used.
    * BUG: GridView: Don't take hidden columns into account when layouting
      expanded columns.
    * BUG: IconView rubberband is now only active if the left moust button is
      pressed.
    * BUG: ScrollArea: Shadows are now correctly drawn whatever is done during
      the Draw event it raises.
    * BUG: Fix the automatic scrolling behaviour of GridView and all its
      children classes.
    * BUG: Fix automatic scrolling of newly expanded item in TreeView and
      ColumnView.
    * BUG: TreeView now should keep the selection correctly while an item is
      expanded or collapsed.
    * BUG: GridView: correctly reset the row titles when the row count changes.
    * BUG: ScrollArea does not override the current clipping anymore. It fixed
      the TableView edit cell drawing artifacts with GTK+2. In other words,
      never assign Draw.ClipRect while drawing with GTK+2!
    * BUG: GridView: Changing the Mode property now correctly refreshes the
      control.
    * BUG: TreeView: A column resize does not automatically cancel the current
      renaming.
    * BUG: ScrollArea: Prevent a possible crash.
    * NEW: ScrollArea, GridView, TreeView and its friends now invert their
      layout if the current language is right-to-left written.
    * NEW: The ProgressBar control is now written in Gambas.
    * NEW: Add a little left and right padding to GridView cells.
    * NEW: ListBox now uses the default selected background color.
    * NEW: ProgressBar: Add a Pulse property, that makes the control display a
      pulsing frame instead of the normal progress bar.
    * NEW: TreeView and ColumnView item got a new Reparent() method that allows
      to move an item and all its children from one parent to another parent.
    * NEW: Paint.TrimText() is a new API that trim a text according to a
      specified rectangle, adding an ellipsis character at the end if needed.
    * NEW: GridView.Padding is a new property that defines the default cell
      padding. Its default value is 2 pixels.
    * NEW: Paint.DrawTextShadow() is a new method that draws the shadow of a
      text. Note that you must call Paint.DrawText() to draw the real text
      below the shadow.
    * NEW: Paint.DrawRichTextShadow() is a new method that draws the shadow of
      a piece of rich text. Note that you must call Paint.DrawRichText() to
      draw the real text below the shadow.
    * NEW: IconView: Use a lighter selection colour.
    * NEW: Paint.TrimRichText() is a new method that trims some rich text to a
      specific size, adding ellipsis if needed.
    * NEW: Use smaller arrows in TreeView and GridView headers.
    * NEW: Make row header a little bit larger by default.
    * NEW: ScrollArea border is now a plain border, and not a sunken one
      anymore. I find it nicer.
    * NEW: The Shortcut class is a new class that allows to remove '&'
      shortcuts from the translatable caption of the following controls: Menu,
      Button, CheckBox, RadioButton, ToolButton, ToggleButton, DataCheckBox.
    * NEW: ProgressBar: Take the Enabled state into account when drawing the
      control.

    [GB.GUI.OPENGL]
    * NEW: Always load the OpenGL support component associated with what lies
      in the GB_GUI environment variable.

    [GB.IMAGE]
    * BUG: Link with the mathematic library as the pow() function is used for
      the image gamma filter.
    * BUG: Rewrite the ImageStat class source code because the PHP licence is
      not compatible with the GPL.
    * NEW: Allows a component that supports the Image class to have a
      premultiplied default image format. Beware that some images methods do
      not support premultiplied formats yet.
    * NEW: Color.Transparent now is &HFF000000& and not &HFFFFFFFF anymore.

    [GB.INOTIFY]
    * NEW: New component to interface Gambas with the Linux-specific inotifies.

    [GB.JIT]
    * BUG: Explicitely search for the 'llvm-c/Core.h' include file.
    * BUG: Fix LLVM version comparison.
    * BUG: Compile `jit_codegen.cpp` with rtti enabled, and
      `jit_gambas_pass.cpp` without.
    * BUG: gb.jit should now compile with LLVM 3.5.
    * NEW: A little cosmetic change in the autoconf message about LLVM version
      checking.
    * NEW: Propagate the changes in the interpreter class structure.
    * NEW: Add conditional defines for Cygwin to allow compile:
      Use finite in place of _finite, __isnand in place of __isnan
      and __isinfd in place of __isinf.
    * NEW: Remove jit_gambas_pass_dummy.cpp as this is no longer
      required to compile with later versions of llvm. Also fixes
      issue with Cygwin compile.

    [GB.LOGGING]
    * BUG: Allow the user to change the output if using the hidden instance.
    * BUG: Fix the detection of the call location.
    * BUG: Fix out-of-bounds error when using the formatter.
    * NEW: Output can now be redirected to stderr ;)
    * NEW: Added some more tags to the Formatter
    * NEW: Allow custom debug levels.
    * NEW: A call to Begin() is needed again so that the user can change the
      parameters if using the hidden instance. Sorry about that.
    * OPT: A call to Begin() is no longer necesary. The log file
      is automatically opened when creating the logger.

    [GB.MARKDOWN]
    * NEW: This is a new component that implements the Gambas Markdown markup
      syntax.

    [GB.MEDIA]
    * BUG: When a MediaPipeline is freed, the pipeline is first stopped before
      being put to the null state. Otherwise GStreamer freezes.
    * BUG: Fix how the end of stream is sent when stopping a pipeline.
    * BUG: According to the GStreamer documentation, you can send an EOS
      message only while playing.
    * BUG: MediaPipeline.Stop() tries to send an EOS message at most during
      250 ms. A warning message is printed if the EOS message has not been
      sent.
    * BUG: Fix inputs and outputs enumeration.
    * NEW: MediaControl: An enumeration property can be set through its integer
      value now.
    * NEW: MediaPipeline constructor now takes the message bus polling
      frequency as an optional argument.
    * NEW: MediaPipeline.Stop() now force EOS on sources before stopping the
      pipeline.
    * NEW: If the MediaControl type contains a '/' character, then a
      MediaFilter is created using that type as filter.
    * NEW: Properties having the "Caps" type are now handled everywhere.
    * NEW: MediaLink is a new class that represents a link between an element
      input and an element output. Its interface may change in next revisions.
    * NEW: MediaControl.Parent is a new property that returns the parent of a
      MediaControl object.
    * NEW: MediaControl.LinkTo method now automatically unlinks the output
      before linking it.
    * NEW: MediaControl.GetLink is a new method that returns a MediaLink object
      representing what is linked to the specified input or output.
    * NEW: MediaControl.GetLastImage() returns a screenshot of the last video
      frame seen by a sink (i.e. final) element.

    [GB.MEDIA.FORM]
    * NEW: New component based on gb.media that includes a full media player
      widget with controls.

    [GB.NCURSES]
    * BUG: Window.Ask() now returns the chosen letter (and not its index) as
      it's documented and ought to be (returning the index does not ease
      translation very much but makes program flow much less obvious).
    * BUG: Respect Window.Attributes when changing Window.{Fore,Back}ground.
    * BUG: Initialise the Screen singleton's properties.
    * BUG: Reset the "watched fd" variable when a watch ends.
    * BUG: Add GB_END_DECLARE to the Input class to not crash anymore (on
      cygwin only?). Reported by Nigel Gerrard.
    * NEW: Add Key.Esc constant to catch escape key (without needing to know
      that it's ASCII 0x1b).

    [GB.NET]
    * BUG: Fix a missing symbol lookup error.
    * NEW: Flushing a serial port stream now calls tcdrain() so that all
      pending data is effectively sent.
    * NEW: SerialPort.InputBufferSize is a new property that returns the number
      of bytes in the internal input buffer.
    * NEW: SerialPort.OutputBufferSize is a new property that returns the
      number of bytes in the internal output buffer.
    * NEW: DnsClient: defer async setup to when a query is made and release
      the pipe watch afterwards as soon as possible so that Gambas processes
      don't wait on non-active but existent watches.
    * NEW: One can change the Async property of DnsClient now while it is
      active; the change applies to subsequent queries.
    * NEW: Redefine TIOCOUTQ for Cygwin.

    [GB.NET.CURL]
    * BUG: The VerifyPeer and VerifyHost properties are really taken into
      account now. But I'm not sure that everything is fixed.
    * BUG: HttpClient.Put() method should send its data correctly now.
    * BUG: HttpClient: Set timeout even in asynchronous mode.
    * BUG: FtpClient: Set timeout even in asynchronous mode.
    * BUG: Disable debugging messages.
    * NEW: HttpClient.PutFile() is a new method to send a PUT request by taking
      the data from a file.

    [GB.NET.POP3]
    * BUG: Error messages must not be translatable.
    * NEW: Add a void constructor to the Pop3Client class for the
      documentation.
    * NEW: Pop3Client.Open() now raises an error if authentication fails, and
      correctly aborts the connection.
    * NEW: Dutch translations corrected and updated.

    [GB.NET.SMTP]
    * BUG: Fix the authentication process.
    * BUG: Fix how the result of the EHLO command is read.
    * BUG: Explicitely load the 'gb.net' component to be backward compatible
      with the old 'gb.net.smtp' that didn't require it.
    * NEW: Recipients and sender now support the "Chuck Norris <chuck@norris.com>"
      syntax.
    * NEW: Replace the old gb.net.smtp component written in C and Gambas by a
      new component with the same name entirely written in Gambas.
    * NEW: Add a 10 seconds timeout to the TCP socket.
    * NEW: SmtpClient is now a virtual control.

    [GB.OPENAL]
    * BUG: Fix declaration of Al.VELOCITY constant.

    [GB.OPENGL]
    * BUG: GL.GetString() now raises an error if the glGetString() function
      fails.
    * BUG: Fix the missing "gl" prefix on two OpenGL calls.
    * NEW: Implement gl.TexSubImage1D and gl.TexSubImage2D.

    [GB.OPENGL.SGE]
    * BUG: Don't crash if a model has only one frame.

    [GB.OPENSSL]
    * BUG: Cipher[] and Digest[] now read their method argument correctly.
    * BUG: Fix bad use of string API in the Cipher class. Consequently
      Cipher[].Encrypt() does not crash anymore.
    * NEW: Make CipherText creatable so that data from external sources can be
      deciphered.

    [GB.PCRE]
    * BUG: RegExp.Replace(): Explicitly use 0 if optional arguments are missing
    * BUG: Don't call GB.ReturnNewString() if a match returns a null string.
    * BUG: Use GB.ReturnVoidString() instead of GB.ReturnNull().

    [GB.PDF]
    * BUG: The initial rotation of the PDF document is now taken into account.
    * BUG: Search result now takes the orientation into account.

    [GB.QT4]
    * BUG: Imbrication of popup menu click events works correctly now and does
      not crash anymore.
    * BUG: The control borders are drawn the same way everywhere.
    * BUG: Correctly update background and foreground of multi-container
      controls.
    * BUG: Font.Grade maximum value is now +24, as expected by the font
      selector.
    * BUG: Foreground and background colors now works as expected on ComboBox
      and SpinBox controls.
    * BUG: TextLabel: Automatic size is correctly computed now. Apparently
      there are internal changes in the Qt library that made it false.
    * BUG: Style.PaintBox() correctly honors its color argument again.
    * BUG: Text can be drop on TextBox and TextArea controls again, unless
      their Drop property is set. In that case, the dnd behaviour is entirely
      controled by Gambas.
    * BUG: Correctly free the internal clipboard formats list when the
      clipboard contents changes. This avoids possible crashes.
    * BUG: Clipboard.Paste() now returns the image when there is both image and
      text inside the clipboard.
    * BUG: Rich text paragraph margins are now proportional to the font size.
    * BUG: Correctly handle UTF-8 when displaying the error message.
    * BUG: Fix Align.IsBottom() and Align.IsMiddle().
    * BUG: Key.Normal now works correctly with numeric pad keys.
    * BUG: Fix the behaviour of auto-resize labels.
    * BUG: Tray icons are now scaled, like with GTK+.
    * BUG: Key.Code now returns the modifiers key codes, as in gb.gtk.
    * BUG: System tray icons deletion is delayed now, to avoid a crash if you
      hide an icon during inside an event handler.
    * BUG: Cached DrawingArea backgroun color now works correctly if the window
      is transparent.
    * BUG: The Printer.NumCopies property now works as expected.
    * BUG: Reading the Printer.GrayScale property now returns the correct
      value.
    * BUG: Style.PaintBox now works correctly with QtCurve.
    * BUG: Style.PaintBox now works better with QGtk.
    * BUG: The ScrollView does not flicker anymore when its size changes.
    * BUG: Fix ScrollView viewport size computation when there is no
      arrangement set.
    * BUG: Auto-resized labels correctly update their size when their border
      property is modified.
    * BUG: Controls now take the alpha component of foreground and background
      colors into account.
    * BUG: ComboBox.Border property can be set even if it is in read-only mode.
    * BUG: Fix 'Menu' event and PopupMenu property behaviour. The default
      behaviour of the control is cancelled if: the PopupMenu property is
      defined, or if the 'Menu' event is stopped with STOP EVENT, of if a popup
      menu is displayed during the 'Menu' event handler.
    * BUG: DrawingArea.Clear now raises an error if the DrawingArea is cached
      and if it currently being painted.
    * NEW: When a popup menu is shown, underscore shortcuts are automatically
      assigned. This feature is a based on a new hidden property of the Menu
      class named "_Text". So don't use this new property for your own needs!
    * NEW: Mouse.Translate() is a new method that allows to translate the
      current mouse event.
    * NEW: Remove source files of the old ProgressBar control.
    * NEW: Rework Style.PaintBox() method.
    * NEW: Style.StateOf() is a new method that returns the state flags of a
      specific control.
    * NEW: Style.BackgroundOf() is a new method that returns the actual
      background color of a specific control.
    * NEW: Style.ForegroundOf() is a new method that returns the actual
      background color of a specific control.
    * NEW: All state flag constants of the Draw class are now implemented in
      the Style class.
    * NEW: Paint.PathOutline is a new property that returns a array of polygons
      corresponding to the current drawing path.
    * NEW: Application.PreviousControl is a new property that returns the
      previous control having the focus.
    * NEW: Ignore trailing spaces in font description elements: you can use
      Font["Arial  , 12, Bold "] now.
    * NEW: The Frame container now has all arrangement properties.
    * NEW: TrayIcon: Provide the icon size to the system tray.
    * NEW: Window.Transparent is a new property that makes the window
      background transparent (i.e. it uses a RGBA visual).
    * NEW: When several menus have the same shortcut, one is triggered instead
      of displaying a warning message and doing nothing.
    * NEW: Color.LinkForeground and Color.VisitedForeground are two new
      properties that return the system color associated with links and visited
      links.
    * NEW: Support for automatic session management.
    * NEW: Application.Restart is a new property that allows to define the
      application restart command for the session manager.
    * NEW: Use a premultiplied RGBA default format for images.
    * NEW: DrawingArea now raises a new Font event when its font changes.
    * NEW: Menu has a new Radio property that defines if a menu item must act
      as a radio button. All successive menu items having the Radio property
      set are mutually exclusive.
    * OPT: Do not arrange a container while destroying its children.
    * OPT: A little optimization when drawing rich text.
    * OPT: Optimize ScrollView arrangement when its size changes.

    [GB.QT4.EXT]
    * BUG: Editor: Delete at the end of line and backspace at the beginning of
      line now work as expected when override mode is enabled.
    * BUG: Setting Editor.Mouse now works reliably.
    * BUG: Editor: 'Select all' and [CTRL]+[END] now really goes to the end of
      file.
    * NEW: Editor: [CTRL]+[X] now cut the current line if nothing is selected.
      If you stay on the same line, cutted lines accumulate.
    * NEW: [CTRL]+[ENTER] and [CTRL]+[SHIFT]+[ENTER] editor shortcuts are now
      directly implemented in the editor.
    * NEW: [CTRL]+[D] now deletes the current line or selection.
    * NEW: Highlight.Line is a new property that returns the currently
      highlighted line number (starting from zero).
    * NEW: LCDNumber control is now put in a "Deprecated" tab in the IDE
      control toolbar.

    [GB.QT4.OPENGL]
    * BUG: Clear the GLArea widget with the control background color just before
      raising the Draw event.

    [GB.QT4.WEBKIT]
    * BUG: WebElement.FindAll() method correctly builds the returned array.
    * BUG: Fix WebElement.Paint() declaration.
    * NEW: WebView: Try to interpret the control background and foreground
      colors as default web page colors.
    * NEW: WebSettings.Cache.Path now must be located inside the '~/.cache'
      directory.
    * NEW: WebSettings.Cache.Clear() is a new method to clear the cache
      correctly.
    * NEW: WebView.Reload() now takes an optional boolean argument, that tells
      if the cache must be bypassed when reloading the page, or not as before.
    * OPT: WebView: Raise the Progress event only if the progress value has
      actually changed.

    [GB.REPORT]
    * BUG: Many correction on object indexation. Now multiple levels of
      repeated containers are possible.
    * BUG: Now ReportLabel take multiline text into account when computing its
      height.
    * BUG: The fixed elements at the end of the page are now computing
      correctly their size.
    * BUG: ReportLabel now uses Paint.TextSize instead of Paint.TextExtend to
      get the text size.
    * BUG: Now ReportLabel rotation works fine and the angle is given in
      radians.
    * BUG: You can now add an argument to the _New sub. Be careful, the _New
      event is called one time only, at the report loading.
    * BUG: The custom size works but there is some bugs with Printer.Configure
      that sets the page size to A4. :-/
    * BUG: The ReportBrush.Color function really returns a ReportBrush class.
    * BUG: The report custom size bug is solved.
    * BUG: The custom panel is now enabled when Report.Paper is 'Custom'.
    * BUG: Some bugs corrected on the reportPreview.
    * BUG: The report engine have a new scaling routne based
      on the document size and not on the device resolution.
    * BUG: Remove gb.map use
    * BUG: ReportVBox is fully rewritten (some bugs will follow
      be carefull)
    * BUG: Remove bug on setting
    * BUG: Try to resolve the setting problem in report preview box.
    * BUG: Resolve the bug on clear (Even if i don't remember for what i've
      done this property)
    * BUG: Now Duplex modes are correctly set in ReportPreview.
    * BUG: ReportFrame now clips inside the borders.
    * NEW: And not new but now it work... the ForceNewPage property of an object force
      the repeater the make only one display of this object by pages.
    * NEW: Add icons for ReportDrawingArea and ReportViewer widget.
    * NEW: A New widget ReportPageBreak allows to break a page when you need.
    * NEW: Report.Print takes now an optional argument Printer that allows
      to give an externally initialised printer. In tis case the dialog is not
      shown.
    * NEW: A new widget ReportView (Need polish for external use).
    * NEW: A new report preview windows. It embeds all the printing tools
      and can reflect all the printing options in real time.
      Page size, Gray scale and a range property like in the known text
      editors (1;3;8-9)
    * NEW: A new widget ReportDrawingArea allows to draw freely on the report
      page. It has a 'Draw' event that provides the size of the drawing
      (depending on the paint device resolution too. Sometimes you can use
      ReportUnits.DesktopScale ratio to fix the size). A 'Cached' property
      allows to call the event only when the device resolution change. It is
      useful when a draw needs a lot of computing.
    * NEW: MTool and Units have been merged to create a new shared module:
      ReportUnits. It provides functions for unit convertions depending on
      paint resolution (for pixel convertion use it in a paint session).
      A property DesktopScale provides a ratio between Desktop pixel size and
      printer size.
    * NEW: Begin to implement a Shadow for ReportFrame Objects. It has the
      same syntax than the CSS3 box shadow. XOffset, YOffset, Spread, Color.
      At the moment only the class have been implemented... I need to say to
      the engine how to use it :-)
    * NEW: ReportLabel now use Angle in degree.
    * NEW: Now Report have a new default event _Open that allows to initialize
      all the report data and structure.
    * NEW: Begin to implement the ReportGridView control.
    * NEW: The report Preview form now save it's preferences.
    * NEW: Negative numbers are allowed on string size properties. It allow to use
      negative value on XOffset or YOffset for shadows.
    * NEW: Dutch translations corrected and updated.
    * OPT: Remove backup files.
    * OPT: Many other improvement like the possibility now for a report to be
      initialised with one or more arguments.
    * OPT: WARNING! Now if ReportObject Width and Height are not set, then the
      ReportObject is 'auto-resized. This will help a lot of new users to
      understand how the report layout works.
    * OPT: ReportView drawing does not use Svgimage, this avoids qt4 svg
      rendering bugs. (Note from BM: will Qt fix these bugs some day?)
    * OPT: The code arrangement has been clean up.

    [GB.SB.SQLITE3]
    * BUG: Fix specific implementation of sqlite3_exec. Prevent some crashes
      and make database creation work again (among other things).

    [GB.SDL]
    * BUG: Restore fill pattern to solid after a Draw.Rect() or a
      Draw.Ellipse(), otherwise Draw.Image() draws nothing!
    * BUG: Don't create a default TTF font for each draw event!
    * NEW: Rename the default SDL font file as "_default.ttf" to prevent
      packaging conflicts.
    * NEW: Use the Gambas monospace font as SDL default font now.
    * NEW: Remove the delay when 'Stop Event' is called during the Draw event
      handler.
    * NEW: The Gambas event loop is now called with a delay of 1 ms. So it will
      use a busy waiting instead of sleeping the process.
    * NEW: Mouse.Show, Mouse.Hide and Mouse.Visible are two new static methods
      and one static property to hide or show the mouse cursor.
    * NEW: Window.Grabbed is a new property that allows to grab the input and
      confine the mouse to the window.
    * NEW: Window.Screenshot() is a new method that returns a screenshot of the
      window contents by reading the OpenGL color buffer.
    * NEW: The default font is now embedded in the library.
    * NEW: Window.Screenshot() now can take four optional arguments to define
      a rectangular sub-part of the window to retrieve.
    * NEW: The default font is now scaled 2x if the font size set is twice the
      default font height, 3x if it is three times the default font height, and
      so on...

    [GB.SDL.SOUND]
    * NEW: Music.State is a new property that returns the music state as one of
      the following constant: Music.Stopped, Music.Playing or Music.Paused.
    * NEW: -lSDL needed for Cygwin linker.

    [GB.SETTINGS]
    * BUG: Do not mark the settings file as modified if the stored value is not
      really changed.
    * BUG: Always mark the settings as modified if an object reference is set
      as settings value.
    * BUG: Automatic saving of settings file at exit works again.
    * BUG: Enumerating `Settings.Keys[Slot]` (the keys of a specific slot) does
      not break anymore the enumeration of `Settings.Key` (the slot names).
    * OPT: Settings.Clear() does not mark the settings file to be saved if
      there is nothing to clear.

    [GB.V4L]
    * NEW: Support of kFreeBSD.

    [GB.WEB]
    * BUG: JSON.Encode() correctly encodes ASCII control characters.
    * BUG: CGI.Error() now correctly sends an UTF-8 HTML page.
    * BUG: Buffered responses now use "Window" end-of-line by default instead
      of "Unix" end-of-line, like unbuffered responses. *WARNING!* This bug fix
      is not backward-compatible!
    * BUG: Fix the JSON.Decode() method signature.
    * BUG: JSON.Null is now a read-only property.
    * BUG: When creating a session, other sessions having the same prefix and
      being older than 24 hours are automatically removed from disk.
    * BUG: JSON.Decode() now convert numbers to Integer, Long and Float. Not
      just Float.
    * BUG: Make Session._exit() error prone.
    * BUG: URL.UnsetQuery() now works correctly on void request queries.
    * BUG: Workaround a thttpd bug that does not set the SCRIPT_NAME correctly
      when the URL ends with a slash.
    * BUG: The deprecated URL.Encode() and URL.Decode() functions now correctly
      call URL.Quote() and URL.Unquote().
    * NEW: JSON.Decode() now takes an extra optional argument indicating that
      keys having a null value are taken into account inside objects.
    * NEW: JSONCollection is a new class that represents a JSON object whose
      some keys are associated with a 'null' value.
    * NEW: Response.EndOfLine is a new property that allows to explicitely
      define the EndOfLine property of the underlying stream.
    * NEW: Response.EndOfLine is now taken into account if the response is
      buffered.
    * NEW: Session.Exist() is a new method that returns if a specific key is
      stored in the session.
    * NEW: Response.GetContentTypeFrom() is a new method that returns a MIME
      type from a path.
    * NEW: WebPage.ToString() is a new method that generates the webpage and
      returns it as a string.
    * NEW: Session.Keys is a new property that returns all keys used by the
      Session collection.

    [GB.XML]
    * BUG: XMLElement.AppendFromText() now behaves correctly if no extra
      arguments are given.
    * BUG: XMLElement.FromText() now correctly catches parsing exceptions.
    * BUG: The Boolean parameter 'Indent' of XMLDocument.ToString() is now
      correctly interpreted.
    * BUG: Serializing a comment that is a direct child of a document with
      indentation enabled does not crash anymore.
    * BUG: The Document.All property is now correctly declared as an XMLNode[]
    * BUG: The XML DOM parser now correctly handles white spaces.
    * BUG: Fix MacOSX compatibility.
    * BUG: Fix MacOSX detection for GCC.
    * BUG: Fix the Like-pattern matching of the
      XmlElement.GetChildrenByAttributeValue() method.
    * BUG: Fixed the XMLNode.Attributes enumeration.
    * BUG: Fixed XMLExplorer taking the document itself as a node.
    * NEW: Added a new Document property to XMLExplorer.
    * NEW: Added the Name and Value properties to XMLReader.Node.Attributes and
      XMLNode.Attributes, to get the name and value of the enumerated attribute.
    * OPT: Rewrote internal exception handling.

    [GB.XML.HTML]
    * BUG: Serializing a comment that is a direct child of a document with
      indentation enabled does not crash anymore.
    * BUG: The HTML DOM parser now correctly handles white spaces.
    * BUG: Now correctly uses the MacOSX fix when needed.
    * BUG: Fix the implementation of HTMLDocument.GetElementById().

    [GB.XML.RPC]
    * BUG: 'miniServer' would give an out-of-bound with multiple parallel requests.
    * BUG: 'miniServer' could crash on an invalid request.

    [GB.XML.XSLT]
    * BUG: Fixed internal error management.
    * NEW: Added a new method XSLT.TransformToString() that returns a string
      instead of an XML document.

## Compatibility

All Gambas 3.x versions will be backward-compatible, i.e. a program written in Gambas 3.x version will be able to run unchanged with any Gambas 3.y version, provided that y > x.

But the contrary is false! a program written with a specific Gambas 3.x version will not run with an older version.

## Compilation and installation

Read the instructions there.

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

Enjoy it !

### See also

- Gambas 3.5.0