Releases: QB64-Phoenix-Edition/QB64pe
Releases Β· QB64-Phoenix-Edition/QB64pe
v3.13.0
Enhancements
- #478, #484 - Added support for _NEGATE, _ANDALSO, & _ORELSE Boolean operators. - @a740g, @mkilgore
- #468 - Added support for _MOUSEWHEEL on macOS. - @a740g
- #475 - Added support for _CLIPBOARDIMAGE on macOS & Linux. - @a740g
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
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
orDECLARE 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.
- Formerly, if changes to
- #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.
- This works like the known
- #454 - Implemented the _READFILE$ and _WRITEFILE commands - @RhoSigma-QB64
- These functions will read/write whole files without
OPEN/CLOSE
overhead, hence similar toBLOAD/BSAVE
.
- These functions will read/write whole files without
Lib Updates
- #430 - Updated stb_image to v2.29 - @a740g
- #431 - Updated FreeType to v2.13.2 - @a740g
- #441 - Updated GLEW to v2.2.0 and FreeGLUT to v2.8.1 - @a740g
- #453, #455, #456, #457, #458, #146, #147, #424 - Various internal refactoring to libqb. - @mkilgore
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 - @mkilgoreCHR$()
andASC()
can now be used inCONST
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
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 as21
.
- Ex.
- Negative
Full Changelog: v3.10.0...v3.11.0
v3.10.0
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
Bug Fixes
- #389 - Internal fixes to use correct math functions from
std::
namespace. - @a740g - #391 - Fixed no sound issue on macOS discussed in this forum posts. - @a740g
- #397, #398 - Fixed several
CONST
issues. - @SteveMcNeill - #405 - Fixed checking for invalid domains in
_ARCSEC
and_ARCCSC
as per the forum posts - #407, #410 - Change IDE save method for better speed on big source files. - @SteveMcNeill
- #412 - Avoid segfault on bogus SVG data pretending to be valid SVG text. - @a740g
Full Changelog: v3.9.1...v3.10.0
v3.9.1
v3.9.0
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
andHDR
- It can save graphics and text screens / images as
- 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$
stringSXBR2
- Super-xBR 2xMMPX2
- MMPX Style-Preserving 2xHQ2XA
- High Quality Cartoon 2xHQ2XB
- High Quality Complex 2xHQ3XA
- High Quality Cartoon 3xHQ3XB
- High Quality Complex 3x
- Adds the _SAVEIMAGE
- #370, #352, #374 - Audio library enhancements. - @a740g
- QOA format support
- Updates
miniaudio
to v0.11.18 - Includes latest fixes for
Hively Tracker
andTinySoundFont
- 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 thestart of line
if its current position is exactly onstart of text
, and from all other positions in the line (including anywhere in the indention space) it will always jump tostart of text
- Now when the
- #367 - Adds support for
FNT
,FON
,PCF
andBDF
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
- For now, Windows on ARM versions of QB64-PE can only be built by locally cloning the repository and then running
- #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
- QB64-PE will no longer replace
- #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
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.
- Thanks to @grymmjack for implementing all these new codeboxes: https://qb64phoenix.com/forum/showthread.php?tid=1740
- 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.
- Added ability to export into a [qb=export] Forum codebox.
Bug Fixes
- #341 - Fixing the cut-off on certain letters in conjunction with
_LOADFONT
andPRINT
. - @a740g- Issue was reported here: https://qb64phoenix.com/forum/showthread.php?tid=1691
- #347 - Fixing issues with
PLAY
statement. - @a740gPLAY
is now feature complete supporting "X" +VARPTR$(...)
Full Changelog: v3.7.0...v3.8.0
v3.7.0
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 withminiz
stb_image.h
was updated to v2.28miniaudio
was updated to v0.11.13tinysoundfont
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'$include
d file, then it can also find header files that are relative to the location of the'$include
d file rather than the original source file.
- If
Bug Fixes
- #319 - Fixed the "Update All Pages" process in the IDE. - @RhoSigma-QB64
- Creation/renaming/deletion of new/old Wiki pages shouldn't break the update process, but instead reflect the made changes in the local help too.
- The problem was originally discussed here: https://qb64phoenix.com/forum/showthread.php?tid=1521
- #333, #334 - Fixed the Keyboard
_Devices
entry on Windows - @mkilgoreAlt+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()
- @a740gBEEP
was also improved so that multipleBEEP
s in a row will have a short pause separating them.
Full Changelog: v3.6.0...v3.7.0
v3.6.0
Enhancements
- #286 - Added support for opening image from memory using
_LOADIMAGE()
- @a740g, @mkilgore_LOADIMAGE()
has a new optionalrequirements$
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 thefileName$
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.
- The extension
Full Changelog: v3.5.0...v3.6.0
v3.5.0
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.
- Feature is current unstable and requires
- #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.
- The created sound buffer can be accessed using
- #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.
- The string provided to
- #280, #279 - Added support for playing Amiga AHX and HVL audio files. - @a740g
- They are played using
_SNDOPEN()
like any other audio file.
- They are played using
- #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 involvingVERSION
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.
- Previously
- #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 fromPLAY
,SOUND
, orBEEP
. - @a740g - #167, #279 - The timing of
SOUND
andPLAY
calls were improved so that they wait for the sound to finish playing. - @a740g - #186, #279 -
SOUND
andPLAY
now generate mono sound, reducing memory usage. - @a740g - #217, #279 - The
N
command forPLAY
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