QB64 is een moderne versie van de programmeertaal Basic. De code wordt gecompileerd naar machinetaal en is daardoor snel en er kan worden gelinkt naar externe C- en C++-programmeerbibliotheken. Het is nagenoeg volledig compatibel met QBasic 4.5 en biedt ondersteuning voor extensies, zoals OpenGL. Nadat Fellippe Heitor drie jaar geleden plotseling bij QB64 vertrok, werd het erg stil rondom dit project. Een nieuwe groep ontwikkelaars heeft met QB64 Phoenix Edition echter een doorstart gemaakt. Net als QB64 is QB64 Phoenix Edition opensource, beschikbaar voor Windows, Linux en macOS, en heeft het een goed supportforum. Versie 4.6.0 is uitgekomen en de changelog daarvan kan hieronder worden gevonden.
EnhancementsLibrary Updates
- #728, #750 - New QBJS Web Build option in Run menu.
- Details and discussion of this feature can be found in this forum thread
- #730 - Adds source line tracking for Division-by-zero and other Critical Errors, so internal crashes report the BASIC source line/module instead of only Division by zero or Line: unknown.
- As this adds lots of additional function calls to the compiled program causing bloat and significant execution speed loss, it's considered a "debug" option which is disabled by default. Use the $ERRORLOCATION metacommand to enable it for a program.
- #732. #751 - Adds descriptor-backed dynamic nested arrays in
TYPE. It builds on the existing static nested arrays inTYPEsupport and keeps the legacy/static inline path compatible.
- New _STATIC and _DYNAMIC type field qualifiers. Note that dynamic arrays in TYPEs are considered unstable, and must be enabled with $UNSTABLE:TYPEFIELDS.
- Handles supported
REDIM,REDIM _RETAIN,ERASE, assignment/copy, and ownership cases.- Unsupported raw descriptor payload paths remain intentionally rejected. In particular,
_MEM,PUT, andGETover descriptor/owner/variable-string payload layouts are not treated as plain legacy binary payload access.- It is possible using static or dynamic nested arrays as sub/function parameter.
- #733 - Compressing undo events in the IDE, resulting in smaller undo files or more undo events fitting in same file size.
Bug Fixes
- #754 - Update
miniaudioto v0.11.25
- #722 - Correctly check for undefined nested array in
ERASE.- #726, #734 - Fix ANSI colors in Discord exports and adding missing keywords.
- #727 - Fix
PRINT USINGlayout duplication when adding expressions beforeUSINGin an existing statement.- #729 - Fix runtime error message boxes locking up program if SUB _GL is used.
- #730 - Fix case correction for indexed nested UDT member arrays according to the spelling in the TYPE declaration. Also fixes an IDE crash caused by corruption of an internal variable (introduced by "Arrays in TYPEs" changes in v4.5.0).
- #735 - Fix case correction of
TOin arrays likemyArray(1 TO 5)defined in UDTs.- #740, #749 - Fix issue #659, where SUB calls could be incorrectly interpreted as array assignment, and issue #739, adding missing support to insepct the new "Arrays in TYPEs" with
$DEBUG.- #746 - Fixed a type mismatch between the identifier table index (LONG) and array descriptor id (INTEGER), which could crash or produce unexpected behavior in large programs with more than 32767 registered identifiers. Also fixed a bug in the
$INCLUDEmanager, which resulted into a misleading error message. Fixes issue #745.- #747 - Widen the UDT index field from 9 to 12 bits, raising the cap from 511 to 4095 UDTs (
TYPE) per program.- #751 - Fix for selecting source code text by dragging the mouse (no longer need to move the mouse sideways if you are highlighting source code and the mouse moves outside the IDE window).
