Try out the release online here: https://qbjs.org/
Release Highlights
Offline Mode
In this release QBJS will offer offline deployment as a progressive web application (PWA). This change allows you to install QBJS locally directly from the browser. A new icon will appear in the address bar which which will allow you to install the application. After the install is complete you can then run QBJS in a standalone application window. The best part of this change is that all of the content needed to run QBJS will be installed on your device. So, you will be able to use it when completely disconnected from the internet. But you'll still get the best of both worlds as it will download any updates when new releases come out.
A couple of notes:
- The install as app feature is available in most major browsers but for some reason this is not fully supported on Firefox desktop version (although it is on the Android version of Firefox)
- On iOS this can be installed by selecting the "Add to Home Screen" option.
IDE Updates
In addition to the above, this release also includes a new dialog window that will display the methods and allow you to jump to the method definition. As in QBasic and QB64 this dialog can be shown by pressing the F2 key or by clicking the icon in the toolbar. Additionally, this dialog will show the available methods of any imported library.
There have been a number of updates made in this release to improve the level of error handling and reporting. The IDE now supports compilation ERROR messages in addition to the previous WARN level messages. If ERROR level compilation issues are encountered they will prevent the program from running.
Finally, for any VIM fans out there you can now select a VIM key binding to use the editor in VIM mode.
Language/Compatibility Enhancements
There are a large number of updates intended to improve compatibility with QBasic/QB64. One of the most significant was the change to use Javascript bitwise operators in compiled programs instead of boolean ones for AND, OR, and NOT keywords. There are also a number of updates to improve the default font compatibility with the code page 437 character set and international characters. This release also includes support for PLAY and the SCREEN function.
Release Notes
IDE Updates
- Add PWA Support (#112)
- Add support for dialog to show and jump to methods (F2) (#106)
- Add ERROR in addition to WARN for reported compiler issues. Prevent execution when ERRORs are reported. (#110)
- Added numerous runtime assertions for better error reporting.
- Add support for vim key bindings (#121)
- Updated open project logic to determine if the zip file has a single folder and if so to treat it as the root
- Update to correctly stop sound from playing when runtime is stopped
Language/Compatibility Enhancements
- Updated to make mousewheel events cumulative
- Added support for Screen function (#115)
- Fix for font and text screen width calculations
- Add support for Play (#62)
- Implemented pixelated scaling for fullscreen unless _SMOOTH parameter is specified
- Fixed parsing error preventing Exit from correctly exiting loop when nested inside Select Case (#109)
- Handle JS reserved words (#120)
- SOUND duration should be interpreted in units of TIMER ticks 1/18th of a second, instead of milliseconds (#119)
- Support for international characters and UTF8 (#114)
- Updated default font to use standard UTF code mappings. Added a character map to translate codes in Asc and Chr$ methods for backwards compatibility.
- Fixed default font character mapping
- Switch to Bitwise operators (And, Or, Not) (#113)
- Support hex prefix (&H) on values in DATA (#106)
- Updated to explicitly set method parameter types
- Updates to correctly identify "Unsigned" parameter types
- Export fix to prevent registering built-in functions.
- Fixed typo in Asc method implementation
- Fixes for Val NaN detection
- Added _SMOOTH option for PutImage method
- Fixed issue with export causing collisions between multiple imported libraries
- Updated GX constants to use -1, 0 instead of actual boolean values
- GX updates - animated tile and map resize support
Experimental
- Updates to support nodejs-based command line compiling
- Added support for gzip compressed code parameter