Software-update: QB64 Phoenix Edition 4.2.0
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 een goede support forum. Versie 4.2.0 is uitgekomen en de changelog daarvan kan hieronder worden gevonden.
Enhancements#614, #615 - Audio updates and cleanupAdds 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 WindowsAdds 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 improvementsAdded/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 #313Enables 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 using DOUBLE or SINGLE for cross-platform consistency.The VAL function previously returned values as _FLOAT by default. Users can now explicitly specify the target numeric type such as SINGLE, DOUBLE, or an integer type via the optional numericalType parameter, improving type control and cross-architecture compatibility.#641 - Adjustments to Windows set-up scriptsReplacing wmic with PowerShell equivalent.#642 - New dialog for easy logging configuration, closing issue #576Access the dialog via the menu "Run -> Configure logging...".
#614, #615 - Audio updates and cleanupAdds sample rate support to _SNDNEW.Moves all information, warning, and trace logs to use our new logging features.Adds sample rate support to _SNDNEW.Moves all information, warning, and trace logs to use our new logging features.
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 WindowsAdds 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.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.
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 improvementsAdded/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.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.
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 #313Enables 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 using DOUBLE or SINGLE for cross-platform consistency.The VAL function previously returned values as _FLOAT by default. Users can now explicitly specify the target numeric type such as SINGLE, DOUBLE, or an integer type via the optional numericalType parameter, improving type control and cross-architecture compatibility.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 using DOUBLE or SINGLE for cross-platform consistency.The VAL function previously returned values as _FLOAT by default. Users can now explicitly specify the target numeric type such as SINGLE, DOUBLE, or an integer type via the optional numericalType parameter, improving type control and cross-architecture compatibility.
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 using DOUBLE or SINGLE for cross-platform consistency.The VAL function previously returned values as _FLOAT by default. Users can now explicitly specify the target numeric type such as SINGLE, DOUBLE, or an integer type via the optional numericalType parameter, improving type control and cross-architecture compatibility.#641 - Adjustments to Windows set-up scriptsReplacing wmic with PowerShell equivalent.Replacing wmic with PowerShell equivalent.
Replacing wmic with PowerShell equivalent.#642 - New dialog for easy logging configuration, closing issue #576Access the dialog via the menu "Run -> Configure logging...".Access the dialog via the menu "Run -> Configure logging...".
Access the dialog via the menu "Run -> Configure logging...".Library Updates#635 - Update libcurl to v8.14.0#640 - Update libxmp-lite to v4.6.2Also, the clip, miniz, tsf, qoa, qoi source files were updated to the latest releases.
#635 - Update libcurl to v8.14.0#640 - Update libxmp-lite to v4.6.2Also, the clip, miniz, tsf, qoa, qoi source files were updated to the latest releases.Also, the clip, miniz, tsf, qoa, qoi source files were updated to the latest releases.
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 TYPEThe 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 macOSThis 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 the glutMotionFunc 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 when glutWarpPointer 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 fileThe 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.
#615 - Fix auto-formatting of _MEMPUT AS TYPE & _MEMFILL AS TYPEThe case of the given variable type names was not adjusted according to the active keyword formatting (UPPER/CaMeL/lower).The case of the given variable type names was not adjusted according to the active keyword formatting (UPPER/CaMeL/lower).
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 macOSThis 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 the glutMotionFunc 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 when glutWarpPointer 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.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 the glutMotionFunc 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 when glutWarpPointer 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.
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 the glutMotionFunc 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 when glutWarpPointer 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 fileThe 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.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.
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
Source:
Tweakers.net