Home

Software-update: QB64 Phoenix Edition 4.3.0

QB64 is een moderne versie van de programmeertaal BASIC. De code wordt gecompileerd naar machinetaal en is daardoor snel en kan er 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.3.0 is uitgekomen en de changelog daarvan kan hieronder worden gevonden.

Enhancements
  • #647, #648, #649, #650, #652 - Implements the $USELIBRARY meta-command and functionalityFor use of our brand new QB64-PE Libraries Pack add-on.The add-on is optional to ease library usage, but the traditional way of $INCLUDEing libraries still works without changes.
  • For use of our brand new QB64-PE Libraries Pack add-on.
  • The add-on is optional to ease library usage, but the traditional way of $INCLUDEing libraries still works without changes.
  • #651 - Implements three new IDE editing featuresAuto-closing of brackets and quotes.Ctrl+D for line/selection block duplication (Edit -> Duplicate lines).Alt+Shift+Up and Alt+Shift+Down to move lines/selection blocks up and down.image.png (view on web) Captura.de.Tela.2025-12-03.as.20.57.07.png (view on web)
  • Auto-closing of brackets and quotes.
  • Ctrl+D for line/selection block duplication (Edit -> Duplicate lines).
  • Alt+Shift+Up and Alt+Shift+Down to move lines/selection blocks up and down.
  • #662 - Implements a feature request to define another EXE output folder, this closes issue #661Where is my EXE saved?Master behavior determined by IDE config as follows:|+-> Save EXE to Source Folder? | | OFF ON | | | +-> EXE goes to source folder, except new unsaved code, | which goes to default location (no known source | path yet), hence always save new code before first | compiling to avoid the default location fallback. | +-> Default EXE location set? (IDE Run menu > Set Default EXE Folder...) | | YES NO | | | +-> EXE goes to 'qb64pe' folder. | +-> EXE goes to the user chosen location if existing, else fallback to 'qb64pe' folder. The exist check is performed once at start time, hence a removable USB drive or virtual RAM DISK must be accessible at start of QB64-PE. However, the fallback is temporary, if the user location is accessible at next start, then it is used again. Command line compiling follows the logic above, except if the '-o' option is used, in fact the only method to override this logic. A given absolute path here will save the EXE exactly there, any relative path assumes _STARTDIR$ as root. To change the default location from command line use the new switch: -s:ExeDefaultDir=<path> (quotes may be required) The path may be absolute or relative assuming _STARTDIR$ as root. Note the new location is saved and will be used by the IDE too then.
  • Library Updates
  • #645, #654 - Update and refactoring of various librariesReplaces image_log_error with image_log_warn to reduce unnecessary error-level log output.Reorders image format loading sequence to: stb_image, sg_pcx, qoi, sg_curico, and finally nanosvg.Updates nanosvg, miniaudio, libcurl, FreeType, and clip to their latest versions. These updates include important bug fixes and security patches.Removes obsolete logging code in libqb, now superseded by the recently added logging system.Switches the build to C++20, preparing for upcoming features that will rely on the newer standard.
  • Replaces image_log_error with image_log_warn to reduce unnecessary error-level log output.
  • Reorders image format loading sequence to: stb_image, sg_pcx, qoi, sg_curico, and finally nanosvg.
  • Updates nanosvg, miniaudio, libcurl, FreeType, and clip to their latest versions. These updates include important bug fixes and security patches.
  • Removes obsolete logging code in libqb, now superseded by the recently added logging system.
  • Switches the build to C++20, preparing for upcoming features that will rely on the newer standard.
  • #655 - Further relaxing ALIAS name validation, building on the work introduced in #535The previous update did not account for several critical C++ operators, which are essential for leveraging the underlying C++ compiler in more advanced and novel ways. By including these operators, developers can now use techniques that enable direct use of the C++ compiler without the need for additional header libraries.
  • The previous update did not account for several critical C++ operators, which are essential for leveraging the underlying C++ compiler in more advanced and novel ways. By including these operators, developers can now use techniques that enable direct use of the C++ compiler without the need for additional header libraries.
  • Bug Fixes
  • #615 - Fixed a rather subtle IDE module errorReported at Discord https://discord.com/channels/975381912350752819/975383819848912926/1446352493884739635If there was a program with a line count close below the next 1000s boundary and a search was performed, then if the found position was close to the program end and the IDE window height was bigger than the remaining program lines after the found match, then empty line padding could lead to a "subscribt out of range" error in an internal array in case the number of empty padding lines was bigger than the difference of the next 1000s boundary minus total program lines.
  • Reported at Discord https://discord.com/channels/975381912350752819/975383819848912926/1446352493884739635
  • If there was a program with a line count close below the next 1000s boundary and a search was performed, then if the found position was close to the program end and the IDE window height was bigger than the remaining program lines after the found match, then empty line padding could lead to a "subscribt out of range" error in an internal array in case the number of empty padding lines was bigger than the difference of the next 1000s boundary minus total program lines.
  • #657 - Fixes a bug in the font library function UTF32::ConvertUTF16()The function incorrectly attempted to consume a UTF-16 BOM even when none was present.
  • The function incorrectly attempted to consume a UTF-16 BOM even when none was present.
  • Full Changelog: v4.2.0...v4.3.0

    Full Changelog

    Source: Tweakers.net

    Previous

    Next