Gambas 3.6.0

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 <[email protected]>"
  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