Gambas 3 RC2

What's new

This release is the second release candidate of Gambas 3.

More than one hundred bugs were fixed everywhere, and the following new features were implemented:
  • A new Lithuanian translation.

  • The CSV import is more clever.

  • The menu editor has been redesigned.

  • The code formatter has been enhanced.

  • Many new OpenGL examples were added.

  • A new control, DataComboView, that replaces the old DataComboMulti.

  • Exist now takes a new optional boolean argument, that tells the interpreter if symbolic links must be followed or not.

  • The Application.Return property has been removed. Now, to define the process exit value, just return it from the Main function.

  • MySQL 5 BIT field datatype is supported.

  • Support for the https protocol in the HttpClient class.

  • Support for any mime type and any charset in SmtpClient.

  • A lot of new functions were added to the OpenGL components.

  • Support for fade in and fade out in the gb.sdl.sound component.

As usual, please report any compilation and packaging problem on the mailing-list!

Thanks in advance.

ChangeLog

[CONFIGURATION]
* BUG: Remove generated ltmain.sh files.
* NEW: Update FSF address in every source file.

[DEVELOPMENT ENVIRONMENT]
* BUG: Fix keyboard handling in editor procedure list.
* BUG: In the procedure list, finding a procedure by typing its name
  correctly scrolls the list.
* BUG: Classes coming from libraries are correctly taken into account in
  automatic completion now.
* BUG: Fix the layout of the help window the first time it is shown.
* BUG: Don't fail when there is no IDE settings file yet.
* BUG: When loading a Gambas 2 project, GridView.Data BackColor and
  ForeColor properties are correctly converted.
* BUG: Fix Autotools project packaging.
* BUG: Autotools project packaging cannot handle extra packages
  dependencies.
* BUG: Autotools project packaging does not handle extra files
  dependencies yet. It will be fixed later.
* BUG: Fix loading of old Gambas 3 projects without ".src" directory.
* BUG: Multi-dimensional arrays are now correctly displayed by the
  debugger.
* BUG: Circular inheritance does not freeze the automatic completion
  anymore.
* BUG: Do not hide balloon message displayed on the project tree
  immediately.
* BUG: Do not increment the version release number anymore when making an
  installation package.
* BUG: Remove the "Show toolbox" menu entry. Its behaviour was not
  intuitive at all.
* BUG: Clicking on a void index table in the database editor does not crash
  anymore.
* BUG: Add missing pkgdesc entry in the PKGBUILD.
* BUG: Don't crash when scanning a class, if that class inherits a form.
* BUG: Starting a new search automatically resets the search list.
* BUG: Double-clicking on a control while the project is running does not
  try to insert an event handler anymore.
* BUG: Hidden exported classes cannot be controls!
* BUG: Modifying table fields and indexes many times now works correctly.
* BUG: Fix drag & drop between two IDE windows.
* NEW: The recent files list should be correctly refreshed now if another
  Gambas instance updates it.
* NEW: Czech translation updated.
* NEW: Lithuanian translation made by Regimantas Baublys.
* NEW: Add support for latin language.
* NEW: Use the new Application.ShowTooltips property.
* NEW: Update Catalan translation.
* NEW: The database editor now can export table data and request results to
  CSV files.
* NEW: Handle the "_property" special method in automatic completion.
* NEW: Change default code snippets.
* NEW: Hitting ENTER inside a comment line automatically begins a new
  comment line. Using SHIFT disables that feature.
* NEW: "Pretty print" is now "Format code".
* NEW: New option tab the code formatter in the option dialog.
* NEW: An option to format code when loading or saving a file.
* NEW: The menu editor has been redesigned.
* NEW: Pretty printer now acts on selected text.
* NEW: CSV import and automatic field conversion now can deal with both
  localized and non-localized data (i.e. floating point numbers with point
  or comma).

[WIKI CGI SCRIPT]
* BUG: The front page now is correctly version dependant.
* BUG: Do not add "v3" at the end of a link that has "v2" explicitely.
* NEW: Use a combo-box now for selecting the current version.
* NEW: Update Catalan translation.
* NEW: Automatic OpenGL documentation.

[WEB SITE MAKER]
* NEW: Activate the Gambas 3 download button.
* NEW: Czech translation updated.
* NEW: Update for Gambas 2.23.1.

[EXAMPLES]
* BUG: Remove printing from BarCode example, it does not work anymore.
* NEW: A new example based on the GNU Scientific Library, made by Juergen
  Zdero and modified by me.
* NEW: Lighttable: menu added for opening a new folder.
* NEW: Update Catalan translation of few examples.
* NEW: Add the NeHe OpenGL examples compiled by Kevin Fishburne. There are
  two projects: one that includes all examples, and another one that is
  a GUI shell for compiling and running those examples.
* NEW: Use the new OpenGL constants names in OpenGL examples.
* NEW: Add the forgotten TunnelSDL example.
* NEW: Use the new OpenGL constants names in the 3DWebCam example.

[INTERPRETER]
* BUG: Recursive release of pending objects at program's end is more robust
  now.
* BUG: Using "AM/PM" in date format does not confuse next date to string
  conversions anymore.
* BUG: Fix conversion from floating point number to date when the number is
  negative.
* BUG: Eval("Me") does not crash anymore.
* BUG: [...] now correctly returns a boolean array when its arguments are
  all booleans.
* BUG: Fix a possible memory leak if the [...] array creation operator
  fails for any reason.
* BUG: Write and Read instructions now deal with NULL values without crashing.
* BUG: Translatable string constants are now correctly translated when they
  are used as public symbols.
* BUG: Fix escaped characters handling in date format strings.
* NEW: Stream.Lines is a new property that allows to enumerate a stream
  line by line until end of stream is reached.
* NEW: '_property' is a new special method that must return TRUE when an
  unknown symbol (stored in Param.Name) is a property. If that special
  method is not implemented, all unknown symbols are methods.
* NEW: Remove the deprecated constant gb.Text.
* NEW: Param.Property has been removed.
* NEW: Remove the GB.IsProperty() API, that is useless now.
* NEW: Byte[].FromString() is now a static method that creates a new byte
  array from a string.
* NEW: Remove the unused GB.ExistFile() API.
* NEW: Exist() now takes an additional optional boolean argument that tells
  if symbolic links must be followed, like Stat().
* NEW: Remove useless Qt 3 shared library preloading support.
* NEW: Support for profiling. Not activated.
* NEW: Centralize signal handler management.
* NEW: The Main startup function now can return a value. If that value is
  an integer or a boolean, then it will be the exit value returned to the
  parent process.
* NEW: The Application.Return property has been removed.
* NEW: Be more robust with native method signatures that forget the ';' at
  the end of a class name, provided that a brace follows.
* NEW: Abort if a native class declares the same symbol twice.
* NEW: Two more standard error messages declared in gambas.h

[COMPILER]
* NEW: Handle the new '_property' special method. That method must be
  public, dynamic, takes no argument, and must return a boolean.

[ARCHIVER]
* NEW: Don't abort if the executable flags of the resulting file cannot be
  set, because the file system has been mounted with the "noexec" flag (for
  example).

[SCRIPTER]
* BUG: Don't require /tmp to allow executable files.
* BUG: Running a script now correctly returns the value specified by
  the Application.Return property.
* NEW: The name of a cached compile script is now the name of the original
  script stored in a directory whose name is the MD5 sum.
* NEW: Use the new way of defining the process exit value.

[GB.DB]
* BUG: Type mismatch error is correctly raised now when setting the value
  of a Result field.

[GB.DB.FORM]
* NEW: DataSource.Count is a new property that returns the number of
  records of the DataSource.
* NEW: Replace the DataComboMulti control by a DataComboView control. It is
  not completely well tested, but it works better than its predecessor.
* NEW: Data controls icons were redesigned.
* NEW: Do not resize automatically the rows in DataView.
* NEW: In Dataview, only resize the current row.

[GB.DB.MYSQL]
* BUG: When creating a table, use "ENGINE" keyword instead of "TYPE" with
  MySQL >= 4.0.18.
* NEW: Support for MySQL 5 BIT(x) field datatype.

[GB.DB.ODBC]
* BUG: Fix a stupid crash that occurs on 64 bits systems only.

[GB.DBUS]
* BUG: Use the new special method _property to implement DBus properties.
* BUG: Settings a DBus property does not freeze anymore. But there is
  memory leak yet.
* BUG: Fix a memory leak when sending a DBusVariant object.
* NEW: Add a DBusConnection.Unregister method to unregister a Gambas object
  from the bus. When all objects are unregistered, the application can
  quit.

[GB.FORM]
* BUG: Fix drawing of colorized dates in the DateChooser control.
* BUG: Wizard containers is now an exported hidden class, so that
  automatic completion works in the IDE.
* BUG: Setting the ScrollArea.Painted property works correctly now.
* BUG: Really fix the problem with ScrollArea having the Painted property
  set.
* BUG: IconView MoveFirst(), MoveNext(), MovePrevious() and MoveTo()
  methods now correctly return TRUE when no item is available.
* NEW: Add an "open in file manager" action in FileChooser and DirChooser
  controls, when the gb.desktop component is loaded.
* NEW: Czech translation update
* NEW: Update Catalan translation.
* NEW: IconPanel now automatically resizes the left panel to fit its
  contents.
* NEW: The IconPanel left panel now correctly resizes itself to fit its
  contents.
* NEW: IconPanel takes the mouse wheel into account now.

[GB.FORM.DIALOG]
* NEW: Czech translation update
* NEW: Update Catalan translation.

[GB.GTK]
* BUG: Remove some debugging stuff in the Printer class.
* BUG: Correctly raise Show and Hide events in the Watcher class.
* BUG: Application.ShowTooltips really works now, and apparently it is not
  desktop-wide, but application-wide as expected.
* BUG: Clean up the MovieBox implementation.
* BUG: Clean up the PictureBox implementation.
* BUG: Fix the PictureBox aligment property.
* BUG: The Printer End event is correctly raised now.
* BUG: Fix a crash in GridView when the gb.gtk component shared library is
  freed.
* BUG: Fix two crashes in GridView control.
* BUG: Compile again with GTK+ 2.x.
* BUG: Fix how popup windows are displayed.
* NEW: The Application.Tooltip virtual class has been removed.
* NEW: Application.ShowTooltips is a new property to define if tooltips are
  visible or not.
* NEW: MovieBox.Alignment is a new property that defines the alignment of
  the movie inside the MovieBox frame.
* NEW: GridView.Columns[].Expand is a new property that allows to define if
  a column automatically expands to fit the GridView visible width,
  provided that the GridView.AutoResize property is set. If no column has
  its Expand property set, then the last column will expand anyway.
* NEW: Remove the Window.Type property and the WindowType class.

[GB.IMAGE]
* BUG: Image.PaintImage() incorrectly handled alpha channel compositing.

[GB.NET.CURL]
* BUG: Fix HttpClient URL property.
* BUG: HttpClient.Post and HttpClient.Put are now more tolerant when
  checking the Content-Type validity.
* BUG: Refuse void URLs in HttpClient and FtpClient.
* NEW: Support for the https protocol in the HTTP client.
* NEW: The default HttpClient user-agent string is now (on Linux):
  "Gambas/3.0 (gb.net.curl; Linux)"

[GB.NET.SMTP]
* BUG: Search openssl in '/usr/bin' or '/bin', and raise an error if it is
  not found.
* BUG: Don't crash if the subject is void.
* NEW: Allow the subject to be a void string.
* NEW: Support for any mime type and any charset in SmtpClient.

[GB.OPENGL]
* BUG: No need to search for glu.h file.
* BUG: Use pkg-config to detect needed libraries, should fix building on OSX.
* BUG: Restore prefix GL in glew header inclusion for debian based packages.
* BUG: Correctly specify the number of color components when using an Image
  in an OpenGL function: glTexImage1D, glTexImage2D, gluBuild2DMipmaps...
* BUG: In GLeval.c changed GB_SINGLE to GB_FLOAT to make Gl2Map work.
* BUG: Three constants and methods had the same name. So I added an
  underscore to these constants to fix that. Now you must use GL.ACCUM_,
  GL_CLEAR_, and GL_VIEWPORT_.
* BUG: Doubled definition of TEXTURE_RECTANGLE_ARB - removed one.
* NEW: Add support for GL evaluators, some associated Gets are missing.
  (Tomek)
* NEW: Gl.CheckExtensions() to check the openGL driver extensions/ability
  support.
* NEW: Multitexture mapping constants and gl.ActiveTexture function.
* NEW: Add some FramebufferObject extension functions.
* NEW: Add all constants for GL_EXT_framebufferobject extension
* NEW: Remove "GL_" from the constant names in the Gl class. The old
  constant names are supported, but emit a warning message.
* NEW: Add methods Gl.BindRenderbufferEXT(), Gl.GenRenderbuffersEXT() and
  Gl.IsRenderbufferEXT().
* NEW: Add Gl.DeleteFramebuffersEXT(), Gl.DeleteRenderbuffersEXT(),
  Gl.IsFramebufferEXT() and Gl.RenderbufferStorageEXT() methods.
* NEW: Add Gl.FramebufferRenderbufferEXT(), Gl.FramebufferTexture1DEXT(),
  Gl.FramebufferTexture3DEXT(), Gl.GenerateMipmapEXT(),
  Gl.GetFramebufferAttachmentParameterivEXT(),
  Gl.GetRenderbufferParameterivEXT() methods.
* NEW: Add support for GL_ARB_texture_rectangle extension.
* NEW: Add Gl.EvalCoord2fv() evaluator method.
* NEW: glTexGen and glMultiTexcoord functions.

[GB.OPENGL.GLSL]
* BUG: Restore prefix GL in glew header inclusion for debian based packages.
* BUG: Remove FramebufferObject extension functions from glsl component.
* NEW: GLSL attribute variable definition and setting functions.

[GB.OPENGL.GLU]
* NEW: Nurbs functions.
* NEW: Basic quadratic shapes (sphere, cylinder, cone, disk).
* NEW: Remove "GLU_" prefix from GLU constants.
* NEW: Add many GLU constants used by the GLU methods implemented in the
  component.
* NEW: Add Glu.QuadricOrientation() and Glu.QuadricDrawStyle() methods.

[GB.PDF]
* BUG: Make gb.pdf compile with poppler 0.17.

[GB.QT4]
* BUG: GridView default background and foreground colors are correctly
  taken into account now.
* NEW: The Application.Tooltip virtual class has been removed.
* NEW: Application.ShowTooltips is a new property to define if tooltips are
  visible or not.
* NEW: MovieBox.Alignment is a new property that defines the alignment of
  the movie inside the MovieBox frame.
* NEW: GridView.Columns[].Expand is a new property that allows to define if
  a column automatically expands to fit the GridView visible width,
  provided that the GridView.AutoResize property is set. If no column has
  its Expand property set, then the last column will expand anyway.
* NEW: Remove the Window.Type property and the WindowType class.

[GB.QT4.EXT]
* BUG: Fix how the cursor is ensured to be visible in the Editor class.
* BUG: Some fixes in the undo/redo management of the Editor class.
* BUG: Fix an uninitialized variable in GEditor class.
* BUG: Fix undo/redo management in Editor control.
* BUG: In Editor, fix handling of text lines having non-ascii characters
  inside.

[GB.REPORT]
* NEW: Czech translation update
* NEW: Add Catalan translation.

[GB.SDL]
* BUG: Enable stencil buffer support.
* BUG: Use pkg-config to properly detect dependencies.
* BUG: Restore prefix GL in glew header inclusion for debian based packages.
* BUG: SDL_ttf prior to 2.0.10 doesn't provide pkg-config file, so add manual checking of files.
* BUG: Add missing linking against libXcursor.
* BUG: fix a typo in configure.ac
* BUG: Redesign the way keyboard events are processed, so that SDL
  constants are used. Consequently, all Key constants now work, but '1' and
  '&' have different codes on a french keyboard. Key.Text works too.
* BUG: Key[x] works correctly with letter keys now.
* NEW: Key.Repeat is a new static property for enabling keyboard
  repetition.

[GB.SDL.SOUND]
* BUG: Allocating more than 8 channels now works correctly.
* NEW: Implement support for fade in and fade out in the Sound and Channel
  classes.
* NEW: The maximum number of channels is now 64.

[GB.SETTINGS]
* BUG: Use a lock to prevent simultaneous writings of the same settings
  file.
* NEW: The Settings.Path property has been renamed as Settings.DefaultDir.
* NEW: Now Settings.Path returns the path of the settings file on the disk.

[GB.WEB]
* BUG: JSON.Decode() now returns NULL if there is no token in the input
  string.

Requirements

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

Component Requirements
Compilation gcc g++ automake autoconf libtool > 2.0
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.gtk All GTK+ libraries >= 2.10 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 10.10:
  • automake 1.11.1

  • autoconf 2.67

  • libtool 2.2.6b

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