Release 0.11.0 #201
boxgaming
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Try out the release online here: https://qbjs.org
Release Highlights
New Language Features
Import
This release includes a major update to Import functionality. The Import keyword provides the ability to include library modules from external source files. Prior to this release, Import statements could only be used in the main program. With this release that restriction has been removed and Import statements can appear in nested imported modules. The same library can now be imported multiple times. Support for relative import paths has also been included as part of the update.
Standard Library Additions
This release contains a significant number of additions to the standard QBJS extension libraries. Three new libraries: Array Utilities, Object Utilities, and the System Library, have been added to provide greater access to lower-level Javascript functionality using QBasic syntax. The Dom library has been greatly expanded to provide more event handling and process control.
lib/io/fs.baslib/lang/array.baslib/lang/object.baslib/lang/string.baslib/lang/system.baslib/test/unit-test.baslib/web/dom.basUnit Test Framework
A new Unit Test library provides basic functionality to create unit tests using the simple assertion methods. A suite of unit tests has been developed using this library to regression test QBJS itself. The tests can be found in the project test directory. With each subsequent release more tests will be added to this suite to expand the test coverage.
Language/Compatibility Enhancements
This release contains a number of important language support updates to further enhance the compatibility of QBJS with QBasic and QB64.
QB64PE Compatibility
For the first time, this release includes support for QB64PE-specific functionality. For some context, the QBJS project began during the period in which there was a single QB64 fork maintained by the QB64 Team. Since that time the QB64 Team was dissolved and new, separate forks were created to carry on QB64 maintenance and development. The goals of QBJS are to maintain compatibility with this core, QB64 functionality which is common between each of the descendants of the original QB64 project. Of the current forks, the QB64 Phoenix Edition has emerged as the only known fork with ongoing, active development. While full compatibility with descendent forks is not a stated goal of the QBJS project, for certain compelling use cases, keywords compatible with Phoenix Edition may be added.
This release now supports the following features which are present in the QB64PE fork:
Finally, a number of additional QB64PE-specific keywords can be supported via an optional include file. To enable this support, add the following line to the top of your program:
Once included, the following additional methods will be available:
_FULLPATH$, _IIF, _INPUTBOX$, _LOGERROR, _LOGINFO, _LOGMINLEVEL, _LOGTRACE, _LOGWARN,
_MAX, _MESSAGEBOX (statement), _MESSAGEBOX (function), _MIN, _MOUSEHIDDEN,
_NOTIFYPOPUP, _READFILE$, _SAVEIMAGE, _TOSTR$, _WRITEFILE
Including this file will also make available additional QB64PE-specific constants.
Numerous other compatibility enhancements and fixes can be found in the full release notes below.
Release Notes
Language/Compatibility Updates
dimstatement with arrays are not evaluated correctly #179 - Arithmetic expressions in a dim statement with arrays are not evaluated correctly_BASE64ENCODE$, _BASE64DECODE$, _CLAMP, _ColorChooserDialog, _DECODEURL$, _ENCODEURL$, _FULLPATH$, _IIF, _INPUTBOX$, _LOGERROR, _LOGINFO, _LOGMINLEVEL, _LOGTRACE, _LOGWARN, _MAX, _MESSAGEBOX (statement), _MESSAGEBOX (function), _MIN, _MOUSEHIDDEN, _NOTIFYPOPUP, _READFILE$, _SAVEIMAGE, _TOSTR$, _UFONTHEIGHT, _UPRINTWIDTH, _WRITEFILE
New Language Features
IDE Updates
General Fixes
This discussion was created from the release Release 0.11.0.
All reactions