← Back to home Release Notes

BASIC-256 v2.2.0

The continuation of the classic BASIC256 educational programming environment — modernized to Qt6, CMake, CI and multi-platform, while preserving the spirit and compatibility of the original language.

Released Sep 13, 2026 · GPL v3 or later · Windows · Linux · Raspberry Pi · macOS · Web

About this release

BASIC-256 is a simple, graphical dialect of BASIC designed for education. It lets beginners learn programming through immediate visual feedback — graphics, sound and experimentation. This repository continues the original SourceForge project (last released there as 2.0.0.11 in 2020), taking the 2.0.99.10.2 branch as its starting point with the aim of modernizing the codebase into a v2.1 focused on portability, maintainability and education.

v2.1.0 was the first stable release of that line, ending the beta series that ran through July 2026, and v2.1.1 followed as a maintenance update that roughly doubled how fast programs run. v2.2.0 is the current release, and it changes the direction of travel: where the 2.1 line brought the original BASIC-256 up to date without altering the language much, 2.2.0 begins adding to the language itself — a WINDOW statement that lets a program choose its own coordinates, matrix and vector arithmetic on ordinary arrays, a steady FRAMERATE, an OpenSimplex NOISE function and a turtle graphics module in the box. Existing programs keep working, with the one exception noted below. Full online help lives at the documentation site, reachable in-app via Help → Online help or by pressing F1 over a keyword.

Highlights of the modernized build

Qt6 + CMake

Rebuilt on Qt6 with a CMake build system and MSVS 2022 support.

Runs in the browser

A WebAssembly build brings the full editor and interpreter to the web — no install.

CI + test suite

GitHub Actions CI and an automated TestSuite guard against regressions.

Multi-platform

Windows, Linux, Raspberry Pi and macOS builds for both Apple Silicon and Intel.

New CLI options

Fullscreen, graphics-only, text-only and silent modes for kiosk-style running.

Standard library

A new math.kbs module adds helpers like clamp, lerp, remap and more.

Changelog

Summarised from the project ChangeLog. Newest first.

2.2.0
  • The first release that adds to the language. It also carries the 2.1.2 work, which was finished but never released on its own. Almost everything here is new ground rather than changed ground — with one exception, immediately below.
  • MOD is now a reserved word. a MOD b, a Mod b and a mod b are all the remainder operator, as % has always been. This is the one change that can break an existing program: anything that used mod as the name of a variable has to rename it.
  • A new WINDOW statement gives the graphics area coordinates of your own choosing. WINDOW -1,-1,1,1 puts 0,0 in the middle, and the argument order picks which way each axis runs. PIXEL, MOUSEX, MOUSEY, CLICKX and CLICKY read back in the same units, so what you draw is what you can find again. PENWIDTH and FONT stay in pixels, so lines and lettering do not stretch. WINDOW on its own goes back to plain pixels.
  • Graphics statements accept fractional coordinates. PLOT, LINE, RECT, CIRCLE, ELLIPSE, ARC, CHORD, PIE, STAMP, TEXT and IMGLOAD place what they draw where they are told instead of rounding down to the nearest whole pixel. Whole-number coordinates draw exactly as they always did.
  • Matrix and vector arithmetic on ordinary arrays. MAT ADD, MAT SUB and MAT MUL work on whole arrays at once, MAT TRN and MAT INV transpose and invert, and alongside them a DOT b, a CROSS b, NORM(v) and UNIT(v) do the arithmetic of vectors. Any array will do as a vector, and MAT ADD Position = Position + Velocity moves every particle in one statement.
  • A steady frame rate, with the new FRAMERATE statement. FRAMERATE 60 inside a drawing loop waits until the next frame is due rather than for a fixed length of time, so however long the drawing took comes out of the wait instead of being added to it — a program written on a fast computer keeps its speed on a slow one. FRAMERATE 0 takes the cap off.
  • A new NOISE function gives a smooth, repeatable value between -1 and 1 from an OpenSimplex noise field. Unlike RAND, the same coordinate always gives the same value and nearby coordinates give nearby ones, which is what suits it to terrain, clouds and wandering paths. SEED now fixes the noise field as well as the random sequence.
  • Turtle graphics, as a bundled module. INCLUDE "turtle.kbs" pulls in a turtle that draws by going forward and turning rather than by working out coordinates — t_forward, t_right, t_penup, t_home and the rest, with short forms for the six commands a drawing repeats most. Angles are in degrees clockwise from north.
  • Programs run a fifth to a quarter faster than 2.1.1, and none run slower. Arrays use about half the memory they used to, the statements that act on a whole array at once are three to five times faster, and setting up a million-element array takes a quarter of the time it did.
  • Array and map literals may be written over several lines. A table can be laid out a row to a line instead of crammed onto one very long one; blank lines between the rows are ignored, and a remark may sit inside the mustaches so the rows can be annotated as they are laid out.
  • PAUSE now waits for the time it is given, to about a millisecond, on every platform and whatever else the machine is doing. Any delay up to a day is honoured, and pressing Stop ends a program sitting in a PAUSE at once rather than when the pause runs out on its own.
  • A program is no longer limited to about 5000 lines. The old limit counted everything a program INCLUDEd as well, and crossing it stopped the program with a syntax error pointing at a line that had nothing wrong with it.
  • Windows: a running program’s graphics no longer stall for seconds at a time until the mouse is moved. Animations that end each frame with REFRESH, and programs that draw without FASTGRAPHICS, now run at a steady rate whether or not the mouse is touched.
  • SPRITEPOLY now places the polygon correctly wherever it was drawn, and leaves room for the pen. New example programs ship with the release, among them VectorProducts.kbs, MatrixParticles.kbs and turtle_demo.kbs.
2.1.1
  • A maintenance release on top of 2.1.0. The language is unchanged, so anything written for 2.1.0 runs here untouched.
  • Programs run about twice as fast. The interpreter now reuses the memory it holds values in instead of asking the system for a fresh block and handing it back for every value it creates, and it steps from one instruction to the next with less work. Measured at 1.88× overall, spread fairly evenly across integer maths, floating point, transcendental functions and variable access. Anything that loops hard — fractals, physics — gains the most, and the browser build gains most of all.
  • Browser: your program survives a refresh. A reload, a closed tab or a restarted browser no longer loses what is in the editor. Every open tab comes back with its text, its name and whichever one was in front. Saving still downloads the file exactly as before — this is a safety net, not a replacement for saving.
  • Windows 11: the menu bar titles — File, Edit, View and the rest — are drawn at the system text size, like the rest of the program, and the bar makes room for them when that size is large.
  • Help → About BASIC-256 now names the project's own website alongside the documentation site.
  • The Windows downloads no longer carry Microsoft's Visual C++ redistributable as a file of its own. It is still bundled inside the installer, which offers to install it if the system needs it.
2.1.0
  • The first stable release of the 2.1 series, the continuation of the original BASIC256 at version 2.0.0.11.
  • A new MAXIMIZE statement lets a program maximise or restore the IDE window itself.
  • Maximising the IDE no longer hands all the extra width to the Edit window, and re-docking a floated Graphics window no longer drags its floating size in with it.
  • Checkable menu items now show a check box, or a radio button where only one of a group can apply, drawn clear of the item text at the size the platform intends.
  • A new logo and a mascot, BitBot, used for the program icon on every platform, the installer, the About box and the browser loading screen.
  • New and updated example programs, including menu-driven tours of the SPRITE, SOUND and IMAGE statements.
  • The Windows installer no longer leaves a second copy of the Examples and TestSuite behind.
2.1 Beta 3
  • Project moved to Beta 3. If no blocking issues arise, this line is intended to become the official, stable v2.1.
  • Whole numbers are the full 64 bits on every platform. The bitwise shift operators (<< and >>), reading a large whole number from a string or with INPUT, and the error raised on too-large numbers now behave identically on all architectures.
  • Colour themes. The Edit and Text Output windows follow a theme chosen from View → Theme: Follow System (the default), Light, or Dark. The Graphics Output window stays white and is not themed, so existing programs draw exactly as before.
  • The About box, Help → Online help and F1 keyword help now open doc.basic256.org, which serves the same documentation site under its own name.
  • Help → Check for update now opens the GitHub releases page, where builds for every platform are published — compare the version there with the one in Help → About BASIC-256.
  • Browser: sound and speech now work on iPad and iPhone, started by the first touch anywhere on the page.
  • Browser: demos that expected a keyboard can now be driven by touch. BubbleUniverse_variations starts on a tap and cycles its variations on a tap or click, StrangeAttractors is explored by dragging and cleared with a double-tap, and AIChatbot fills the window instead of sharing it with the editor.
  • Examples: PacMan reworked — a fixed 50 frames a second, a score that carries across lives, and a narrowed playfield so the score and legend get a panel of their own. New game Claude-AI-neon_snake added.
2.1 Beta 2
  • Project moved to Beta 2 — running, with issues possibly still dormant in program and docs.
  • Relicensed from GPL v2 to GPL v3 or later. The original GPLv2 headers all carried the “or (at your option) any later version” clause, which permits the upgrade; every original copyright holder and year is preserved. The bundled md5 (RSA Data Security) and LineNumberArea (Qt example, BSD) files keep their own compatible licences.
  • Polyphonic sound corrected.
  • REF() (passing arrays to subroutines by reference) corrected.
  • New example SoundStatementDemo.kbs under Examples/Sound_Speech, demonstrating the new SOUND… statements.
  • New example ImageStatementDemo.kbs under Examples/Image, demonstrating the new IMAGE… statements.
  • An Apple macOS build for Intel is now available, requiring macOS 15 (Sequoia).
  • Edit and Output windows pinned to a light scheme so code and text stay readable on dark OS themes — superseded in Beta 3 by the selectable themes above.
2.1 Beta 1
  • Project moved to Beta state.
  • New Docusaurus documentation site replaces the old doc.basic256.org, wired to Help → Online help and F1.
  • All desktops now show File → Open Examples (previously only the WASM build).
  • Fixed small errors found during testing.
  • Runs in the browser: the Qt6 move enabled a WebAssembly build — BASIC-256 now runs from a web browser at the live demo (with a few documented caveats).
  • Fixed small errors found during testing.
  • Migrated from Qt5 to Qt6 — a major update enabling better performance on ARM-based systems like the Raspberry Pi.
  • Fixed small errors from edge-case tests in the TestSuite.
  • Added CLI option -f: with -r/-a/-g/-t, opens the program fullscreen.
  • Added CLI option -s: suppress all screen output (handy for testing or file/DB scripts).
  • Bugfix: the Windows installer no longer creates a spurious basic256 directory with Examples and TestSuite.
  • AppImage files provided for Linux-x86 and Linux-ARM, alongside the tar.gz builds.
  • CLI -g now opens the Graphics window at the size you defined (500×500 or your graphsize).
  • Bugfix: on Windows, toolbar icon labels now follow the system settings.
Project start
  • Copied the SourceForge build 2.0.99.10.2 over to GitHub.
  • Replaced qmake (*.pro) with CMake (build.yml, CMakeLists.txt).
  • Replaced MinGW with MSYS2 for Windows builds; replaced deprecated Qt operators and moved some POSIX structures to Qt.
  • First builds: macOS Silicon .app (brew), standalone tarballs for Linux-x86 and Linux-ARM (Raspberry Pi), and a standalone Windows zip.

Ready to try it?

Download for your platform, or run it instantly in your browser.