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.2.0 is uitgekomen en de changelog daarvan kan hieronder worden gevonden.
EnhancementsLibrary Updates
- #614, #615 - Audio updates and cleanup
- Adds sample rate support to _SNDNEW.
- Moves all information, warning, and trace logs to use our new logging features.
- #626 - Support for using System MinGW on Windows
- Adds support for using a system-installed compiler on Windows, such as a pre-existing MinGW toolchain (from MSYS2, Winget etc.). This can be helpful in situations where the user either cannot or prefers not to use the compiler bundled with QB64-PE.
- This feature is available exclusively on Windows, a respective checkbox for switching is shown in the "Compiler Settings..." dialog under the "Options" menu, a clear warning is displayed when this option is enabled to ensure users understand the implications.
- #630, #634 - IDE Help System improvements
- Added/fixed some Unicode char replacements.
- The "Update All Pages" download process now excludes the mostly static _GL command pages, i.e. 337 files less to fetch, which saves us 2-3 minutes time.
- #635 - Add Windows on ARM support, closing issue #313
- Enables full native support for QB64-PE on ARM-based devices, such as Windows devices using Qualcomm Snapdragon and macOS systems with Apple Silicon SoCs.
- Eliminates reliance on runtime emulation (e.g. the Windows Prism x86 translation layer), enabling significantly faster startup times and improved execution speed.
- The pre-compiler will set the
_ARM_
flag and the_OS$
function return contains the string "[ARM]" when using QB64-PE on the ARM architecture.- On ARM architectures, the
_FLOAT
type is not natively supported due to the absence of x86-style 80-bit x87 FPU. This may lead to compatibility issues or reduced precision. Consider usingDOUBLE
orSINGLE
for cross-platform consistency.- The VAL function previously returned values as
_FLOAT
by default. Users can now explicitly specify the target numeric type such asSINGLE
,DOUBLE
, or an integer type via the optionalnumericalType
parameter, improving type control and cross-architecture compatibility.- #641 - Adjustments to Windows set-up scripts
- Replacing
wmic
with PowerShell equivalent.- #642 - New dialog for easy logging configuration, closing issue #576
- Access the dialog via the menu "Run -> Configure logging...".
Bug Fixes
- #635 - Update libcurl to v8.14.0
- #640 - Update libxmp-lite to v4.6.2
- Also, the clip, miniz, tsf, qoa, qoi source files were updated to the latest releases.
- #615 - Fix auto-formatting of _MEMPUT AS TYPE & _MEMFILL AS TYPE
- The case of the given variable type names was not adjusted according to the active keyword formatting (UPPER/CaMeL/lower).
- #616 - Fix _MOUSEX and _MOUSEY when the mouse pointer is hidden on macOS
- This partially reverses the approach taken in #602. Using
CGAssociateMouseAndMouseCursorPosition()
was a mistake - it fixed_MOUSEMOVEMENTX
and_MOUSEMOVEMENTY
for FPS-style camera movement but broke_MOUSEX
and_MOUSEY
by preventing GLUT from triggering theglutMotionFunc
callback while the mouse pointer was hidden.- To address this, we now use
CGEventSourceSetLocalEventsSuppressionInterval()
to work around macOS’s 0.25-second event suppression. However, this means_MOUSEMOVEMENTX
and_MOUSEMOVEMENTY
remain broken because macOS generates artificial movement events whenglutWarpPointer
is used.- For now, this is an acceptable trade-off. A proper long-term fix depends on implementing #608.
- Many thanks to
NakedApe
from the QB64-PE forum for pointing out the issue. See this.- #627 - Fix IDE error when loading large source file
- The IDE would crash when a large source file was loaded and the syntax highlighter had to build the list of sub/functions on its own, due to errors in the loaded file preventing compilation from going through.
Full Changelog: v4.1.0...v4.2.0