There are almost one thousand of changes in this release since the 3.17.3 version.
If everything was fine, type "gambas3" to run the development environment.
-
Allow to ignore up to eight processes in extern debugging mode.
-
Workaround gnome-terminal
that is not able to hold its child process.
-
The console automatic show should work correctly when the console is undocked now.
-
Use the new TreeView item Span property, so that the headings of the debugger trees display correctly.
-
Move the terminal option from global configuration to debugging configuration.
-
Fix xfce4-terminal
and mate-terminal
support.
-
Closing the internal debugger browser now stops the debugger.
-
Ignore namespace when searching for current debugged class.
-
Display component name in stack backtrace.
-
Stack backtrace and variable list headers are not selectable anymore.
-
New way of storing breakpoints into configuration file.
-
Support for breakpoints inside components.
-
Clear the WebView when closing the debugger browser.
-
Allow to bypass the name check when searching for a component or library project location.
-
Fix a possible crash in stack display during debugging.
-
Allows internal browser to access clipboard from javascript code.
-
Sort local and global variables.
-
Clearing breakpoints outside of debugging mode now works correctly.
-
Use the new debugger stock icons.
-
Put the debugger in the left panel with the project tree.
-
Add a button to reset the location of component projects in the debugger configuration dialog.
-
Allow to choose the browser used for debugging web applications, between Firefox, Chromium or the internal debug browser.
-
Add an internal browser for debugging web applications.
-
The browser used for debugging is now run in its own process and in private mode. Create a custom profile in Firefox for that.
-
Support for debugging inside project components. Breakpoints inside components do not work correctly yet.
-
Detect errors when git commit is impossible.
-
Better detection of ssh
prompts.
-
Use kate
if kwrite
is not available as version control text editor.
-
Add a menu entry that opens a terminal at the root svn / git repository.
-
Add a menu entry that opens the file manager at the root svn / git repository.
-
Add a bookmark that points at the svn / git repository directory the current project is part of.
-
Support for creating branches.
-
Add fields to define your Git repository identity in Repository
tab.
-
Move version control statistics to a new Repository
tab in publish dialog.
-
Display the state of the file on top in the information dialog.
-
Check more editors for filling the EDITOR environment variable.
-
Fix the routine that associates a color with a branch name.
-
The command timeout is now 30 seconds instead of 15 seconds.
-
Remove the Revert all changes
button in the bottom panel. It can be dangerous to leave it there.
-
Fix a possible crash triggered by version control initialization while opening another project.
-
Update French translation.
-
The list of translatable properties is now case insensitive.
-
Update module icons.
-
Update some control icons.
-
Update default compact
layout.
-
Support for write-only properties.
-
Use the paste-special
stock icon where appropriate.
-
Redesign the unique file name generation function.
-
Add gb.geom
to the list of components.
-
Running a project does not remove disabled environment variables anymore.
-
Add the component name in IDE tab title for files from other projects.
-
Do not clear the version control and the test console when the project is reloaded.
-
Better find a web browser when opening an URL.
-
Support for gb.hash
component.
-
Send crash reports to the mailing-list only if the attachment size is not too big, otherwise use my personal new e-mail address.
-
Default language of newly created project is the current system language now.
-
Start to fix and enhance automatic project documentation.
-
The Project
menu has been reorganized.
-
Add a menu entry and a button to compile and create the executable without opening the executable configuration dialog.
-
Always open the project executable configuration if the executable file does not exist on disk.
-
Don't load the wiki documentation at exit if the wiki has never been used.
-
Add shell script test-fast in root dir for quick selftest.
-
Automatic local variable declaration is now enabled by default.
-
Redraw the icon of source files that must not be translated.
-
Hitting ESC does not crash anymore.
-
Disable all actions that could modify the source code while debugging.
-
Snow starts to fall one day before X-Mas now.
-
Extend the snow period until the Epiphany.
-
Use the new application
stock icon for the farm dialog.
-
Draw the current branch button with a Label and its new border properties.
-
Fix colors constants overflow in all forms.
-
Fix icon size in the unsaved file dialog.
-
Add fuse_hiddenxxxx
files to .gitignore
-
Array: Empty
is a new property that returns if an array is empty.
-
Collection: Empty
is a new property that returns if a collection is empty.
-
Allow to ignore up to 8 processes in external debugging mode.
-
WAIT 0
is now an equivalent of WAIT
alone, but with processing of input events.
-
Program exit now can be hold by the debugger to workaround a missing feature of the Gnome terminal.
-
Fix GB_Wait()
calls as the meaning of its argument changed.
-
Allow errors to propagate from event handlers when the event is internally raised by the interpreter. All events raised from a component written in Gambas through the Gambas API still do not propagate errors.
-
QUIT
now ends the process brutally. C++ static exit routines from unloaded shared libraries are not called anymore, avoiding crashes.
-
Always flush buffered streams at exit even if the exit is immediate.
-
Application.Task
is a new property that returns if we are executing a Task object.
-
GB.Every()
API now creates a timer that is ignored by the event loop.
-
Add all comparison constants to gambas.h
API header file.
-
Fix String[].FindSorted()
and String[].ExistSorted()
when using gb.Like
or gb.Match
comparison methods.
-
Replace a global variable by a function argument in CLASS_look() and CLASS_find() functions.
-
Add component name in debugger positions.
-
Add an API to retrieve the last error message.
-
The exported name of a class does not overwrite the name field of the class structure anymore, fixing the stack backtrace.
-
Remove a now useless flag in the internal class structure.
-
Support for breakpoints inside project components.
-
Support for write-only properties.
-
Add a class flag for bytecode strictly older than 3.18.
-
Remove useless LIKELY() and UNLIKELY() macros.
-
Enhance GB.SubstStringAdd()
and add GB.SubstStringUnquote()
API to support custom quoting in gb.db
.
-
Optimize array access and basic arithmetic operator on integer and floats.
-
Fix compilation on non-C99 compiler.
-
Some optimizations of the main interpreter loop.
-
Fix optimization of dynamic variable reading.
-
Fix optimization of dynamic variable writing.
-
Always check bytecode version when the current class changes during interpreter execution loop.
-
Don't use 3.18 multiply and divide optimization if current bytecode version is lower than 3.18.
-
Various optimizations of the interpreter execution loop.
-
Avoid unneeded type conversions when manipulating local variables.
-
NULL
can be serialized on streams correctly now.
-
Optimizations of local variables and argument assignments.
-
Optimization of small integer floating point constants.
-
[email protected]()
, [email protected]()
... functions can be the target of an affectation now.
-
Move some code outside of gbx_exec_loop.c
source file.
-
Fix JIT compilation of class inheriting from another class.
-
Add an API for the JIT compiler that retrieves the address of an object or a class for external functions.
-
The timezone now can be specified in a string representing a date, by adding a space followed by "UTC" or "GMT", a plus or minus sign, the hours, and optionnaly a colon followed the minutes.
-
Fix Format$() on numbers when the format string uses "0" character in the exponant part and the exponant is negative.
-
The divide operator now raises "Mathematic error" when the numerator is infinity, and raises "Division by zero" error only if the numerator is zero.
-
Integer arithmetic and conversion now raise an error if overflow is detected.
-
Check for overflow detection only if the __has_builtin
pseudo-macro is implemented by the compiler.
-
Avoid conversion to boolean when possible in conditional jumps.
-
Optimization of conditional jumps based on values known to be Boolean.
-
Prevent Add()
, Remove()
and Resize()
methods on read-only arrays.
-
Check all child terminations when we detect that the SIGCHLD
handler has been replaced by an idiotic library like glib
.
-
System.IgnoreOverflow
is a new property that allows to ignore overflows in arithmetic operations.
-
Replace most of boolean global interpreter flags by bit fields.
-
Don't use -O3
. It makes benchmarks slower than using -O2
.
-
Add the branch to the version number when it comes from a VERSION
file.
-
Display bytecode statistics in verbose, no background task mode.
-
PROPERTY WRITE
now declares a write-only property.
-
Does not crash anymore when a negative integer is used for the value of a floating point constant.
-
Remove useless LIKELY() and UNLIKELY() macros.
-
Forbid PROPERTY WRITE
when compiled bytecode version is strictly lower than 3.18.
-
Free 14 bytecode slots by using ADD QUICK
for numbers between -255 and 255 only.
-
Support for local variable manipulation optimization.
-
Optimization of small integer floating point constants.
-
[email protected]()
, [email protected]()
... functions can be the target of an affectation now.
-
Make the compiler more clever when deciding if an identifier is a reserved keyword or not.
-
Some optimizations in the parser.
-
Optimize jumps pointing at a JUMP bytecode.
-
The /
operator correctly returns a Float if its arguments are Float.
-
Optimization of conditional jumps based on values known to be Boolean.
-
Workaround incorrect use of unsigned color constants by the IDE form editor.
-
Don't crash anymore if an error is raised while reading command-line arguments.
-
Fix parsing of Debug
symbol in preprocessor lines.
-
Optimize variable initialization.
-
Display a lock
emblem on non-readable files in icon view mode.
-
Add a permission column in detailed view mode.
-
Add FileCount, DirCount and TotalSize properties, to get statistics on the current directory contents.
-
Add a Refresh event that triggers just after the FileView has refreshed its contents.
-
Correctly refresh icons on icon theme change.
-
Add a Selected
property that returns if at least one item is selected.
-
Correctly set the item texts so that renaming works as expected in all cases.
-
Add a Rename
event that allows to implement a custom file renaming.
-
Copy()
is a new method that copy the selected elements to the clipboard as a "text/uri-list".
-
Automatic support of drag & drop.
-
Paths
is a new property that returns the absolute paths of all selected elements.
-
Add a Filter
event, that allows to filter what is displayed file by file.
-
The preview background task is now automatically stopped as soon as the control is hidden.
-
MaxPreviewSize
is a new property that allows to define the size limit of previewed file.
-
The preview size limit does not apply to text files and video files.
-
Remove file details in icon view mode. It's ugly.
-
Fix preview refresh when the control is shown or hidden.
-
Fix a crash when filling the popup menu.
-
Add preview of webp
image files.
-
The image file previews are now cached in the /tmp
directory. The cache is cleared when the process terminates.
-
Fix generation of svg file previews.
-
Add column padding to the detailed view, as there is no implicit padding anymore in ColumnView
.
-
Display directory custom icons.
-
Memorize a different icon size for Compact
and Normal
view.
-
The ShowDetailed
property is now deprecated.
-
View
is a new property that allows to define the view style between Normal
, Compact
, Detailed
and Preview
.
-
Generate thumbnails differently so that they are smooth on Qt.
-
Display icons for XDG user directories having no explicit .directory
desktop file.
-
Add preview of text files and PDF files.
-
Add preview of video files if ffmpeg
is installed.
-
Add preview of OpenOffice and EPub files.
-
Add the file mime icon on top of its preview, except for video and images.
-
Add line count in text files preview.
-
Add page count in PDF or OpenOffice files preview.
-
Correctly abort the preview background task when the Dir
property changes.
-
Reload() method takes an optional boolean argument for refreshing the preview cache.
-
Do not forget to kill the preview background task is some cases.
-
SvgImage: Painting routine has been redesigned and is now faster.
-
TextArea: Modifying the contents by code now refreshes the control as expected.
-
TextArea: Fix drag and drop.
-
UserControl: Call the UserControl_Resize() public method on resize.
-
The WAIT
instruction alone now ignores input events like Qt components.
-
Support for WAIT 0
syntax.
-
Remove the native ComboBox.
-
UserControl_Draw()
event handler is called before drawing the control children.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Allow calling WAIT
alone during a keyboard event handler.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Closing the main window when it is persistent correctly quits the application.
-
Reparenting a window correctly triggers automatic arrangement.
-
The parent window of a modal window is now always the current active window.
-
Hide menu before destroying it, so that the top-level menu bar is correctly updated.
-
Container are now still arranged when they are hidden because of a null size.
-
Container hidden because of a null size do not disable arrangement.
-
Restarting a timer during its event handler should not lead to a possible crash anymore.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Fix menu relayout after the Show
event has been handled..
-
Watcher
now should finally raise their Show
event correctly.
-
Setting the Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Update deferred arrangements before handling focus changes (and other posted routines).
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix drag & drop management.
-
Popup menus are scrollable again.
-
Fix some use of deprecated functions.
-
Fix compilation with old versions of librsvg
.
-
Fix some default control sizes.
-
WAIT
now runs the deferred routines even if there is no pending GUI event.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste. The global GTK+ settings is taken into account at application startup.
-
Paint.DrawText()
and Paint.DrawRichText()
do not move the current point anymore.
-
Fix value of Key.Shift
, Key.Control
, Key.Alt
, Key.Meta
and Key.Normal
.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Correctly release the current grab when the debugger wakes up.
-
Starts program by assuming the clipboard has been modified.
-
SvgImage: Painting routine has been redesigned and is now faster.
-
TextArea: Modifying the contents by code now refreshes the control as expected.
-
TextArea: Fix drag and drop.
-
UserControl: Call the UserControl_Resize() public method on resize.
-
The WAIT
instruction alone now ignores input events like Qt components.
-
Support for WAIT 0
syntax.
-
Remove the native ComboBox.
-
UserControl_Draw()
event handler is called before drawing the control children.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Allow calling WAIT
alone during a keyboard event handler.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Closing the main window when it is persistent correctly quits the application.
-
Reparenting a window correctly triggers automatic arrangement.
-
The parent window of a modal window is now always the current active window.
-
Implement Application.ShowTooltips
property.
-
Hide menu before destroying it, so that the top-level menu bar is correctly updated.
-
Container are now still arranged when they are hidden because of a null size.
-
Container hidden because of a null size do not disable arrangement.
-
Restarting a timer during its event handler should not lead to a possible crash anymore.
-
The changes in main window stylesheet do not apply to the embedded title bar anymore.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Fix menu relayout after the Show
event has been handled..
-
Watcher
now should finally raise their Show
event correctly.
-
Setting the Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Update deferred arrangements before handling focus changes (and other posted routines).
-
Top-level window background color is correctly taken into account again.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix drag & drop management.
-
Popup menus are scrollable again.
-
Fix some use of deprecated functions.
-
Fix compilation with old versions of librsvg
.
-
Fix some default control sizes.
-
WAIT
now runs the deferred routines even if there is no pending GUI event.
-
Remove debugging messages on dnd.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste. The global GTK+ settings is taken into account at application startup.
-
Paint.DrawText()
and Paint.DrawRichText()
do not move the current point anymore.
-
Fix value of Key.Shift
, Key.Control
, Key.Alt
, Key.Meta
and Key.Normal
.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Correctly release the current grab when the debugger wakes up.
-
Starts program by assuming the clipboard has been modified.
-
Selection is now updated during rubberband selection.
-
Selection
is a new property that returns an array of the keys of all selected items.
-
Fix computation of text icon position when renaming.
-
ESC key now unselects all items.
-
UnselectAll()
now always resets the current item.
-
Use Color.TextBackground
when the Background
property is set to Color.Default
.
-
Support for DnD.
-
Rubberband selection is more clever.
-
Add Scroll
event.
-
Select
event is correctly raised again in single selection mode.
-
Item shape now follows the icon size and the text size.
-
The layout algorithm has been cleaned up and fixed.
-
Fix drawing and selection in horizontal orientation.
-
Check an update hovered item at each refresh.
-
Handle PageDown
and PageUp
keys.
-
Fix icon layout so that the number of text lines specified by IconLines
is actually displayed.
-
Drag & Drop: Eat the DragMove
event as soon as the Drop
event has an event handler.
-
UserControl: Call the UserControl_Resize()
public method on resize.
-
Support for WAIT 0
syntax.
-
Remove the native ComboBox.
-
Style methods draw focus and tab focus.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Remove now useless ComboBox source code.
-
Allow calling WAIT
alone during a keyboard event handler.
-
Ensure that the copy of a Font
is internally completely detached from its source.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Use the explicit
keyword in all C++ constructors.
-
Fix gb.qt4
compilation.
-
The parent window of a modal window is now always the current active window.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Correctly send wheel events to widgets that handle them when the associated control is a proxy.
-
Setting the Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix some default control sizes.
-
Ignore spurious duplicated mouse move events.
-
Fix the use of a local variable out of scope.
-
Prevent a possible infinite recursion when initializing window menu bar.
-
UserControl
now automatically refreshes itself when its enabled state changes.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Fix reference leak in drag & drop target management.
-
Starts program by assuming the clipboard has been modified.
-
Drag & Drop: Eat the DragMove
event as soon as the Drop
event has an event handler.
-
UserControl: Call the UserControl_Resize()
public method on resize.
-
Support for WAIT 0
syntax.
-
Remove the native ComboBox.
-
Style methods draw focus and tab focus.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Remove now useless ComboBox source code.
-
Allow calling WAIT
alone during a keyboard event handler.
-
Ensure that the copy of a Font
is internally completely detached from its source.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Do not use the deprecated printer functions anymore.
-
Use the explicit
keyword in all C++ constructors.
-
The parent window of a modal window is now always the current active window.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Correctly send wheel events to widgets that handle them when the associated control is a proxy.
-
Setting the Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix some use of deprecated functions.
-
Fix some default control sizes.
-
Ignore spurious duplicated mouse move events.
-
Make window activation specific to the GUI platform, in the hope of finding a workaround to the fact that window activation request is impossible in Wayland.
-
Fix the use of a local variable out of scope.
-
Prevent a possible infinite recursion when initializing window menu bar.
-
UserControl
now automatically refreshes itself when its enabled state changes.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Fix reference leak in drag & drop target management.
-
Starts program by assuming the clipboard has been modified.
-
Tracking
is a new property that tells if the Position
property is updated in real-time.
-
Fix a lot of bugs and implementation problems.
-
Add Tracking
to the properties visible to the IDE.
-
Clean up code and add inline wiki help to WebAudio.
-
Do not reset play position to 0 on play in lib.js
so audio can un-pause.
-
Property Paused
gets or sets paused state.
-
Property Position
gets or set song position.
-
Property Duration
gets song length.
-
Pause
event triggers when audio pauses.
-
End
event fires when a track finishes
-
Position
event fires as audio position changes during play.
-
Ready
event fires when audio has loaded.
-
Add Sources
property for alternative items.
-
Add AutoPlay
property to enable automatic playing on loading.
-
Length
is a synonym for Duration
.
-
For backward compatibility, Play()
will play from start if not in paused state.
-
Color: Replace WebControl._GetColor()
by Color.ToHTML()
.
-
Session: Add the server port to the session cookie.
-
Keyboard events are now sent to the server only if needed (i.e. if a control or a form has a KeyPress event handler).
-
New custom focus management.
-
Flush the standard output before quitting.
-
Remove the useless Message.Name
property.
-
Focus frame should be managed correctly in all cases now.
-
Error raised by the Gambas code on the server should now normally be displayed in the browser within an alert box.
-
Remove a possible stack overflow in javascript focus management.
-
Key events modifiers do not have two different names anymore according to the context.
-
Replace the $()
javascript function by $_()
in the internal library to avoid conflict with other libraries like jquery
.
-
Fix conversion of Gambas opacity to HTML transparency in colors.
-
Color: Color.ToHTML()
is a new method that converts a Gambas color to HTML color.
-
Add gb.geom
as a new dependency.
-
Make the ;
explicit in internally generated javascript.
-
Fix component dependencies.
-
Move focus frame when the window is resized.
-
The cookie name now depends on the application name, so that you can run different applications on the same server.
-
When checking keyboard events for shortcuts on the client side, take a possible undefined key code into account.