Skip to content

Releases: QB64-Phoenix-Edition/QB64pe

v3.13.0

01 May 18:52
Compare
Choose a tag to compare

Enhancements

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

v3.12.0

28 Feb 18:22
Compare
Choose a tag to compare

Enhancements

  • #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

v3.11.0

03 Jan 17:23
Compare
Choose a tag to compare

Enhancements

  • #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

v3.10.0

18 Dec 20:05
Compare
Choose a tag to compare

Enhancements

  • #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

v3.9.1

08 Oct 19:04
Compare
Choose a tag to compare

Bug Fixes

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

v3.9.0

05 Oct 04:42
Compare
Choose a tag to compare

Enhancements

  • #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

v3.8.0

14 Jun 06:57
Compare
Choose a tag to compare

Enhancements

  • #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

v3.7.0

05 May 05:47
Compare
Choose a tag to compare

Enhancements

  • #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

v3.6.0

20 Feb 03:10
Compare
Choose a tag to compare

Enhancements

  • #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

v3.5.0

09 Jan 15:35
Compare
Choose a tag to compare

Enhancements

  • #46, #98, #250, #265, #272 - Added support for opening HTTP and HTTPS requests using _OPENCLIENT(). - @mkilgore
    • Feature is current unstable and requires $Unstable:Http to use.
    • On Linux and Mac OS this functionality requires libcurl to be installed.
    • HTTP(s) connections are opened using _OPENCLIENT() and generally work the same as the existing TCP/IP streams.
    • See the Wiki page on Downloading Files to see a complete overview of this functionality.
  • #28, #279 - Added _SNDNEW(frames&, channels&, bits&) function which can be used to make new sound buffers of a predetermined number of frames. - @a740g
    • The created sound buffer can be accessed using _MEMSOUND() to write sound data to it, and then played like any other sound.
  • #232, #279 - Sounds can now be opened from memory using _SNDOPEN(sound$, "memory"). - @a740g
    • The string provided to _SNDOPEN() in this case is not a filename, but instead contains the actual sound data that should be loaded into the new sound buffer.
  • #280, #279 - Added support for playing Amiga AHX and HVL audio files. - @a740g
    • They are played using _SNDOPEN() like any other audio file.
  • #261 - The IDE's new open file dialog will now remember the previous directory it was open to. - @SteveMcNeill
  • #264 - The error line color in the IDE is now configurable. - @SteveMcNeill

Bug Fixes

  • #252, #276 - Wiki will now be downloaded using the new HTTP support, curl is no longer needed. - @RhoSigma-QB64
  • #254 - _FONT settings that are invalid now produce an error rather than segfaulting. - @SteveMcNeill
  • #256, #258, #266, #267 - Fixed the command line compilation output when using some commands like $NoPrefix. - @mkilgore
  • #256, #257 - When compiling from the command line, the exe is now always located relative to the provided source file path. - @mkilgore
  • #234, #260 - Programs now wait for GLUT to be properly initialized before starting. - @mkilgore
  • #66, #270 - GLUT commands are now always executed on the correct thread. This fixes issues where some programs would randomly crash. - @mkilgore
  • #262, #233 - $IF checks involving VERSION now correctly compare all segments of the version individually. - @SteveMcNeill
    • Previously VERSION was compared as a string, which would have caused incorrect comparisons when the version numbers get larger.
  • #275 - Reduced the number of times nm is invoked to resolve Declare Library functions. - @flukiluke
  • #166, #279 - _SNDRAW is now fully implemented for the miniaudio audio backend - @a740g
    • The OpenAL audio backend is likely to be removed in the next version of QB64-PE.
  • #166, #279 - PLAY(n) now returns the number of sound samples left to play from PLAY, SOUND, or BEEP. - @a740g
  • #167, #279 - The timing of SOUND and PLAY calls were improved so that they wait for the sound to finish playing. - @a740g
  • #186, #279 - SOUND and PLAY now generate mono sound, reducing memory usage. - @a740g
  • #217, #279 - The N command for PLAY now plays the note in the correct octave. - @a740g, @mkilgore
  • #282, #284 - The long start-up time for QB64-PE programs has been fixed, there should no longer be a delay before the QB64-PE code starts running - @mkilgore
  • #281, #284 - A use-after-free bug was fixed in some of the buffer logic for the HTTP code - @mkilgore

Full Changelog: v3.4.1...v3.5.0