Skip to content

Releases: QB64-Phoenix-Edition/QB64pe


15 May 22:44
Choose a tag to compare

What's Changed

  • #490 - Refactor RAD v2 Opal OPL3 FM Emulator - @a740g
  • #491 - Multiple font related optimization and improvements - @a740g
    • Especially some monospaced fonts related quirks discovered with the previous release have been fixed

Full Changelog: v3.13.0...v3.13.1


01 May 18:52
Choose a tag to compare


Bug Fixes

  • #468 - Fixed _MOUSEMOVEMENTx behavior on macOS. - @a740g
  • #470 - Fixed an issue where the IDE would lock up if the source code had too many DATA statements on macOS. - @a740g
  • #473 - Fixed the "Export As" menu state in the IDE. - @RhoSigma-QB64
  • #474 - Fixed the GLUT thread to redraw at an accurate 60 FPS. - @mkilgore
  • #476 - Fixed an issue on Windows where special keys were monitored even when the window was not in focus. - @a740g
  • #477 - Fixed the IDE to open the GUI file dialog when Ctrl+S was pressed and GUI Dialogs were enabled. - @a740g
  • #480, #487 - Fixed mono-mode font rendering and quality issues, and corrected font width calculations when loading monospaced fonts. - @a740g
  • #481 - Fixed an issue that would cause LLVM-MinGW to incorrectly generate Windows GUI applications when $CONSOLE was used. - @a740g
  • #484 - Fixed macOS startup script bugs. - @tothebin
  • #485 - Fixed various wiki issues. - @RhoSigma-QB64
  • #486 - Fixed an issue where the IDE was reporting an incorrect error. - @SteveMcNeill

Other Fixes

Full Changelog: v3.12.0...v3.13.0


28 Feb 18:22
Choose a tag to compare


  • #438 - Reduced memory impact of the Export As feature for large sources. - @RhoSigma-QB64
  • #442, #450, #433 - Implemented checks for External Dependencies into the IDE. - @RhoSigma-QB64
    • Formerly, if changes to $INCLUDE, $EMBED, $EXEICON, $MIDISOUNDFONT or DECLARE LIBRARY files were made while the main source was opened in the IDE, a fake change like adding/removing a line was required to force the IDE to recompile/rebuild the source when pressing F5/F11.
    • Now you can simply hit F5/F11 again (even after a programming error happened in such external file which is still displayed in the IDE status area) and the IDE will automatically recognize changes to those external files and recompile/rebuild the source as needed. No more fake changes are required.
  • #444, #447 - Implemented new checksum and hashing functions. - @RhoSigma-QB64
  • #448, #240 - Implemented the $INCLUDEONCE metacommand. - @RhoSigma-QB64
    • This works like the known #pragma once in C/C++ and avoids the need for $IF DEFINED... style include guards.
  • #454 - Implemented the _READFILE$ and _WRITEFILE commands - @RhoSigma-QB64
    • These functions will read/write whole files without OPEN/CLOSE overhead, hence similar to BLOAD/BSAVE.

Lib Updates

Bug Fixes

  • #426 - Several fixes to _FILES$. - @a740g
  • #428 - Fixed bug where OPEN COM would lock the program up. - @a740g
  • #435, #359, #196, #192 - CONST evaluation was rewritten to resolve several longstanding issues - @mkilgore
    • CHR$() and ASC() can now be used in CONST expressions.
  • #449 - Fixed $IF prioritization, $IF can now be used around $NOPREFIX, $COLOR and $DEBUG - @SteveMcNeill
  • #462, #461 - Fixed typo in -? usage details. - @grymmjack

Full Changelog: v3.11.0...v3.12.0


03 Jan 17:23
Choose a tag to compare


  • #419 - Filesystem refactor and update - @a740g
    • Added _FILES$ to read file and directory names programmatically.
    • Added _FULLPATH$ to get an absolute or full path name for a specified relative path name.
    • _DIR$ now works as expected on Linux & macOS.
    • FILES now works on Linux & macOS.
    • KILL now supports deleting files on Linux & macOS using wildcards.
  • #421 - Updated MinGW-GCC to v13.2.0 and LLVM-MinGW to v17.0.6 - @a740g
  • #422 - Updated miniaudio to v0.11.21 - @a740g

Bug Fixes

  • #420 - Fixed several CONST issues - @SteveMcNeill
    • Negative &H, &B, and &O numbers will now evaluate to the correct values.
    • Type suffixes on numbers will no longer cause CONST to ignore the rest of the expression past the suffix.
      • Ex. 20& + 1 previously caused the + 1 to be ignored, it now evaluates correctly as 21.

Full Changelog: v3.10.0...v3.11.0


18 Dec 20:05
Choose a tag to compare


  • #392 - Allow single quoted strings in $VERSIONINFO. - @a740g
  • #399 - The IDE waits for release of F5 key before running the program to avoid start of multiple copies of the program. - @SteveMcNeill
  • #401 - Add Support for optional paramter for an image handle to CLS. - @SteveMcNeill
  • #404 - Increased the maximum number of possible SUBs/FUNCTIONs in a program from 1000 to 25000. - @SteveMcNeill
  • #414, #415 - Implemented $EMBED metacommand and _EMBEDDED$ function. - @RhoSigma-QB64
    • Can be used to embed any files (images, sounds, fonts and other assets) into the compiled executable and recall it in the program when needed.
    • Read the respective Wiki pages: $EMBED and EMBEDDED$

Bug Fixes

Full Changelog: v3.9.1...v3.10.0


08 Oct 19:04
Choose a tag to compare

Bug Fixes

Full Changelog: v3.9.0...v3.9.1


05 Oct 04:42
Choose a tag to compare


  • #368 - Image library enhancements. - @a740g
    • Adds the _SAVEIMAGE fileName$[, imageHandle&][, requirements$] statement
      • It can save graphics and text screens / images as PNG, QOI, BMP, TGA, JPG and HDR
    • Adds SVG vector image loading support from files and memory buffers
    • Adds QOI image loading support from files and memory buffers
    • Adds high quality pixel scaler support
      • Scalers can be used only during image loading and thus has zero performance impact when the image is in use
      • 6 supported scalers that can be used by specifying the scaler name in _LOADIMAGE's requirements$ string
        • SXBR2 - Super-xBR 2x
        • MMPX2 - MMPX Style-Preserving 2x
        • HQ2XA - High Quality Cartoon 2x
        • HQ2XB - High Quality Complex 2x
        • HQ3XA - High Quality Cartoon 3x
        • HQ3XB - High Quality Complex 3x
  • #370, #352, #374 - Audio library enhancements. - @a740g
    • QOA format support
    • Updates miniaudio to v0.11.18
    • Includes latest fixes for Hively Tracker and TinySoundFont
    • Updates Libxmp-lite to v4.6.0
    • Removes the legacy LGPL OpenAL audio backend
  • #356, #361 - Adds Save As OS-native GUI dialog support to the IDE. - @SteveMcNeill
  • #373 - IDE editor enhancement. - @RhoSigma-QB64
    • Now when the Home key is pressed, the cursor will only jump to the start of line if its current position is exactly on start of text, and from all other positions in the line (including anywhere in the indention space) it will always jump to start of text
  • #367 - Adds support for FNT, FON, PCF and BDF fixed width bitmap fonts. - @a740g
  • #371 - Updates MinGW. It now supports GCC 13.1.0 with MinGW runtime v11. - @a740g
  • #380 - Adds initial Windows on ARM support using LLVM-MingW. - @a740g
    • For now, Windows on ARM versions of QB64-PE can only be built by locally cloning the repository and then running setup_win.cmd
  • #379 - Updates libstem Gamepad library to the latest version. - @a740g

Bug Fixes

  • #351 - Fixes and issue where fonts were getting vertically misaligned. - @a740g
  • #367 - Fixes a seg-fault when using fonts on macOS as reported by @grymmjack. - @a740g
  • #353 - Fixes DECLARE DYNAMIC LIBRARY path issue. - @a740g
    • QB64-PE will no longer replace ./ with an absolute path
  • #358 - Fixes a bug that was hiding part of the IDE screen by the Window frame when compiled with LLVM-MingW. - @a740g
  • #365 - Patches a compiler function CopyFile() to clear the file first before writing. - @SteveMcNeill
  • #366 - Fixes CONST Blink ($COLOR:0) and _BLINK name collision with $NOPREFIX is used. - @SteveMcNeill
  • #372 - Fixes PRINT to print spaces and tabs correctly when _KEEPBACKGROUND is set. - @a740g
  • #377 - Fixes wrong KSL (key scale shift) values in RAD player. - @a740g

Full Changelog: v3.8.0...v3.9.0


14 Jun 06:57
Choose a tag to compare


  • #338 - C/C++ compiler update. - @a740g
    • Updates the MinGW toolchain to v12.2.0 r2.
  • #339 - Improvements on the various dialog functions. - @a740g
    • Many mandatory dialog parameters are now optional.
    • Parsable option string arguments are case-insensitive now (required lower case before).
  • #341 - Adds _UCHARPOS() to the _U* functions family. - @a740g
    • Ideally, this should have been added in v3.7.0 but was not due to an oversight. This function calculates the pixel distance of every character in a string from the origin and is especially helpful for variable width fonts.
  • #347 - Audio enhancements. - @a740g
    • Updates miniaudio to v0.11.17, which adds support for Apple AIFF and AIFC audio formats. So, we get those too.
    • PLAY has been extended to:
      • Select waveforms @n (square = 1, sawtooth = 2, triangle = 3 (default), sine = 4, noise = 5).
      • Adjust volume ramping Qn (0ms to 100ms).
    • SOUND has been extended to use the following syntax:
      • SOUND frequency#, duration#[, volume#][, panning#][, waveform&]
  • #346 - Improves the IDE code export abilities. - @RhoSigma-QB64
    • Added ability to export into a [qb=export] Forum codebox.
    • The Forum/Wiki exports now go to the clipboard instead of a file and can directly be pasted into the Forum post or Wiki page.
    • Progress of export is shown in the status line and you'll get a message upon export completion.

Bug Fixes

Full Changelog: v3.7.0...v3.8.0


05 May 05:47
Choose a tag to compare


  • #315, #319, #327 - Implemented a new "Code Export" feature reachable via the "File" menu. - @RhoSigma-QB64
    • Useful for authors of tutorials, documentations or Wiki pages, they can now easily export the currently edited code and insert it in their work. The code is highlighted according to the currently chosen color scheme in the IDE and the keywords are linked to its respective Wiki pages.
    • Export is possible as Hypertext (.html), Rich Text (.rtf) or Wiki encoded text (.txt).
  • #188, #330, #335 - Added commands for rendering Unicode text - @a740g
    • _UPrintString acts like regular _PrintString but accepts Unicode strings.
    • _UFontHeight gives the global glyph height of a given font, which may be larger than the _FontHeight. _UPrintString uses this height.
    • _UPrintWidth acts like _PrintWidth and returns the width in pixels a Unicode string will take up when printed using _UPrintString.
    • _ULineSpacing will give the proper vertical spacing (font height + extra pixels) to vertically separate multiple lines of text.
  • #188, #335, #330 - Improve and optimize Font internals - @a740g
    • Font loading should be significantly faster due to the addition of a lazy Glyph cache.
  • #232, #330, #335 - Added a new _LoadFont() argument which allows loading a font from memory - @a740g
  • #316, #317, #318, #320, #322, #325 - Many internal libraries were updated or replaced - @a740g
    • zlib was replaced with miniz
    • stb_image.h was updated to v2.28
    • miniaudio was updated to v0.11.13
    • tinysoundfont was updated to the latest version (2/18/23)
  • #325 - Added support for using SoundFont3 (SF3) format files with $MinisoundFont - @a740g
  • #329 - Added RAD v1 file support - @a740g
  • #124, #321, #326 - Improved Declare Library header file resolution - @a740g, @mkilgore
    • If Declare Library is in an '$included file, then it can also find header files that are relative to the location of the '$included file rather than the original source file.

Bug Fixes

  • #319 - Fixed the "Update All Pages" process in the IDE. - @RhoSigma-QB64
  • #333, #334 - Fixed the Keyboard _Devices entry on Windows - @mkilgore
    • Alt+key combination will now be correctly reported.
    • Pressing left and right shift at the same time will now be correctly reported.
  • #332 - Fixed potential segfault in PLAY() - @a740g
    • BEEP was also improved so that multiple BEEPs in a row will have a short pause separating them.

Full Changelog: v3.6.0...v3.7.0


20 Feb 03:10
Choose a tag to compare


  • #286 - Added support for opening image from memory using _LOADIMAGE() - @a740g, @mkilgore
    • _LOADIMAGE() has a new optional requirements$ argument, similar to the string argument to _SNDOPEN():
      • _LOADIMAGE(fileName$[, [mode&][, requirements$]]).
    • Providing "memory" in the requirements will cause _LOADIMAGE() to treat the contents of the fileName$ argument as an image file itself, rather than attempting to open a file.

Bug Fixes

  • #287, #296 - Fixed building QB64-PE on MacOS High Sierra - @mkilgore
  • #288 - Add missing keywords to syntax highlighter - @SteveMcNeill
  • #273, #295 - Timers will no longer take twice as long at program start - @mkilgore
  • #293, #295 - A stopped timer will now correctly run when turned on if it expired while stopped - @mkilgore
  • #294, #295 - On Windows, timers will now correctly trigger during SLEEP in $Console programs - @mkilgore
  • #298, #300, #302, #308 - Several improvements to the IDE Wiki - @RhoSigma-QB64
    • Improved handling of HTML Entity and UTF-8 characters used in the Wiki.
    • Fully implemented local links. The help page navigation in the IDE is now practically the same as in the real Wiki.
  • #301, #307 - Fix using DECLARE LIBRARY with a stripped .so file - @mkilgore
  • #297, #306 - The -o flag will no longer strip the extension from the executable name - @mkilgore
    • The extension .exe will still be removed when compiling on non-Windows platforms.

Full Changelog: v3.5.0...v3.6.0