Enhancements
- #614, #615 - Audio updates and cleanup - @a740g
- 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 - @a740g
- 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 - @RhoSigma-QB64
- 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 - @a740g
- 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
_FLOATtype 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 usingDOUBLEorSINGLEfor cross-platform consistency. - The VAL function previously returned values as
_FLOATby default. Users can now explicitly specify the target numeric type such asSINGLE,DOUBLE, or an integer type via the optionalnumericalTypeparameter, improving type control and cross-architecture compatibility.
- #641 - Adjustments to Windows set-up scripts - @SteveMcNeill
- Replacing
wmicwith PowerShell equivalent.
- Replacing
- #642 - New dialog for easy logging configuration, closing issue #576 - @RhoSigma-QB64
Library Updates
- #635 - Update libcurl to v8.14.0 - @a740g
- #640 - Update libxmp-lite to v4.6.2 - @a740g
- Also, the clip, miniz, tsf, qoa, qoi source files were updated to the latest releases.
Bug Fixes
- #615 - Fix auto-formatting of _MEMPUT AS TYPE & _MEMFILL AS TYPE - @RhoSigma-QB64, @a740g
- 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 - @a740g
- This partially reverses the approach taken in #602. Using
CGAssociateMouseAndMouseCursorPosition()was a mistake - it fixed_MOUSEMOVEMENTXand_MOUSEMOVEMENTYfor FPS-style camera movement but broke_MOUSEXand_MOUSEYby preventing GLUT from triggering theglutMotionFunccallback 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_MOUSEMOVEMENTXand_MOUSEMOVEMENTYremain broken because macOS generates artificial movement events whenglutWarpPointeris used. - For now, this is an acceptable trade-off. A proper long-term fix depends on implementing #608.
- Many thanks to
NakedApefrom the QB64-PE forum for pointing out the issue. See this.
- This partially reverses the approach taken in #602. Using
- #627 - Fix IDE error when loading large source file - @FellippeHeitor
- 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
