- 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.
MODis now a reserved word.a MOD b,a Mod banda mod bare all the remainder operator, as%has always been. This is the one change that can break an existing program: anything that usedmodas the name of a variable has to rename it.- A new
WINDOWstatement gives the graphics area coordinates of your own choosing.WINDOW -1,-1,1,1puts0,0in the middle, and the argument order picks which way each axis runs.PIXEL,MOUSEX,MOUSEY,CLICKXandCLICKYread back in the same units, so what you draw is what you can find again.PENWIDTHandFONTstay in pixels, so lines and lettering do not stretch.WINDOWon its own goes back to plain pixels. - Graphics statements accept fractional coordinates.
PLOT,LINE,RECT,CIRCLE,ELLIPSE,ARC,CHORD,PIE,STAMP,TEXTandIMGLOADplace 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 SUBandMAT MULwork on whole arrays at once,MAT TRNandMAT INVtranspose and invert, and alongside thema DOT b,a CROSS b,NORM(v)andUNIT(v)do the arithmetic of vectors. Any array will do as a vector, andMAT ADD Position = Position + Velocitymoves every particle in one statement. - A steady frame rate, with the new
FRAMERATEstatement.FRAMERATE 60inside 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 0takes the cap off. - A new
NOISEfunction gives a smooth, repeatable value between -1 and 1 from an OpenSimplex noise field. UnlikeRAND, 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.SEEDnow 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_homeand 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.
PAUSEnow 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 aPAUSEat 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 withoutFASTGRAPHICS, now run at a steady rate whether or not the mouse is touched. SPRITEPOLYnow places the polygon correctly wherever it was drawn, and leaves room for the pen. New example programs ship with the release, among themVectorProducts.kbs,MatrixParticles.kbsandturtle_demo.kbs.
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.
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.
- 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.
- The first stable release of the 2.1 series, the continuation of the original BASIC256 at version 2.0.0.11.
- A new
MAXIMIZEstatement 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,SOUNDandIMAGEstatements. - The Windows installer no longer leaves a second copy of the Examples and TestSuite behind.
- 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 withINPUT, 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_variationsstarts on a tap and cycles its variations on a tap or click,StrangeAttractorsis explored by dragging and cleared with a double-tap, andAIChatbotfills 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_snakeadded.
- 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.kbsunderExamples/Sound_Speech, demonstrating the newSOUND…statements. - New example
ImageStatementDemo.kbsunderExamples/Image, demonstrating the newIMAGE…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.
- 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
basic256directory with Examples and TestSuite.
- AppImage files provided for Linux-x86 and Linux-ARM, alongside the tar.gz builds.
- CLI
-gnow opens the Graphics window at the size you defined (500×500 or yourgraphsize). - Bugfix: on Windows, toolbar icon labels now follow the system settings.
- Copied the SourceForge build
2.0.99.10.2over 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.