01-29-2026, 02:09 PM
https://github.com/QB64-Phoenix-Edition/...tag/v4.4.0
I know it wasn't long ago that we brought you guys version 4.3.0, but we've got you a brand new shiny and nifty new little 4.4 to enjoy!!
v4.4.0 Latest Enhancements
#670 - Allow interleaving SUB/FUNCTIONs with main program, fixing #504 - @flukiluke
This renders the error Statement cannot be placed between SUBs and FUNCTIONs obsolete.
It also makes building libraries easier, as everything (CONST, TYPE, DIM, SUB, FUNCTION) can go into the same file now.
Library Updates
#674 - Miniaudio rolled back to the previous version - @RhoSigma-QB64
This is now the same version we had in QB64-PE v4.2.0, as the updated version in v4.3.0 had issues with music streaming when tailing at the same time (writing more data to the stream while it is playing).
Bug Fixes
#665 - Export As... fixes - @RhoSigma-QB64
Now auto-closing strings at line end if required.
Fixed look-ahead logic to avoid partly name matches causing wrong output.
#666 - Restore IDE behavior when Autobrackets is disabled - @SteveMcNeill
With the change to autobrackets in v4.3.0, the IDE suddenly started to just skip over end bracket type symbols if one were to type them and the next character was an end bracket. This makes sense with the autobracket enabled, but when it's turned off, those keystrokes should be processed as before, without skipping that next character.
#671 - Do not over-apply auto-semicolon insertion, fixing #575 - @flukiluke
String literals in a PRINT statement may be subject to automatic semicolon insert on either side. For instance, PRINT "abc"123, 123"abc" is equivalent to PRINT "abc"; 123, 213; "abc". The logic was not accounting for the possibility of a comparison operator before/after a string literal, and so PRINT "abc" = "def" gets turned into the invalid PRINT "abc"; <>; "def". These operators are now checked for.
This is one of those enhancements which STEVE thinks everyone should grab and enjoy as soon as possible!! This does one of the things that I personally think we've been needing for a long time now:
It allows library creators to make libraries with just a single $INCLUDE file in them!!
No longer do you need a *.BI file for the top of your library, and a *.BM file for the bottom of your library. Just one single file is good enough. Place it at the start of your code and you're golden!!
Note that this also allows you to do some odd looking stuff, which I really don't recommend, but which *is* technically possible. Notice the following code:
See the SUB in the middle of the program there?
That's actually 100% QB45-compatible code. It's not something which we supported before, but it WORKS and has worked in QB45 and QBASIC since forever. This is why QB45 had only one single $INCLUDE, while old versions of QB64 had to be separated into the top and bottom portions of your code base.
In most cases, writing code like this will make things harder for the programmer to understand and follow, and I discourage doing it.
For people writing library style code for use with $INCLUDE, however, this is a great change as you can now put your entire library into a single file and share it, $INCLUDE it, work with it, format it, and all that as just a single file.
I imagine a LOT of libraries are going to start adapting to this new single file format before long, as it's just easier in general for most of the creators to keep up with things, maintain them, and share them, as a single file, so if you like to $INCLUDE others stuff in your code, you'll probably want to grab the latest version here and update without skipping this release.
I know it wasn't long ago that we brought you guys version 4.3.0, but we've got you a brand new shiny and nifty new little 4.4 to enjoy!!
v4.4.0 Latest Enhancements
#670 - Allow interleaving SUB/FUNCTIONs with main program, fixing #504 - @flukiluke
This renders the error Statement cannot be placed between SUBs and FUNCTIONs obsolete.
It also makes building libraries easier, as everything (CONST, TYPE, DIM, SUB, FUNCTION) can go into the same file now.
Library Updates
#674 - Miniaudio rolled back to the previous version - @RhoSigma-QB64
This is now the same version we had in QB64-PE v4.2.0, as the updated version in v4.3.0 had issues with music streaming when tailing at the same time (writing more data to the stream while it is playing).
Bug Fixes
#665 - Export As... fixes - @RhoSigma-QB64
Now auto-closing strings at line end if required.
Fixed look-ahead logic to avoid partly name matches causing wrong output.
#666 - Restore IDE behavior when Autobrackets is disabled - @SteveMcNeill
With the change to autobrackets in v4.3.0, the IDE suddenly started to just skip over end bracket type symbols if one were to type them and the next character was an end bracket. This makes sense with the autobracket enabled, but when it's turned off, those keystrokes should be processed as before, without skipping that next character.
#671 - Do not over-apply auto-semicolon insertion, fixing #575 - @flukiluke
String literals in a PRINT statement may be subject to automatic semicolon insert on either side. For instance, PRINT "abc"123, 123"abc" is equivalent to PRINT "abc"; 123, 213; "abc". The logic was not accounting for the possibility of a comparison operator before/after a string literal, and so PRINT "abc" = "def" gets turned into the invalid PRINT "abc"; <>; "def". These operators are now checked for.
This is one of those enhancements which STEVE thinks everyone should grab and enjoy as soon as possible!! This does one of the things that I personally think we've been needing for a long time now:
It allows library creators to make libraries with just a single $INCLUDE file in them!!
No longer do you need a *.BI file for the top of your library, and a *.BM file for the bottom of your library. Just one single file is good enough. Place it at the start of your code and you're golden!!
Note that this also allows you to do some odd looking stuff, which I really don't recommend, but which *is* technically possible. Notice the following code:
Code: (Select All)
foo
Sub foo
Print "Hello";
End Sub
Print " World"
See the SUB in the middle of the program there?
That's actually 100% QB45-compatible code. It's not something which we supported before, but it WORKS and has worked in QB45 and QBASIC since forever. This is why QB45 had only one single $INCLUDE, while old versions of QB64 had to be separated into the top and bottom portions of your code base.
In most cases, writing code like this will make things harder for the programmer to understand and follow, and I discourage doing it.
For people writing library style code for use with $INCLUDE, however, this is a great change as you can now put your entire library into a single file and share it, $INCLUDE it, work with it, format it, and all that as just a single file.
I imagine a LOT of libraries are going to start adapting to this new single file format before long, as it's just easier in general for most of the creators to keep up with things, maintain them, and share them, as a single file, so if you like to $INCLUDE others stuff in your code, you'll probably want to grab the latest version here and update without skipping this release.

