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

Gambas 3.1.0

What's new

This new release fixes more than 150 bugs and adds more than 120 new features.

All Gambas 3.x versions will be backward-compatible, i.e. a program written in Gambas 3.0 version will be able to run unchanged with any Gambas 3.x version. But the contrary is false: a program written with a specific Gambas 3.x version will not run with an older version.

Beware that this is taken into account by the IDE packager only since Gambas 3.1!

Here is a short list of the main new features and bug fixes. I suggest that you read the full ChangeLog anyway!

In the development environment:

  • The packager is now usable and reliable. Generated packages now have dependencies on Gambas version greater or equal than 3.1.0 and strictly lower than 3.99.0.

  • The form editor has now undo and redo support.

  • ASP-like webpage support.

  • Libraries now can have requirements exactly like components.

  • The debugger is more clever: it can displayed the contents of array-like and collection-like classes.

In the interpreter:

  • CHMOD, CHOWN and CHGRP were implemented.

  • The MkBool$, MkShort$, MkInt$... functions made a come back.

  • Libraries are now managed like components, i.e. their dependencies are not loaded automatically.

  • The old GOSUB instruction has been implemented.

  • The interpreter stack is now allocated through the mmap() system call, making it very fast.

In the compiler:

  • A property now can has up to four different synonymous names.

  • ASP-like webpage support.

In the components:

  • gb.db.form has been fixed.

  • The native gridview control has been replaced and enhanced by a control entirely made in Gambas. This control can handle millions of lines without eating all memory.

  • gb.gsl is a new component made by Randall Morgan that will provide an interface to the GNU Scientific Library.

  • Control.NoTabFocus is a new property that prevents a control from being in the TAB key focus chain.

  • The Gambas code editor undo management has been fixed.

Enjoy it!

ChangeLog

[CONFIGURATION]
* BUG: Explicitely use /bin/bash in the make-component script.
* NEW: Update the TEMPLATE directory and its script.

[DEVELOPMENT ENVIRONMENT]
* BUG: In Report forms, draw ReportImage and ReportSvgImage according to
  their Stretch property.
* BUG: Table chooser works correctly again.
* BUG: Do not try to handle Home and End keys in editors.
* BUG: Fix the translation of error messages made by the debugger.
* BUG: Information system dialog is now better at detecting libraries.
* BUG: Fix some crash in database manager when removing fields or index.
* BUG: Fix background and foreground color buttons order in the icon
  editor.
* BUG: Do not allow to add source files in the data directory, and data
  files in the source directory.
* BUG: Fix handling of null String[] properties.
* BUG: Fix filters in the file creation dialog.
* BUG: Fix the form editor grid horizontal position.
* BUG: Correctly use the project tabulation size in automatic structure
  completion.
* BUG: Fix the tips of the day language selection.
* BUG: Changing the number of tabs of a Report works again.
* BUG: Fix a possible crash when the form editor gets a spurious resize
  event whereas undo management has been uninitialized.
* BUG: Correctly handle libraries that depends on more than one component.
* BUG: Pasting text as comments correctly converts tabulations into spaces.
* BUG: Set the focus back to the editor after a paste operation.
* BUG: Try to fix the spurious error that is raised sometimes when clicking
  on a control in the form editor.
* BUG: Make error message tooltips always visible.
* BUG: Fix error when inserting a new form with dialog management option
  checked.
* BUG: Fix version requirements on components in the packager.
* BUG: Many Shell$() calls were forgotten in the packager code.
* BUG: Don't save cursor position during a text selection.
* BUG: Help browser toolbar now uses the small font size defined in the
  option dialog.
* BUG: The default vendor prefix is now "gambas3" and not "gambas", so that
  component packages are correctly named.
* BUG: Fix extra files and extra dependencies tables in the packager.
* BUG: Fix file information dialog.
* BUG: In the open project dialog, setting the recent files sorting mode
  now correctly takes the filter into account.
* BUG: Fix packages version requirements. Minimal version is the current
  one (3.1) and maximum version is 3.99.0.
* BUG: Fix extra files management in the packager. Workaround a Debian
  design flaw in packaging tools.
* BUG: Do not try to move to a specific line when opening a form.
* BUG: In the packager wizard, check that each extra file has a target
  directory.
* BUG: Fix the Slackware packaging routine.
* BUG: Autocompletion on ME now works correctly for WebPage.
* BUG: Fix package generation for Mageia.
* BUG: Choosing directories as extra files to package now works correctly
  for RMP, DEB and TGZ packages.
* BUG: Remove PREFIX support in autotools package generation. Currently
  it's buggy AND useless.
* BUG: ArchLinux package now support extra dependencies.
* BUG: Fix a crash when opening a form with a tabstrip, when a "move tab
  button" is pressed.
* BUG: Generation of Archlinux binaries packages in the IDE doesn't check
  dependencies anymore, so they can be built with SVN version also.
* NEW: Use a TabPanel instead of a TabStrip to draw the Report form.
* NEW: Make the grid visible in all form families, and align it correctly
  even in a Report form.
* NEW: Undo & Redo were implemented in the form editor.
* NEW: The port can be defined now in the connection dialog.
* NEW: Global editor position history. Two new buttons and menu entries
  allow to move forward and backward into that history.
* NEW: Add a history popup menu.
* NEW: Support for the new Invert arrangement property.
* NEW: WebPage support.
* NEW: Add gb.gsl to the list of components.
* NEW: Update Catalan translation.
* NEW: Traditional Chinese translation made by Timothy Lin.
* NEW: Libraries now can have requirements exactly like components. This is
  taken into account by the project property dialog.
* NEW: Make project creation dialog and project 'Save As' dialog less
  difficult to understand.
* NEW: Take property synonymous into account.
* NEW: Less flickering when displaying project items.
* NEW: Update czech translation.
* NEW: Update logos.
* NEW: A new panel in the option dialog that allows to define which files
  must be ignored when creating a source package or an installation
  package.
* NEW: Update error messages.
* NEW: Font size options has been renamed as "Default font size" and "Small
  font size". The small font size is now used for all toolbars.
* NEW: The help browser proxy can be configured.
* NEW: The debug window has a button to switch between "normal view" and
  "symbol view". In "normal view", array and collection contents are
  displayed. If the object is not an array or a collection, then all
  non-hidden symbols are displayed. In "symbol view", all objects symbols
  are displayed, whatever the object type is.
* NEW: Error messages now can be displayed in normal text editors.
* NEW: Update Brazilian Portuguese translation.
* NEW: Update the alternate background color of all themes.
* NEW: Support for both Mageia and Mandriva.
* NEW: Packager configuration is now saved with a new format in the
  ".project" file. The old format is automatically converted.
* NEW: Check that packagers extra files really exist in the project
  directory.
* NEW: Packager configuration is now saved even for unchecked target
  systems.
* NEW: Now you can select directories as packager extra files.
* NEW: Update french translation.
* NEW: Update czech translation
* NEW: Swedish translation updated by Emil Lenngren.
* NEW: Archlinux packages support dependency against a specific component
  version. Other packages use the old behaviour.
* NEW: Archlinux packages now support installation of extra files.

[WIKI CGI SCRIPT]
* NEW: @index now can sort pages by ignoring a prefix but by displaying the
  full page title anyway in the index.

[EXAMPLES]
* BUG: Add lost files ...
* BUG: Fix the DragNDrop example.
* BUG: Add gb.form to the dependencies of the PictureDatabase example.
* NEW: Port can be defined in the Database example.
* NEW: New MineSweeper example made by Timothy Lin and slightly modified by
  me.

[BENCHMARKS]
* NEW: New N-Poly benchmarks.
* NEW: All benchmarks times were updated on the wiki.

[INTERPRETER]
* BUG: EXEC / SHELL ... FOR INPUT now work correctly when OUTPUT is not
  specified, and there is no true terminal to get the data that is not
  redirected.
* BUG: Missing return values are correctly catched in operators now.
* BUG: Terminal emulation now does not automatically convert NL to CR+NL.
* BUG: Fix the declaration of custom array classes.
* BUG: Fix IIf() when its arguments have different types.
* BUG: Fix IIf() when the returned values are objects.
* BUG: Fix bits manipulation routines on Short values.
* BUG: Fix inline array operator when mixing objects and standard
  datatypes.
* BUG: Fix the Param array accessor, that returns a specific extra argument
  from its index.
* BUG: Float and Single constants are now supported in native classes.
* BUG: Make date formatting more consistent when the date part or the time
  part is null.
* BUG: The time part of a formatted date is never automatically removed
  anymore.
* BUG: Object.Call() returns its value correctly now.
* BUG: Fix translatable string constants inheritance.
* BUG: Fix enumeration abortion.
* BUG: Convert the return value of a native function to a variant
  automatically only if the function call is done by a "CALL" bytecode.
  Consequently the gb.signal component works again.
* BUG: Constructors that receive too many arguments now correctly raise an
  error.
* BUG: CATCH and FINALLY correctly restore the stack pointer. Without that,
  it is possible to use more stack than possible and to crash the
  interpreter.
* BUG: Correctly release the stack when dealing with a CATCH / FINALLY
  instruction.
* BUG: Destructors now can safely raise errors. If these errors are
  ignored, the object is released anyway.
* BUG: LINE INPUT does not try to incorrectly release its stream argument
  anymore when there is no stream argument.
* BUG: Adding years with DateAdd() to 29 Feb now switch to 28 Feb not to
  create invalid dates if the result is not in a leap year.
* BUG: Fix structure field padding.
* BUG: Fix String.Mid$() when the third argument goes after the string
  length.
* BUG: Fix String.Left$() when the second argument is greater than the
  string length.
* BUG: INPUT does not leak memory anymore.
* BUG: RDir() now browse directories recursively even if the filter
  argument is gb.File.
* BUG: IIf() and [...] do not accept non-value datatypes (Class and
  Function).
* BUG: In memory checking routines, take previous SIGSEGV and SIGBUS signal
  handlers into account now.
* NEW: Define a minimum and maximum bytecode version that the interpreter
  can handle.
* NEW: New error message when a child process cannot be run for any reason.
* NEW: System.FullVersion now returns the full version string, with major,
  minor and release.
* NEW: Chmod, Chown and Chgrp were implemented.
* NEW: Stat.Auth is a new property that returns the file mode as a string,
  using the format of the 'chmod' shell command.
* NEW: Rmdir raises a specific 'Directory is not empty' error now, when
  trying to remove a non-empty directory.
* NEW: The Html$() function now converts unicode non-breaking space (code
  160) in a " " entity.
* NEW: IsNan() is a new function that returns if a floating point value is
  not a number.
* NEW: IsInf() is a new function that returns +1 if a floating point value
  is +Inf, -1 if it is -Inf, and 0 if it is a normal number.
* NEW: Swap$() is a new function that swaps a string.
* NEW: The MkBool$(), MkShort$(), MkInt$()... functions come back!
* NEW: System.Shell is a new property that allows to define the shell used
  by the Shell instruction. By default, this is '/bin/sh'.
* NEW: Loading a library does not load its dependencies automatically
  anymore. Now they behave like components, and the IDE will have to
  compute the dependencies.
* NEW: Formatting a date with gb.GeneralDate now always prints the time.
* NEW: GB.RaiseBegin() and GB.RaiseEnd() are two new intepreter APIs that
  allow to define a callback that will be called if an exception is raised
  during a call to GB.Raise().
* NEW: 't' and 'tt' are two new date formatting patterns that display the
  timezone.
* NEW: New GOSUB instruction. You return from a GOSUB with the RETURN
  instruction alone. Consequently, you cannot exit from a 'SUB' with it if
  there is a pending GOSUB. The GOSUB stack is only limited by the
  available memory.
* NEW: INPUT now only read strings. It does not convert the read string
  with Val() anymore.
* NEW: The debugger now can display collection-like objects. An object can
  be displayed like a collection if it has a Count property, is enumerable,
  has a _get special method taking a string, and has a Key property that
  returns the key of the last enumerated element.
* OPT: Optimize IIf() when its two last arguments have the same datatype.
* OPT: A little optimization in Space$(), Upper$() and Lower$().
* OPT: EXEC / SHELL ... TO does not return the process output through a
  temporary string that will be freed later. If the string is big, then
  the memory is retained longer than necessary.
* OPT: Use mmap() to allocated the stack, not malloc(). Consequently,
  calling functions recursively are now very fast.
* OPT: A little optimization in LINE INPUT.

[COMPILER]
* BUG: Don't print a line number greater than the number of lines in the
  compiled file when displaying an error message.
* NEW: Chmod <path> To <mode> was implemented. <mode> is a string having
  the same format as the 'chmod' shell command.
* NEW: Chown <path> To <user> was implemented. <user> is the name of the
  user as defined in the /etc/passwd file.
* NEW: Chgrp <path> To <group> was implemented. <user> is the name of the
  group as defined in the /etc/group file.
* NEW: Start supporting WebPage.
* NEW: +Inf and -Inf are two new keywords for representing the
  corresponding special floating values.
* NEW: A property now can has up to four different names. The syntax is:
  "Property Name [ , Synonymous1, ..., Synonymous3 ] As Datatype".
* NEW: Raise an error now when using TRY with GOTO, BREAK, CONTINUE or
  STOP.
* NEW: New GOSUB instruction.
* NEW: New FAST keyword.
* NEW: Support of WebPage compilation.

[ARCHIVER]
* NEW: Put the '.component' file inside archives, so that the IDE can
  extract libraries requirements from the executable.

[SCRIPTER]
* BUG: Fix compilation of inline class declarations.

[GB.DB]
* BUG: Table.Type property now correctly handle null table types.
* BUG: Result.Update() now does not emit an incorrect request when the
  result has not been modified. It just does nothing.
* NEW: Support for port in a connection defined in the IDE.
* NEW: Connection.Handle is a new property that returns the
  database-specific internal handle.

[GB.DB.FORM]
* BUG: The DataBrowser and DataView controls have been fixed. There is only
  one problem to fix that depends on a gb.gtk bug.
* BUG: Fix a crash in DataView when it has no current row.
* BUG: DataBrowser: Clicking on the delete button does not delete two
  records anymore.
* BUG: DataBrowser: Saving a new record now correctly takes into account
  the currently edited field.
* NEW: DataBrowser.Grid is a new property to define the grid visibility.

[GB.DB.SQLITE3]
* BUG: Void blobs are correctly reset when enumerating a Result.

[GB.DBUS]
* BUG: Fix DBus method call when the method returns nothing. If there is an
  error, it is correctly raised.
* BUG: Fix memory leaks in DBus error management.
* BUG: Fix DBusObserver matching rules handling.

[GB.DEBUG]
* NEW: The debugger now can display collection-like objects. An object can
  be displayed like a collection if it has a Count property, is enumerable,
  has a _get special method taking a string, and has a Key property that
  returns the key of the last enumerated element.

[GB.DESKTOP]
* BUG: Desktop.Width and Desktop.Height are not overridden anymore.

[GB.DRAW]
* BUG: Accessing a temporarily closed drawing device now raises an error
  instead of crashing.
* BUG: Rect class can be used as a fonction correctly now.
* BUG: Setting Draw.Font to NULL does not crash anymore, and raise an error
  instead.

[GB.EVAL]
* BUG: Fix analyze of non-terminated strings and quoted symbols that could
  crash.

[GB.EVAL.HIGHLIGHT]
* BUG: 'undefined' is a javascript keyword.
* NEW: Support for server-side comment syntax in WebPage highlight routine.
* NEW: Update WebPage highlighting, and handle the new syntaxes.

[GB.FORM]
* BUG: The last pixels of a TabPanel button are clickable now.
* BUG: Fix ValueBox in design mode.
* BUG: Fix ListContainer control.
* BUG: Fix ToolPanel Index value when decreasing the Count property.
* BUG: The TableView editing field is now never larger than the TableView
  contents.
* BUG: ButtonBox background is correctly drawn with gb.gtk.
* NEW: TabPanel buttons take a bit less space.
* NEW: Little fix in TabPanel button layout.
* NEW: FileChooser.ShowFile is a new property to hide or show the textbox
  that displays the file name.
* NEW: FileChooser got a new Margin property, that adds a margin around the
  FileChooser controls when set.
* NEW: Update Catalan translation.
* NEW: Wizard: Remove padding around contents when the wizard has no
  border.
* NEW: Make a GridView control entirely in Gambas. Contrary to its native
  implementation, it can handle millions of lines without eating all
  memory.
* NEW: GridView.ShowCursor is a new property that displays a light cursor
  around the current cell when set.
* NEW: IconPanel now uses a GridView and not an IconView anymore.
* NEW: GridView.Rows.Select and Unselect methods now selects (or unselects)
  one line if their second argument is omitted.
* NEW: GridView: Setting the column width to -1 make it fit its contents.
* NEW: GridView: Double-clicking on the right limit of a column make it
  fit its contents.
* NEW: The stock icon named "earth" has been renamed as "internet".
* NEW: GridView[].EnsureVisible now keeps the left part of the cell always
  visible.
* NEW: GridView columns have two new properties: Alignment and Background.
* NEW: GridView.Sort and GridView.Ascending are two new properties to
  define which column shows a sort symbol.
* NEW: GridView.Sorted is a new property to automatically handle column
  clicks and display the sort symbol.
* NEW: You can now find IconView items by directly typing their name while
  the control has the focus.
* NEW: Use a mix between Color.LightBackground and Color.TextBackground form
  the Balloon background.

[GB.FORM.DIALOG]
* NEW: Take the new Dialog.ShowHidden property into account.

[GB.FORM.MDI]
* BUG: Fix ToolBar behaviour when none of its children has an action.

[GB.FORM.STOCK]
* BUG: Do not require gb.gtk, so that compilation does not fail if gb.gtk
  is not available.

[GB.GSL]
* NEW: New component made by Randall Morgan that will provide an interface
  to the GNU Scientific Library. The basic math functions are mostly
  complete as well as the basic complex number functions.

[GB.GTK]
* BUG: Stopping a file descriptor watch now correctly checks if the event
  loop must be exited.
* BUG: Fix Cached DrawingArea having a border.
* BUG: Make gb.gtk compile with GTK+ versions older than 2.18.
* BUG: Correctly handle GotFocus and LostFocus events for proxies.
* BUG: Now raise an error when using text-box methods on read-only
  combo-boxes.
* BUG: Dialog.SelectDirectory() now correctly takes into account
  Dialog.Path.
* BUG: Fix Dialog.ShowHidden.
* BUG: The TreeView/ListView/ColumnView Click event now should behave the
  same way as in gb.qt4.
* BUG: The inner container of a UserContainer is now automatically its
  proxy control.
* BUG: If the DrawingArea Draw event handler raises an error, then the
  interpreter should not crash anymore.
* BUG: Mouse events are now cancelable, like in gb.qt4, so that proxies can
  prevent their propagation.
* BUG: Draw checked menu items correctly.
* BUG: GTK+ callbacks must return a gboolean, not a bool. The C++ compiler
  does not compile the same thing in both cases!
* BUG: Remove some debugging messages.
* BUG: Handle GTK+ events, but not Gambas posted routines when setting the
  application busy cursor.
* BUG: Fix container children management.
* BUG: Fix TabStrip management.
* BUG: Try to handle the Menu event the same way as in gb.qt4.
* BUG: Do not try to change the background color of menus. It breaks GTK+
  widget style like Ambiance.
* BUG: The print output file name is correctly unescaped now.
* BUG: Try to handle Leave/Enter events the same way as in gb.qt4.
* NEW: GTK+ 2.16 is now required.
* NEW: Containers now have a new Invert property, that reverts horizontal
  arrangements.
* NEW: Dialog.ShowHidden is a new property to show or hide hidden files. It
  does not work on GTK+ at the moment. Is it a GTK+ bug?
* NEW: Control.NoTabFocus is a new property that prevents a control from
  being in the TAB key focus chain.
* NEW: Font.Copy() is a new method to copy a font object.
* NEW: GTK+ GridView has been removed.
* NEW: The Container Insert event has been renamed as NewChild.
* NEW: Align.IsTop(), Align.IsBottom(), Align.IsMiddle(), Align.IsLeft(),
  Align.IsRight() and Align.Center() are new methods that allow to know the
  direction of an alignment according to the current language direction.

[GB.IMAGE]
* BUG: Image.Colorize() now takes the color brightness into account.

[GB.NET.CURL]
* BUG: Fix allocation of initial FtpClient URL.

[GB.QT4]
* BUG: Correctly handle GotFocus and LostFocus events for proxies.
* BUG: Correctly handle Menu events for proxies.
* BUG: DrawingArea: Visible property now works correctly when the Cached
  property is set.
* BUG: DrawingArea: Fix crash when setting the Cached property to True,
  then to False.
* BUG: Drag & drop is allowed when the DragMove *or* the Drop events are
  handled.
* BUG: The inner container of a UserContainer is now automatically its
  proxy control.
* BUG: If the DrawingArea Draw event handler raises an error, then the
  interpreter should not crash anymore.
* BUG: Fix Draw.RichTextWidth() by rounding the internal floating point
  width up.
* BUG: Do not crash when UserControl or UserContainer container is deleted.
* BUG: Delete the Qt4 application class in component exit routine,
  otherwise Qt 4.8 seems to crash sometimes.
* BUG: If a form is defined as being not visible, then using it as a
  startup form won't show it.
* BUG: Fix ToolButton text and picture alignment.
* BUG: Enter and Leave events are now correctly generated from a window
  that has been opened with the ShowPopup() method.
* BUG: Workaround an Oxygen bug with ScrollView borders.
* BUG: Setting ScrollView.Border correctly refreshes the scrollbars now.
* BUG: Fix cached DrawingArea updates.
* BUG: Fix the Enter/Leave events management so that Enter events are
  correctly generated when a control is destroyed.
* NEW: Containers now have a new Invert property, that reverts horizontal
  arrangements.
* NEW: Dialog.ShowHidden is a new property to show or hide hidden files.
* NEW: Control.NoTabFocus is a new property that prevents a control from
  being in the TAB key focus chain.
* NEW: Font.Copy() is a new method to copy a font object.
* NEW: Qt4 GridView has been removed.
* NEW: The Container Insert event has been renamed as NewChild.
* NEW: Align.IsTop(), Align.IsBottom(), Align.IsMiddle(), Align.IsLeft(),
  Align.IsRight() and Align.Center() are new methods that allow to know the
  direction of an alignment according to the current language direction.
* NEW: Do not display translation warning anymore when choosing the "C"
  translation. Just uninstall the current translation (if any) silently.
* OPT: Make part of the internal widget structure optional to save a bit of
  memory when rarely used properties are not set.

[GB.QT4.EXT]
* BUG: Disable kerning when drawing text in Editor.
* BUG: Editor: Fix cursor management when the file end is folded.
* BUG: Editor cursor is ensured to be visible when it is visible, not when
  it has just the focus.
* BUG: Fix an uninitialized field in Editor internal GLine class.
* BUG: Fix bad interactions between highlighting and undo management.
* NEW: Make bold text more readable in Editor.
* NEW: Editor: Do not highlight the current line when losing the focus.

[GB.QT4.WEBKIT]
* NEW: WebSettings.DefaultProxy is a new constant for using the default
  proxy configuration.

[GB.SIGNAL]
* BUG: Fix compilation on Windows/Cygwin.

[GB.V4L]
* NEW: Compile with success on FreeBSD.

[GB.VB]
* BUG: Fix compilation on Windows/Cygwin.

[GB.WEB]
* BUG: Setting a Request value to NULL now works as expected.
* NEW: Url.Encode() and Url.Decode() now replace CGI.Encode() and
  CGI.Decode().
* NEW: Add two new static methods, URL.SetQuery() and URL.UnsetQuery() to
  set and unset a field inside the URL query.
* NEW: WebPage support is official.
* NEW: WebPage.Buffered is a new property to tell the generated HTML to be
  buffered  by using the Response.Buffered property.

Requirements

To compile Gambas, you must install the following libraries on your system :

Component Requirements
Compilation gcc g++ automake autoconf libtool > 2.4
(See requirements on autotools versions below)
Interpreter libffi
gb.compress.bzlib2 libbz2.so
gb.compress.zlib libz.so
gb.cairo cairo
gb.crypt libcrypt.so
gb.db.mysql libmysqlclient.so, libz.so
gb.db.odbc libodbc.so
gb.db.postgresql libpq.so
gb.db.sqlite2 libsqlite.so
gb.db.sqlite3 libsqlite3.so
gb.desktop libXtst.so
gb.gsl libgsl.so libgslcblas.so
gb.gtk All GTK+ libraries >= 2.14 librsvg2.so cairo
gb.image.io gdk-pixbuf
gb.image.imlib imlib
gb.net.curl libcurl.so
gb.opengl gb.opengl.glsl libGL.so, libGLEW.so
gb.opengl.glu libGLU.so
gb.pcre libpcre.so
gb.pdf libpoppler.so
gb.qt4 gb.qt4.ext gb.qt4.opengl gb.qt4.webkit All qt 4 libraries >= Qt 4.5
gb.sdl libSDL.so, libSDL_ttf.so, libGL.so, libGLEW.so
gb.sdl.sound libSDL.so, libSDL_mixer.so
gb.v4l libjpeg.so, libpng.so,Video4Linux >= 2.0
gb.xml libxml-2.0
gb.xml.xslt libxslt

And do not forget to install all related development packages!

Try to always use a recent version of these libraries.

In order to compile the development environment, you have to compile the following components: You must have the right to write to /tmp, otherwise Gambas will not work.

This package was done with the following versions of GNU tools on Ubuntu 11.10:
  • automake 1.11.1

  • autoconf 2.68

  • libtool 2.4

Compiling with older version may or may not work!

Compilation & Installation

Check installation

First, check that you installed all the needed libraries, and especially all the development packages.

Do not forget to look at the Compilation & Installation page. Maybe you will find important information specific to your distribution.

Source package configuration

When you are sure that everything is installed, type the following magic sentences in a shell.

'$' represents your shell prompt, and '...' are the messages printed during the configuration and compilation.

First, type that to create the configuration scripts.

$ ./reconf-all

Then type that to analyze the current system and configure the package:

$ ./configure -C
...

If a library or a development package is missing, then you will be warned that some components are disabled.

There are more 'configure' specific explanations in the INSTALL file located in the top-level source directory. I invite you to read them.

Compilation

If everything is configured without error, then run this command to compile the program:

$ make
...

Installation

If everything compiles without error, then enter this command to install everything:

You must be root to install Gambas on your system.

$ su -c "make install"
Password: <Type the root password here>
...

or

$ sudo make install
Password: <Type your password here>
...

Troubleshooting

If you did several successive compilations, after having updated the source from the subversion repository for example, and if something fails during all this process, you can try to "reconfigure" the configuration scripts by typing the following command:

$ ./reconf-all

Then you can run ./configure -C again

If it does not work, I need to know what happened exactly. To do so, type the following command :

$ ( ./configure -C; make; make install ) > output.txt 2>&1

And send me the file "output.txt" by mail, with every other detail about your computer and your distribution you find useful.

Running Gambas

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

Enjoy it !

See also