QB64 is een moderne versie van de programmeertaal Basic. De code wordt gecompileerd naar machinetaal en is daardoor snel en er kan 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.7.0 is uitgekomen en de changelog daarvan kan hieronder worden gevonden.
v4.7.0-GLFWThis release replaces the legacy FreeGLUT/GLEW backend with GLFW and GLAD. We encourage users to test window management, input handling, fullscreen behavior, high-DPI displays, OpenGL applications, and multi-monitor configurations and report any regressions.
EnhancementsLibrary Updates
- #701 - Replace freeglut with GLFW 3.5.1 and GLAD - a major architectural modernization of the graphics, windowing, timing, and input subsystems.
- New
_DESKTOPREFRESHRATEfunction - returns the vertical refresh rate (Hz) of the monitor currently displaying the application window.- New
_WINDOWSIZELIMITstatement - restricts the user-resizable dimensions of the window to minimum and/or maximum width/height bounds.- New
_MOUSECURSORstatement - sets a custom hardware mouse cursor from a QB64-PE image handle.- New
_UPTIMEfunction - returns application uptime as a high-resolution, monotonic double-precision floating-point number in seconds.- New
_MOUSEDISABLEDfunction - returns_TRUEif the mouse cursor is in disabled/raw motion capture mode (_MOUSEHIDE _DISABLE)._WINDOWHANDLEextended with optionalhandleType&argument to query native OS/graphics handles (HWND/HDC/HGLRC on Windows, NSWindow*/NSView*/NSOpenGLContext* on macOS, Window/HDC/Display*/GLXContext on Linux X11)._MOUSEHIDEnow accepts optional_DISABLEparameter - locks the mouse cursor in raw input mode for unlimited delta motion (FPS-style camera controls and 3D navigation) without cursor hitting display edges. Works on Windows, Linux and macOS._MOUSEWHEELextended with optionalaxis¶meter to support horizontal and multi-axis scrolling.- Sub-pixel precision for mouse and joystick coordinates -
_MOUSEX,_MOUSEY,_MOUSEMOVEMENTX,_MOUSEMOVEMENTY,_MOUSEMOVE,_AXIS,_WHEELnow returnDOUBLEfor sub-pixel precision and better high-DPI display support.- Window focus and mouse enter/leave handling to fix input state on focus loss.
- File drag and drop handling now works on Windows, Linux and macOS.
- #760 - Add #line to generated C++ source for debugging - enables GDB/Lldb to map back to original QB64 source lines, with a new Compile Settings option for relative or absolute debug paths.
- #767, #771, #772 - Add 32-bit cross-compilation support - use
-f:TargetBits=[32|64]on the command line to change the target bitness. The bootstrap compiler is now built as 64-bit only; 32-bit QB64-PE versions are produced via cross-compilation. qbs* array elements stored in pointer-sized slots on each platform.- #776 - New
_ARRAYCOPYstatement for copying elements between arrays.
- Supports one-dimensional and multi-dimensional arrays.
- Four copy forms: whole-to-whole, range-to-indexed, range-to-whole (preserving source indices), and whole-to-indexed.
- Supports byte-aligned numeric types, fixed-length strings (
STRING * n), and variable-lengthSTRINGarrays.- Bounds validated before writing; overlapping copies handled safely; ownership-aware snapshot/deep-copy logic for variable-length
STRINGarrays.- #761 - New
QB64PE_NOPROMPTenvironment variable to suppress interactive error prompts on unhandled runtime errors.
QB64PE_NOPROMPT=yorQB64PE_NOPROMPT=Continue- outputs the error text and proceeds without waiting for user input.- #778 - Significant performance improvements to QB64-PE C++ source generation (
-z).
Generation times measured on QB64-PE itself and the DRAW project:
Program Before After QB64-PE 41s 8.9s DRAW 5m 59s 43s Bug Fixes
- Update to GLFW 3.5.1 - replaces the legacy FreeGLUT and GLEW libraries.
- Update to GLAD - modern OpenGL loader replacing GLEW.
- #756 - Fix console
- #758 - Fix whole-array assignment (=) for all array types, including nested arrays. Previously only the zero index was copied.
- #759 - Fix
_CAPLOCK,_NUMLOCKand_SCROLLLOCKnot working on all platforms.- #762 - Fix invisible
_SCREENMOVEand_WINDOWSIZELIMITonSCREEN0 - hidden-window positioning added;_WINDOWSIZELIMITnow correctly interprets limits in cells forSCREEN0. Closes #271.- #765 - Various keyboard and mouse input fixes
- #769 - Fix compilation issue with UDT arrays and unary
NOTexponent precedence (issue #23).- #766 - Repair comma-separated array parameter declarations in sub/function arguments (e.g.,
Sub bar (baz( ,) As Long)).
/i/2007146686.png?f=imagenormal)