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.
EnhancementsLibrary Updates
- #647, #648, #649, #650, #652 - Implements the $USELIBRARY meta-command and functionality
- 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 features
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 #661
Where 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.Bug Fixes
- #645, #654 - Update and refactoring of various libraries
- Replaces
image_log_errorwithimage_log_warnto reduce unnecessary error-level log output.- Reorders image format loading sequence to:
stb_image,sg_pcx,qoi,sg_curico, and finallynanosvg.- Updates
nanosvg,miniaudio,libcurl,FreeType, andclipto 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 #535
- 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.
- #615 - Fixed a rather subtle IDE module error
- 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.
Full Changelog: v4.2.0...v4.3.0
