Gambas 3.3.0
What's new
This new release fixes more than 250 bugs and adds more than 250 new features.
Here are the main changes... Enjoy Gambas!
Development environment
-
A far more reliable packager.
-
Automatic local variable declaration.
-
TODO/FIXME/NOTE comments listing.
-
Bookmarks in text and code editor.
Interpreter & compiler
-
Support for complex numbers based on a new gb.complex component.
-
Arithmetic operators now can be act on number classes like Complex, Polynomial, Vector and Matrix.
-
Background tasks.
-
UTF-8 strings optimizations.
-
Compilation warnings on unused variables, unused functions and overridden symbols.
-
New WebPage syntaxes.
Components
-
gb.data is a new component that adds new container datatypes to Gambas.
-
Lot of fixes in the gb.db.form component.
-
Support for LXDE and Mate desktop in the gb.desktop component.
-
Stock icons now can use any installed icon theme, and has support for the LXDE desktop.
-
Support for tablets and pens in GUI components.
-
The gb.gsl component now implements polynomials, matrices, vectors and complex numbers completely.
-
gb.mime is a new component that allows to encode and decode MIME messages.
-
gb.net.pop3 is a new component that implements a POP3 client.
ChangeLog
[CONFIGURATION]
* BUG: When a top-level source directory actually has several components,
compile the sub-components *after* the main components. This is
especially important with gb.xml and gb.xml.rpc.
* BUG: Fix configuration issue for gb.qt.ext
* BUG: Fix the component template script.
* BUG: Do not distribute '.action' directories in source packages.
* NEW: Add support for the MacPorts distribution.
* NEW: Add a search path for OS X.
* NEW: Enable silent compilation.
* NEW: Standardize the help text of all command-line tools.
* NEW: Add gb.data component.
[DEVELOPMENT ENVIRONMENT]
* BUG: Do not apply the Ignore property in form editor.
* BUG: In form editor and form hierarchy window, correctly ignore controls
that are edition helpers (handles, ghost frame...).
* BUG: Fix rectangular selection in form editor.
* BUG: Correctly ignore ghost frame and arrangement icons when saving a
form.
* BUG: Ghost frame and arrangement icons are now correctly updated when the
mouse leaves a form editor.
* BUG: Do not crash when a component required by a library is missing.
* BUG: Do not display spurious 'missing component' messages in the project
property dialog.
* BUG: Array of classes exported by a component are now correctly handled
by the component interface analyzer.
* BUG: In the open project dialog, the project icon on the right pane is
correctly refreshed now.
* BUG: Fix automatic completion of project classes that reimplements
another class.
* BUG: Fix a selection error when removing a container while keeping its
children.
* BUG: Fix symbol scan of project classes with no parent.
* BUG: Fix some spurious errors when refreshing classes and symbols
descriptions.
* BUG: Fix a circular reference.
* BUG: Fix form editor selection frame when scrolling.
* BUG: Fix crash when hitting CTRL+A in form editor.
* BUG: Fix some error messages and french translations.
* BUG: Creating a component package now works correctly when the component
project has control icons.
* BUG: Fix insertion of predefined environment variables in the project
property dialog.
* BUG: If a library or a component exports a form, then the special
properties ('_IsForm' and '_HiddenControls') are not taken into account.
* BUG: Creating a directory in the project treeview should not segfault
anymore.
* BUG: Moving a source file now correctly refreshes the project treeview.
* BUG: Project treeview popup menu now is correctly filled on directories.
* BUG: Using drag & drop on the project treeview now correctly initializes
folder contents.
* BUG: Do not display a thumbnail for images too large or too high.
* BUG: No margin for the output console.
* BUG: Fix a possible crash in form editor arrangement icons managemnt.
* BUG: Fix profiling of Eval() calls.
* BUG: Packager: library executables are installed with the '.gambas'
extension, but not the standard executables, where the extension is
removed.
* BUG: Packager: ArchLinux packager now compiles the project correctly.
* BUG: The code pretty printer now preserves breakpoints and bookmarks.
* BUG: Bookmarks do not prevent project conversion anymore.
* BUG: Ubuntu and Debian packager now create a correct desktop file.
* BUG: Take the Translatable virtual property into account when saving a
MultiContainer control.
* BUG: Signature of methods with a variable number of arguments are
correctly generated now.
* BUG: Moving, renaming or deleting a source file now should correctly
refresh the search list, the breakpoint list and the task list.
* BUG: Fix all detected warnings.
* BUG: Function signatures now support the new syntax that allows to put
braces around arguments to let the compiler ignore them.
* BUG: Renaming a control now should only rename accurate symbols in source
code.
* BUG: Don't crash when computing the size of a project item.
* BUG: Support for the "Unfinished" string in component description file.
* BUG: Be more clever when searching the gambas IDE executable to launch it
for opening a project in another window.
* BUG: Save the ChangeLog file before creating the package.
* BUG: Fix binary file detection that made file browsing sometimes ignore
some text files.
* BUG: Project 'Save as' now preserves symbolic links.
* BUG: When saving a project with another name, the ExecPath and SourcePath
options of the target project are reset, and the target project is
cleaned up.
* BUG: Indent & unindent buttons now work in text editors.
* BUG: Opening a project in another window should work in all cases now.
* BUG: Don't try to refresh the search list if we are closing the project.
* BUG: Fix inheritance management in projects that are the Gambas part of
an existed component, or a component entirely written in Gambas.
* NEW: Draw a ghost frame around the current hovered control in the form
editor.
* NEW: Some redesign in the way ghost frame, red containers frame and
arrangement icons are drawn.
* NEW: Allow to save and open a profile file.
* NEW: Display the signal description when the interpreter has crashed.
* NEW: New gb.complex component.
* NEW: Hitting ENTER in the project filter box opens the current selected
file.
* NEW: Using arrows keys in the project filter box now moves the project
tree cursor.
* NEW: CTRL+L now sets the focus back to the project filter box.
* NEW: Hitting ESC in the project filter box now resets the filter.
* NEW: Add support for gb.gsl component in the project creation dialog.
* NEW: PageUp and PageDown keys now work as expected in the project filter
box.
* NEW: When a library is added to project dependencies, the other libraries
it depends on are added too recursively. And a library cannot be removed
if another one depends on it.
* NEW: Highlight KML files with HTML highlighting.
* NEW: Each comment anywhere in the source code beginning with 'TODO:',
'FIXME:', or 'NOTE:' is automatically listed in a new tab named 'Tasks'
in the bottom debugging panel.
* NEW: Hide the search list tab when it is not useful.
* NEW: Controls having translatable properties (like 'Text') now get a new
virtual "Translate" property. If this property is FALSE, then the
translatable properties will not be translated.
* NEW: New tool menu entry that sends a source archive of the projet by
e-mail. It is based on the Desktop.SendMail() method.
* NEW: Unchecking a component in the project property dialog now shows a
message box that allows to automatically uncheck all other components
that depend on it. It does not work with libraries. You must uncheck them
by hand.
* NEW: Translate all parts of error messages.
* NEW: Spanish translation updated.
* NEW: An option for hiding editor folding symbols.
* NEW: Make the packager wizard dialog smaller for small screens.
* NEW: Automatic local variable declaration.
* NEW: Automatic local variable declaration is disabled by default.
* NEW: Support for bookmarks.
* NEW: When opening the startup class for the first time, go directly to
the Main function.
* NEW: Try to avoid Application.Busy flickering in some dialogs.
* NEW: Display the number of matches after a project browse.
* NEW: New default project icon.
* NEW: The welcome dialog box now has a filter for examples.
* NEW: Remove the logo on the welcome screen, so that the dialog can be
smaller for small screens.
* NEW: When editing a WebPage, hitting ENTER or RETURN may automatically
insert a closing "%>" if the cursor is inside a non-closed "<%". This
prevents unwanted syntax highlighting of HTML with Gambas syntax.
* NEW: Use a GridView instead of a ListContainer to display components in
the project property dialog.
* NEW: Some little icons in the project property component tab show the
state of each component (stable, not finished, unstable).
* NEW: The help comments are now interpreted with a new "Gambas markup
syntax" inspired from markdown syntax. People that have written comments
in the old syntax will cry...
* NEW: Support for compiler warnings.
* NEW: A new option for not restoring files when loading a project.
* NEW: Pressing SHIFT with the RETURN key prevents automatic variable
declaration.
* NEW: Add a filter to the example tab of the open project dialog.
* NEW: "Open with" menu now is based on the *.desktop files of applications
that are installed on the system.
* NEW: Display the project description in project items now.
* NEW: Display a PDF icon for PDF files.
* NEW: Use Terminus as default fixed font if it is installed on the system.
* NEW: Modify the behaviour of the "Replace" command. Now the text is
searched only if it has not been just replaced.
* NEW: Remove the "Alternate" theme color.
* NEW: Hide error message if the debugger is stopped.
* NEW: Add '-h', '-v' and '-L' command-line options.
* NEW: In the database connection editor, make the table data browser read-
only by default, and add a button to toggle the editable state.
* OPT: New optimizations in profile file size.
* OPT: Project libraries analyze results are cached now.
* OPT: Browsing the project is faster now.
* OPT: Delay the welcome dialog project list layouting as much as possible.
[WEB SITE MAKER]
* BUG: Fix scrolling frames on Chrome.
[EXAMPLES]
* BUG: Don't use JIT compiler in NeHeTutorial example #19, it crashes.
OpenGL LLVM 3.0 and Gambas LLVM 3.1 in the same process is not welcome!
* BUG: Fix HighlightEditor example.
* NEW: New Tablet event inspired by a project made by Ricardo Díaz Martín.
* NEW: Spanish translation updated.
* NEW: Descriptions of some examples.
* OPT: Update the TreeView example so that it is easier to translate.
[INTERPRETER]
* BUG: Reading an unknown property does not crash anymore if _unknown is
defined but not _property.
* BUG: Raise the Kill event of a Process after having closed its I/O
streams.
* BUG: Allows the _unknown method to be static.
* BUG: Now the _property special method can be static even if _unknown is
dynamic. Anyway, if _unknown is static then all unknown properties and
methods must be static, and if _unknown is dynamic, they all must be
dynamic.
* BUG: Correctly read unknown properties.
* BUG: Do not leak memory if the _unknown method raised an error.
* BUG: Fix exception handling for JIT functions.
* BUG: Automatic array conversion now works with not yet loaded array
classes.
* BUG: Fix compilation on 32 bits platforms.
* BUG: Make the interpreter compile when FFI has been disabled.
* BUG: Fix conversion from pointer to structure.
* BUG: Env[...] does not return a constant string anymore. Anyone can
change the environment in the background!
* BUG: Fix error handling when freeing objects.
* BUG: Fix Error.Propagate().
* BUG: Do not try to handle signals if there is no more signal handlers.
* BUG: Fix compilation on Mac OS X 10.8
* BUG: Use MAP_ANON instead of MAP_ANONYMOUS. No need to make the
distinction between Linux and *BSD anymore!
* BUG: The Gosub stack pointer is now correctly reset when a error has been
intercepted by the Catch instruction.
* BUG: The GB.GetFunction() API now correctly returns static functions.
* BUG: Fix the GB.ReturnConvVariant() API so that it does not free the
return value incorrectly.
* BUG: Fix Choose() when the choice value is equal to the number of
possible results plus one.
* BUG: Fix how the event raising routine handle exceptions.
* BUG: Process.Kill does not try to wait for the process completion, and
return immediately.
* BUG: Fix a typo in '^' operator implementation that prevented its second
argument to be a Variant.
* BUG: Fix possible recursion problems while freeing signal handlers.
* BUG: The output of a process is sometimes woke up ready to read whereas
there is nothing to read on it. Close the output immediately instead of
calling the callback again and again.
* BUG: Try to handle correctly errors raised during the Kill event of a
background task. It does not work yet. :-(
* BUG: Handle errors occuring while waiting for a process correctly now.
* BUG: Disable the component specific event loop when starting a task. No
way that any GUI works in a background task now, but I can't disable it
automatically.
* BUG: Fix the enumeration API. GB.ListEnum() has been replaced by
GB.BeginEnum() and GB.EndEnum(), that save the state of the internal
current enumeration.
* BUG: Fix error handler calls.
* BUG: Fix Classes enumeration.
* BUG: The debugger won't crash anymore when trying to continue after an
error has been raised inside a component.
* NEW: Static unknown properties can be used in a dynamic context now.
* NEW: "_operator" is a new interface that allows any native class to be
used with most of arithmetic operators: +, -, *, /, Abs, =, <> at the
moment.
* NEW: The "_convert" interface now allows a class to be converted to any
datatype, not just other classes.
* NEW: Str() and Print uses the "_convert" interface to print a localized
string conversion of any object.
* NEW: The _convert interface now must handle conversions from any
datatype.
* NEW: When converting an instance of A to the class B, try the conversion
interface of A first. If A has no conversion interface, or if it cannot
handle the B class, then try the conversion interface of B if any.
* NEW: Support for imaginary number syntax. For example, using "3i" will
automatically load the gb.gsl component, create the corresponding complex
number and return it.
* NEW: Temporary hack in the GB.New() API so that we can pass a number of
arguments in some cases.
* NEW: Add a new API to create an object without calling the constructors.
* NEW: Arithmetic operators now can be applied on two objects with
different classes. One at least must implement the '_operator' interface.
* NEW: Each class that implements the '_operator' interface has now an
automatic priority that follows the load order. When a binary operator
has two objects that implement two different '_operator' interface, the
one having the highest priority is used.
* NEW: Add a GB.FreeStringLater() API to allow components to create a new
string with GB.NewString(), and let the interpreter frees it later.
* NEW: Support for floating-point constants.
* NEW: Support for new profile file format.
* NEW: You can convert a pointer to a static structure now. It is useful
when an extern function has a 'struct XXX **' argument.
* NEW: Args and Env classes are now shortcuts for Application.Args and
Application.Env properties.
* NEW: Add an explicit error message when trying to override a class that
has already been used as a parent for another class.
* NEW: GB.Deprecated() is a new interpreter API that displays a warning
message for deprecated functions at runtime. When the project is
debugged, an error is raised instead.
* NEW: GB.ReturnBorrow() is a new API to temporarily borrow the return
value.
* NEW: GB.ReturnRelease() is a new API to release the return value borrowed
by the previous function, without releasing it.
* NEW: Object.CanRaise() is a new method that returns if a specific object
event has an event handler.
* NEW: Add support for double-linked lists in the interpreter API.
* NEW: GB.Wait() is a new API that waits for a specific number of
milliseconds, exactly like the WAIT instruction (i.e. the event loop is
run).
* NEW: GB.HasForked() is a new API that warns the interpreter that fork()
has been called (he has to do some stuff).
* NEW: Remove the GB_POST_FUNC datatype from the API.
* NEW: Allow components to access the interpreter API through a pointer and
not a full structure. It is a little bit slower (one more indirection),
but it uses less memory: one pointer instead of about 180.
* NEW: GB.Serialize() is a new API that serializes a Gambas value to a
file.
* NEW: GB.UnSerialize() is a new API that unserializes a Gambas value from
a file.
* NEW: Task is a new class for implementing background tasks. These
background task are run by forking.
* NEW: There is an hard limit of simultaneous 256 background tasks now.
That should prevent fork bombing.
* NEW: Implement Variant comparison routine.
* NEW: Variant[] now has an Exist() and a Find() method.
* NEW: New API GB.CompVariant() that compares two Variant.
* NEW: Process.Wait() now can take an optional timeout argument, in
milliseconds.
* NEW: String.UCaseFirst() is a new method that capitalize the first letter
of an UTF-8 string.
* OPT: Remove a useless test in the macro that returns the class of an
object.
* OPT: Some little optimization in some type checks.
* OPT: Optimized GOSUB from an idea of Emil Lenngren.
* OPT: Conversion between byte index and UTF-8 character index of the last
string has been optimized when that last string is big.
[COMPILER]
* BUG: Like can be used in a Case expression just after the Case keyword
only.
* BUG: Fix compilation of WebPage having UTF-8 characters inside.
* NEW: Support for imaginary number syntax.
* NEW: A new compiler option '-w' to let it emit warnings.
* NEW: Emit warnings for unused variables, arguments, functions and for
local symbols that override global symbols. Public symbols are of course
not taken into account.
* NEW: If an argument is surrounded by braces, no warning will be emitted
if the argument is not used.
* NEW: If a function argument is enclosed with braces, then no warning is
emitted if it overrides a global symbol.
* NEW: New WebPage syntaxes: <<Include>>, <</Include>>, <%/%>, <<--->>.
[GB.DATA]
* NEW: gb.data is a new component providing new container datatypes to
Gambas.
* NEW: Add List and ListRoot classes for circular double-linked lists which
can be embedded into other classes or used standalone.
* NEW: Add Deque class as a base for new Stack, Queue and PrioQueue classes
on top of linked lists (thus different from related Variant[] semantics).
* NEW: Add Circular class for ring buffers.
[GB.COMPLEX]
* NEW: New component that implements a rudimentary management of complex
numbers. This component is automatically loaded if a complex number
constant is encountered and no loaded component can already handle
complex numbers.
[GB.CRYPT]
* BUG: Fix bad casting of strcmp() return value to boolean. The same
security flaw has been found in MySQL recently. See
http://seclists.org/oss-sec/2012/q2/493
* NEW: it is now available for Mac OS X 10.8.
[GB.DB]
* BUG: Correctly handle null dates.
[GB.DB.FORM]
* BUG: When inserting a new record in a DataView, serial fields are not
editable anymore.
* BUG: Correctly go to the last line of a DataView when its DataSource
enters creation mode.
* BUG: DataView and DataBrowser in creation mode now do not display any
selected row, unless in editing mode. In that case the "new record" last
row is highlighted.
* BUG: Fix warnings.
* BUG: Setting DataView.Editable to FALSE correctly hides the record
creation extra line.
* NEW: DataView now raises a new Data event that allows to format the
contents of a cell just before it is displayed. The event receives three
arguments: the row, the column, and the cell value directly from the
underlying database.
* NEW: DataBrowser propagates the Data event of its inner DataView.
* NEW: DataControl now uses a DateBox to edit date values.
* NEW: DataSource now raises the BeforeSave event just before writing a
Result object to the database. The event handler receives the Result as
argument so that you can modify it.
* NEW: Spanish translation updated.
* NEW: DataBrowser.CanCreate is a new property that hides or shows the
create button.
* NEW: DataBrowser.CanDelete is a new property that hides or shows the
delete button.
[GB.DB.SQLITE3]
* BUG: 'INTEGER' fields are now assumed to be serial fields only if
'AUTOINCREMENT' has been specified too.
[GB.DBUS]
* BUG: Fix some compilation warnings.
* BUG: Remove a file that should not be under version control.
* NEW: Add the DBus error message to the Gambas error message when
registering or unregistering fails.
[GB.DEBUG]
* BUG: Fix profiling of Eval() calls.
* NEW: Debug.GetSignal() is a new method that returns the description of a
signal from its numeric value.
* OPT: Now DEBUG_calc_line_from_position has logaritmic time complexity
instead of linear. That makes profiling each line much faster for large
functions!
* OPT: New profile file format.
[GB.DESKTOP]
* BUG: Fix some warnings.
* BUG: DesktopFile now correctly takes the current language into account
when extracting application names.
* BUG: Support for LXDE mime application cache.
* BUG: $XDG_DATA_DIRS is now taken into account when browsing mime cache
files.
* BUG: Fix X11 client message sending routine on 64 bits OS.
* BUG: Fix all DesktopWindow properties that read or change the state of
the window.
* BUG: DesktopWindow.X and Desktop.Y now return the correct window
position, provided that the window manager follows the EWMH freedesktop
standard of course.
* BUG: Fix DesktopWindow.Resize() method.
* BUG: The Gambas part of the component must not use the gb.form component.
* NEW: Support for the Mate desktop in Desktop.Open, Desktop.OpenTerminal
and Desktop.Passwords.
* NEW: Better support for the LXDE desktop.
* NEW: DesktopFile is a new class that load *.desktop application files.
* NEW: DesktopFile.FindMime() is a static method that returns a list of
DesktopFile that can handle a specific mime type.
[GB.DRAW]
* NEW: Paint.DrawImage() takes a new optional argument that defines the
opacity of the drawing, between 0 and 1.
[GB.EVAL]
* NEW: Support for imaginary number syntax.
* NEW: Highlight TODO/FIXME/NOTE commentaries like help commentaries.
* NEW: OPTIONAL keyword is always followed by a space now when rewriting
Gambas code.
* NEW: Highlight.Alternate has been deprecated.
[GB.EVAL.HIGHLIGHT]
* BUG: HTML highlighting: Correctly detect <head>,<body> and <html> markups
in all cases.
* BUG: Fix WebPage highlighting.
* BUG: Correctly rewrite the following keywords with no spurious space
after: TRUE, FALSE, NULL, +INF, -INF.
* NEW: Support for the new WebPage syntaxes.
* OPT: Optimization of HTML syntax highlighting for big lines.
[GB.FORM]
* BUG: The Stock class now detects the Mate desktop, and use it as default
application theme if needed.
* BUG: Icon themes based on svg files only are correctly handled now.
* BUG: Fix icon theme search for LXDE and XFCE.
* BUG: TabPanel buttons are correctly refreshed when their picture change.
* BUG: Fix LXDE icon theme support.
* BUG: Take "~/.icons" into account in the Stock.Themes property.
* BUG: SidePanel controls now behave correctly when they are put inside a
TabStrip.
* BUG: TableView: Apply a white background behind the currently edited
cell.
* BUG: Stock.Icons works correctly in all cases now.
* BUG: ScrollArea computes the limits of its scrollbars correctly in all
cases now.
* BUG: Fix warnings.
* BUG: Transparent SidePanel controls do not eat one pixel of their
contents anymore.
* BUG: Some fixes in the stock icon map file.
* BUG: For some reason, clicking on a tab didn't give the focus to the tab
button on gb.gtk.
* BUG: Fix TabPanel tab closing.
* BUG: Clicking on a TabPanel tab raises the Click event after taking the
focus now.
* NEW: The Stock class now prints debugging message if the environment
variable GB_STOCK is set.
* NEW: Try to support the Mate desktop in the Stock class.
* NEW: The LXDE icon theme is correctly detected now.
* NEW: Both gnome and kde icon themes should be usable with any desktop
now.
* NEW: Stock.Icons property now replaces Stock.List property.
* NEW: Stock.Themes is a new property that returns the list of all icon
themes stored in '/usr/share/icons'.
* NEW: Stock: Test more possible configuration files for LXDE.
* NEW: Now the Application.Theme property can be either nothing, a desktop
name, or a icon theme name.
* NEW: GridView: Support for column titles with multiple lines.
* NEW: New function in GridView Rows, GetSelected, that return an integer
array with the selected rows.
* NEW: Replace GridView.Rows.GetSelected() method by GridView.Rows.
Selection property.
* NEW: Deprecate Stock.List which has been replaced by Stock.Icons.
* NEW: TabPanel can get focus now, and handle keyboard shortcuts.
* NEW: ScrollArea, GridView and IconView got an automatic inner shadow
where the view area can be scrolled.
* NEW: ScrollArea.Tablet is a new property that allows it to catch tablet
events.
* NEW: Draw SidePanel little arrows differently.
* NEW: DateBox handles null dates now.
* NEW: MaskBox hides its contents now when it is the default one and it
does not have the focus.
* NEW: DateChooser displays a little cursor following the mouse inside the
calendar and the time panel.
* NEW: ScrollArea.Shadow is a new static property to define if inner
shadows are visible or not. By default they are not.
* NEW: Mark all controls in test forms untranslatable.
* NEW: ScrollArea draws a focus border when it has focus.
* NEW: Add a new "program" stock icon.
* NEW: In FileChooser and DirChooser, replace the little arrow that goes
up to the parent directory by a normal button.
* NEW: Add a PDF icon to the stock.
[GB.FORM.DIALOG]
* NEW: Spanish translation updated.
[GB.FORM.MDI]
* BUG: Fix warnings.
* NEW: Little design fix in the shortcut configuration dialog.
* NEW: Some little redesign of the toolbar configuration dialog.
* NEW: Spanish translation updated.
[GB.FORM.STOCK]
* NEW: Add a "program" stock icon.
* NEW: Add a PDF icon.
[GB.GMP]
* NEW: Skeleton for a new component based on the GNU "big numbers" GMP
library.
[GB.GSL]
* BUG: Fix array creation in CComplexPolynomial.ComplexSolve().
* BUG: Use the proper detection method for gsl library.
* BUG: Fix Polynomial to string conversion.
* BUG: Fix Complex to String conversion.
* NEW: Use the new "_operator" interface so that complex numbers can be
handled by standard arithmetic operators.
* NEW: The Complex class now implements the "_convert" interface.
* NEW: Complex class has been cleaned up.
* NEW: Automatic conversion from numbers to Complex.
* NEW: Vector class has been implemented.
* NEW: Support for imaginary number syntax.
* NEW: Vector class is now generic, and has two child classes: FloatVector
and ComplexVector, depending on the type of its elements.
* NEW: Add a Complex.Conj() method to return the conjugate of a complex
number.
* NEW: Add Complex.Neg() to return the negative of a complex number.
* NEW: Add Complex.Inv() to return the inverse of a complex number.
* NEW: Handle GSL errors.
* NEW: Redesign of the Polynomial class. Now it implements a polynomial
that can switch between real and complex coefficients transparently.
* NEW: The ComplexPolynomial class has been removed.
* NEW: Implement the ^ operator in the Complex class.
* NEW: Polynomial _call() special method now is a synonymous of its Eval()
method. That way, you can write 'P(X)' to get the value of P(X).
* NEW: Remove the FloatVector and ComplexVector classes. Now the Vector
class handle vector of Float or Complex transparently.
* NEW: Matrix class built the same way as the Vector class, i.e. with the
ability to switch transparently between Float or Complex elements.
* NEW: Matrix arithmetic has been implemented.
* NEW: Matrix.Determinant() method.
* NEW: Matrix.Invert() method.
* NEW: Matrix.Transpose() method.
* NEW: Matrix _call special method multiplies a matrix by a vector.
* NEW: Vector <-> Array conversion.
* NEW: Implement Vector arithmetic operators.
* NEW: Rename some Matrix methods.
* NEW: Implement Polynomial arithmetic addition and substraction.
* NEW: Complex.Handle is a new property that returns the memory address of
the underlying complex number in memory.
* NEW: Add a ToString() method to all classes. That method takes two
arguments: the first one tells if number must be localized. The second
one tells if complex numbers and polynomials are converted to a string
that can be sent to Eval().
* NEW: The '^' operator has been implemented in the Matrix class. Only A^N
where N is an integer is valid.
* NEW: Add a Matrix.Conj() method that returns the conjugate matrix.
* NEW: Make not localized object-to-string conversions return a string that
is readable by Eval().
* NEW: Remove methods that are already implemented by arithmetic operators.
* NEW: Use Float constants in the GSL class.
* NEW: Matrix can be compared with real or complex numbers. The number is
then multiplied by the identity matrix before doing the comparison.
* NEW: Implement Vector arithmetic operators.
* NEW: Rename some Matrix methods.
* NEW: Implement Polynomial arithmetic addition and substraction.
* NEW: Complex.Handle is a new property that returns the memory address of
the underlying complex number in memory.
* OPT: Optimize Complex arithmetic by avoiding unneeded object creations.
* OPT: Optimize Matrix '^' operator.
[GB.GTK]
* BUG: Fix bad casting of strcmp() return value to boolean in the Font
management.
* BUG: Fix Drag & drop management when dragging outside of the application.
* BUG: Fix Drag & drop management of controls that already handle Drag and
drop, like Textbox controls.
* BUG: Panel with an explicit background color now have their own X11
window so that they can cover any over controls.
* BUG: The child search method now takes clientX and clientY into account.
Consequently, clicking on TabStrip tab buttons work correcty again.
* BUG: Fix TreeView, ListView and ColumnView multiple selection.
* BUG: Fix Control.Raise() and Control.Lower() method when the parent is a
TabStrip.
* BUG: Window.ScreenY does not take the menu bar into account anymore, as
in gb.qt4.
* BUG: Correctly check GTK+ version.
* BUG: gdk_device_get_source() does not exist before GTK+ 2.22.
* BUG: Try to activate all XInput devices when the DrawingArea.Tablet
property is set.
* BUG: Fix a recursion problem is color management when a control is
inserted into its container.
* BUG: Support for tablet events.
* BUG: Make mouse events in gb.gtk and gb.qt3 behave the same way.
* BUG: Better draw the background color of Button, ToolButton and
ToggleButton controls.
* BUG: The Font object returned by Control.Font is now correctly updated
when the font of any of its parent changes.
* BUG: Ensure that when a mouse button is pressed, the same control
receives the mouse button release event.
* BUG: Fix popup management.
* BUG: Editable ComboBox controls now have the right background.
* BUG: Make gb.gtk compile with GTK+ 2.16.
* BUG: Take Label.Padding and TextLabel.Padding properties into account
correctly.
* BUG: MouseDrag events are correctly raised in all cases now.
* BUG: Activate the window correctly after a debugger restart.
* BUG: Window should not raise useless resize events anymore.
* BUG: Windows embedded inside a Splitter correctly raise their Resize
events.
* BUG: Don't try to resize the window inner container with a negative size
when the window is too small.
* BUG: Draw window background correctly.
* BUG: Don't try to synchronize X11 when the debugger goes forward if there
is no X11 connection yet!
* BUG: Fix TreeView, ListView, ColumnView and ListBox click detection.
* BUG: FullScreen windows correctly raise the Open event now.
* BUG: Fix the Stock class.
* BUG: Fix dialog modality.
* BUG: The Window.Center() method now takes the available desktop into
account, not the entire screen.
* BUG: Fix filled ellipse drawing.
* BUG: Remove a debugging message.
* BUG: Setting Window.FullScreen does not show the window if the window was
not visible.
* BUG: Fix event management of modal dialogs.
* BUG: Fix Mouse.ScreenX and Mouse.ScreenY.
* BUG: Printer.From and Printer.To now always return zero if all pages must
be printed.
* BUG: Copying an image to clipboard does not corrupt the image anymore.
* BUG: Fix how mouse events and modality are handled.
* BUG: Windows should not receive a keyboard event twice anymore.
* NEW: TabStrip.FindIndex() is a new method that returns the index of
parent tab of a specific child.
* NEW: Management of tablet events. At the moment only the DrawingArea
control can catch them if its Tablet property is TRUE. In that case,
standard mouse events are raised, and the properties of the tablet event
are stored in the new Pointer class. All that is not definitive.
* NEW: Mouse.State is a new property that return the state of all mouse
buttons as specified by the current mouse event.
* NEW: Mouse.Button now only returns the index of the button that triggered
the mouse event.
* NEW: Automatically temporarily release the keyboard and the mouse when
the debugger stops the program.
* NEW: Style.Name is a new property that returns the name of the current
widget theme.
* NEW: Use the indirect API access.
* NEW: Fonts.Exist() is a new method that returns if a specific font family
exists.
* OPT: Don't arrange the parent if a move & resize operation actually
changes nothing.
* OPT: When showing or hiding a control, check that we actually change the
visibility of the widget and do nothing if we don't.
[GB.IMAGE]
* NEW: Image.RotateLeft() and Image.RotateRight() are two new methods for
rotating a image by 90° step.
[GB.JIT]
* BUG: Use correct IRBuilder.h
* BUG: Remove some warnings.
* BUG: Temporary fix for powi due to a bug in llvm.
* BUG: Oops. Now functions without GoSubs don't crash anymore ...
* BUG: Fix static _call calls.
* BUG: Properly check stack overflow for GoSubs.
* BUG: Fix For Each loops.
* BUG: Local variables are not forgotten anymore after a Catch.
* BUG: Ctrl variables in GoSubs are now properly released.
* NEW: Implement some missing Variant features.
* NEW: Can now profile each line of code, but beware: profiling makes the
program much much slower.
* NEW: Implement _unknown.
* NEW: Use VALUE_convert instead of VALUE_convert_object.
* NEW: SPEC_CONVERT constant has been replaced by a field in the CLASS
structure.
* OPT: Optimize Variants and some math functions.
* OPT: Don't do any obvious unnecessary unref-checks.
* OPT: Use the Gambas stack to store GoSub data instead of allocating
new arrays all the time. Up to 10 times faster!
[GB.LIBXML]
* NEW: Make this component exclude gb.xml.
[GB.MIME]
* NEW: New component that manages MIME messages. It is based on the GMime
library.
* NEW: Support for Mime parts and Mime multiparts.
* NEW: Mime.Encode() and Mime.Decode() are two new methods to encode to and
decode from base64, quoted-printable or uuencode encoding.
* NEW: Support for message parts. The MimePart.Message property will return
the MimeMessage embedded inside the part.
* NEW: Try to detect gmime-2.4 if gmime-2.6 is not available.
[GB.NET]
* NEW: SerialPort: Does the polling differently when detecting signal
changes.
* NEW: SerialPort.Open() method now takes an optional argument to define
the polling delay in milliseconds. It is 50ms by default.
* NEW: Add Net.CannotAuthenticate error constant for gb.net.pop3.
[GB.NET.POP3]
* NEW: New component that implements a POP3 client. It uses gb.mime to
parse the messages.
[GB.OPENGL]
* BUG: Add synonymous starting with an underscore for constants beginning
with a digit.
[GB.OPENGL.GLSL]
* BUG: Remove the "GL_" prefix in all constants.
[GB.OPTION]
* BUG: The component is now compatible with the new way of arguments
handling, and does not crash anymore.
[GB.QT4]
* BUG: ScrollView internal visible flag is correctly set, and so the
Hovered property returns the right value.
* BUG: Fix detection of X11 for the control DrawingArea on Mac OS X 10.8.
* BUG: Add a font setting routine in the gb.qt interface.
* BUG: TreeView does not raise keyboard events anymore during renaming
mode.
* BUG: Fix the case of Action.Tooltip property name.
* BUG: Get rid of an old compilation warning.
* BUG: Make mouse events in gb.gtk and gb.qt4 behave the same way.
* BUG: The Font object returned by Control.Font is now correctly updated
when the font of any of its parent changes.
* BUG: Nothing is drawn now when the clipping rectangle has a negative
width or height.
* BUG: Fix declaration of Desktop.HasSystemTray property.
* BUG: Windows do not raise their Resize event if the size didn't actually
change.
* BUG: Fix TextArea foreground color management.
* BUG: SpinBox Background property now works as expected.
* BUG: If not page has to be printed, then the Print() method correctly
returns the Printer object to an inactive state.
* BUG: Windows should not receive a keyboard event twice anymore.
* NEW: TabStrip.FindIndex() is a new method that returns the index of
parent tab of a specific child.
* NEW: Management of tablet events. At the moment only the DrawingArea
control can catch them if its Tablet property is TRUE. In that case,
standard mouse events are raised, and the properties of the tablet event
are stored in the new Pointer class. All that is not definitive.
* NEW: Mouse.State is a new property that return the state of all mouse
buttons as specified by the current mouse event.
* NEW: Mouse.Button now only returns the index of the button that triggered
the mouse event.
* NEW: Style.Name is a new property that returns the name of the current
widget theme.
* NEW: Use the indirect API access.
* NEW: Fonts.Exist() is a new method that returns if a specific font family
exists.
* OPT: When reading the ClientX or ClientY property of a Window, arrange
its contents only if necessary.
* OPT: During a mouse event, Mouse.ScreenX and Mouse.ScreenY returns the
global position stored in the received event. It does not query the X11
server.
* OPT: Load clipboard format list only if the clipboard has changed.
[GB.QT4.EXT]
* BUG: Editor: Fix how spaces at end-of-line are drawn.
* BUG: Editor: Fix highlighting of saved lines.
* BUG: TextEdit: Fix the TextEdit.Format.Font property.
* NEW: Editor: The current line is now visible when using a dark highlight
theme.
* NEW: Editor: Highlight saved modified lines and unsaved modified lines
differently.
* NEW: Editor: Support for bookmarks.
* NEW: Editor.BookmarkPicture is a new property for defining the picture
used for displaying bookmarks.
* NEW: Editor.FindNextBreakpoint() has been deprecated and replaced by the
Editor.Breakpoints property, that returns an integer array of all lines
having a breakpoint.
* NEW: Editor.Bookmars is a new property that returns an integer array of
all lines having a bookmark.
* NEW: Editor.CurrentLine is a new property for defining the current
executed line. It replaces Editor[].Current.
* NEW: Editor[].Bookmark is a new boolean property that defines if a
specific line has a bookmark.
* NEW: Editor: Always display a margin wide enough to display breakpoint or
bookmark signs.
* NEW: Editor.Bookmarks and Editor.Breakpoints properties are now writable.
* NEW: Editor: The alternate background is automatically computed.
* NEW: Editor: Brace highlighting now works on alternate background.
* NEW: Highlight.Alternate has been deprecated.
* OPT: Editor: Do not compute the character width table each time the font
changes. Use a cache instead.
[GB.REPORT]
* BUG: Now VPanel works well but experimental OnePiece is deactivated.
* OPT: Set default value on control Width and Height (10 mm).
* OPT: Cleanup, remove all unused variables.
[GB.SIGNAL]
* BUG: Remove an apparently useless type definition, and fix compilation on
recent Linux kernels.
* NEW: Rewrote the component to use the signal management routines included
in the interpreter.
[GB.V4L]
* BUG: Fix a compilation warning.
[GB.WEB]
* BUG: The session cookie is now only accessible to the current CGI script.
* BUG: Fix warnings.
* NEW: Request.Debug is a new property to activate the debugging mode of
the Request class.
* NEW: Request.Post.Contents returns the contents of the last POST request,
provided that the debugging mode has been activated.
* NEW: Response.SendFile() can set the content-type according to the file
extension, if no content-type has been specified.
* NEW: Flush the output before calling Response.End if the response is not
buffered.
[GB.XML]
* BUG: Solved a few bugs with the indentation in XmlWriter.
* BUG: The encoding is now correctly specified in the document header.
* BUG: The GetAttribute() method now correctly returns the attribute value.
* BUG: Getting an attribute that doesn't exist doesn't crashes anymore, it
returns a null string instead.
* BUG: The string comparison mode argument is now correctly handled by
XmlElement.GetAttribute().
* BUG: The TextContent property now correctly ignores the contents of
comment nodes, as mentioned in the W3C specifications.
* BUG: Setting the XmlElment.TextContent property now correctly remove all
children of an element.
* BUG: Setting the XmlElment.TextContent with a null string has now no
effect, as mentioned in the W3C specifications.
* BUG: When parsing data, extra white-spaces at the beginning and the end of
text nodes are correctly ignored.
* BUG: When they are null, reading TagName and Prefix properties from
XmlElement does not crash anymore.
* BUG: The XML Declaration is now optional, as mentioned in the W3C
specification.
* BUG: The ChildNodes and Children properties have moved from XmlElement to
XmlNode, as mentioned in the W3C specification.
* BUG: The XML Error analyzer does not crashes anymore if the error has no
defined position.
* BUG: Doctype are now partially handled, i.e. there is no doctype interface
yet, so they are silently ignored.
* BUG: Moved the previousSibling and NextSibling properties from XmlElement
to XmlNode, and added PreviousElement and NextElement, so that there is no
confusion with the W3C standards.
* BUG: Addef forgotten property XmlReader.Node.IsEmptyElement.
* BUG: The document.FromString() method does not crashes anymore if no root
element was found.
* BUG: No more memory leak when the XmlDocument.ToString() throws an error.
* BUG: When throwing an error, the XSLT parser returns anyway a valid (but
empty) document.
* BUG: Sloved a little typo error in the XmlElement.PreviousElement
property.
* BUG: The CDATA node now correctly handles special characters.
* BUG: Fixed a memory leak when using XmlDocument.Save()
* BUG: Fix the un-escape parsing method, it don't crash anymore if there the
parsed string is less than 3 bytes length.
* BUG: Reading Special characters in text nodes don't crash anymore.
* BUG: Fix the XmlReader.Node.IsEmptyElement property.
* BUG: Fix some memory errors and leaks.
* BUG: Fix a segmentation fault in XmlReader freeing.
* BUG: Fix the local, qualified and prefix naming, as mentioned in the W3C
specification.
* BUG: Fix the XmlReader.Depth property management when enumerating the
attributes of a node.
* BUG: Try to fix a compilation error on some systems.
* BUG: Correctly handle prefix when parsing a document.
* BUG: XmlWriter now correctly serializes the text and attribute values.
* BUG: The XmlDocument constructor now correctly raises an error message
instead of crashing with signal #6.
* BUG: Fix prefix management on elements.
* BUG: The XmlReader.Node.Attributes is a read-only collection.
* BUG: Error messages are correctly shown now
* BUG: The Base and Favicon properties do not crash anymore if the matching
node is not found.
* BUG: Errors that doesn't give any position in the parsed data are
correctly raised now.
* NEW: Added a new XmlElement.ClearChildren method, that removes all the
children of an element.
* NEW: Added two properties FirstChild and LastChild to XmlElement.
* NEW: Make this component exclude gb.libxml.
* NEW: Added user data management in nodes.
* NEW: XmlDocument now internally inherits Node, so that they can contain
other nodes than only a root element (that is now optional), as specified
in the W3C specifications.
* NEW: Adds a Serialize() static method in XmlNode that serializes the given
text.
* OPT: Do not use the UTF-8 string methods anymore when parsing text opened
with the XmlReader.FromString() method, they are too slow. This also may
solve UTF-8 chars reading problems.
* OPT: Some optimisations in character comparison when parsing data.
* OPT: Defined a few variables and parameters as const.
* OPT: Some little optimizations in the ToString() (and similar) methods.
[GB.XML.HTML]
* BUG: Fix the XmlElement.Id property.
* BUG: The HTML parser now correctly raises an error if the document is
incomplete (no doctype/root element).
* BUG: The HTML parser now really correctly raises an error if the document
is incomplete (no doctype/root element).
[GB.XML.RPC]
* BUG: Some english fixes in some error messages.
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