Skip to content

Release Notes Draft ‐ v0.10.0

boxgaming edited this page Aug 14, 2025 · 10 revisions

Try out the release online here: https://boxgaming.github.io/qbjs/

Release Highlights

Language/Compatibility Enhancements

This release contains a number of important language support updates which should greatly enhance the compatibility of QBJS with QBasic/QB64.

Implicit Variable Declaration

One of the most significant updates included in this release is support for implicit variable declaration. It is no longer necessary to make sure that you DIM all of your variables in QBJS. This enhancement also includes support for the QB64 Option _Explicit and Option _ExplicitArray directives.

Integer Division Operator

This release also now includes full support for the integer division (\) operator. In previous releases integer division was treated identically to a normal division operator (/) and did not perform the expected rounding.

More Keywords

Support has been added for QBasic Mid$ statement as well as the QB64 Clipboard methods:

  • _Clipboard (statement)
  • _Clipboard (function)
  • _ClipboardImage (statement)
  • _ClipboardImage (function)

Numerous other compatibility enhancements and fixes can be found in the full release notes below.

New Language Features

This release adds support for Method Pointers which provide the ability to define Functions and Subs as variable types. Pointers to existing subs or functions can be referenced with the new '@' operator. Also included is a new standard String library containing commonly used string operations (e.g. Replace, Split) as well as advanced regular expression matching.

IDE Updates

The QBJS IDE has also received a major refresh with this update. A "New Project" button has been added to the toolbar to allow convenient creation of a new, blank project when one is already open.

Code tabs have been added to make it easier to manage larger projects with multiple resources in the QBJS IDE. Users can now open additional files from the virtual file system for edit in separate code tabs. This includes syntax highlighting for a number of known text file formats: Code Tabs All other text files will be loaded in a plain text editor as shown below: Code Tabs Image formats will be loaded in an image preview tab: Code Tabs Sound file formats will be loaded in an audio preview tab: Code Tabs All other binary files will be loaded in a hex viewer tab.

New Theme

A new theme named Blackout has been added for those who like a very dark look but retains the same font and feel as the original QBasic IDE. Blackout Theme

Javascript Tab Syntax Highlighting

Syntax highlighting has been enabled for the Javascript tab in the console to aid in readability of the generated Javascript for troubleshooting:
Javascript Syntax Highlighting

Release Notes

Language/Compatiblility Updates

  • Support for implicit variable declaration (#57, #33, #151)
    • Support for Option _Explicit and Option _ExplicitArray
    • Fixes for method-level SHARED variable declarations.
  • Variables declared in the main module are effectively "Shared" whether they are defined as such or not. (#158)
  • Added support for method-level CONSTs
  • Full support for integer divison (\) operator (#147)
  • Implement Mid$ statement
  • Implement QB64 Clipboard functions (#76)
    • Implements _Clipboard$ (statement and function)
    • Implements _ClipboardImage (statement and function)
  • Update InKey$ to fill key press buffer when key is held down (#65)
    • Fixed InKey mapping for space and escape.
  • PRINT - Trailing space not being printed for numeric variables (#84)
  • Fixed error loading standard web fonts (#152)
  • Removed compiler warning for $NoPrefix since keyword prefixes are optional
  • Fix erroneous block end error messages when used in combination with "$If Javascript"
  • Add compiler error for unterminated string constants
  • Allow "ENDIF" as well as "END IF"
  • Allow "$ENDIF" as well as "$END IF"
  • Allow "?" to be used as shorthand for PRINT

New Language Features

  • Added support for Function and Sub as variable types (#156)
    • Added support for method reference prefix "@" and Function and Sub as types
  • Add extended standard library for common String operations (#157)

IDE Updates

  • Added 'New' button to IDE
  • Added code tabs to enable editing/preview of files in VFS (#132)
  • Added syntax highlighting to Javascript tab (#145, #148)
  • Added new "Blackout" theme
  • Set focus to editor when clicking an error or warning in console (#142)
  • Updated methods dialog in IDE to distinguish array parameters in method descriptions
  • Added module info to error/warning data to support showing errors in appropriate source file
  • Updates to disable code editor(s) while program is executing
  • Stops previous program at load
  • Stops program before creating new project
  • Added console settings persistence IDE

GX Fixes and Updates

  • Added missing GX methods: GXEntitySequence, GXEntitySequences
  • Collision detection fixes
  • Fixes to GXMapLoad for legacy web map format

Clone this wiki locally