Releases: AtomiJD/jdBasic
Release list
jdBasic 1.0
jdBasic 1.0 - a modern BASIC built on a bytecode VM, with APL-style array
programming, native compilation, SDL3 graphics, a game layer, a local AI stack,
and a built-in MCP server that lets any AI agent drive a persistent VM:
run code, compile it to a standalone EXE, and even pause a running program to
live-tweak it and resume.
New here? Try it in the browser first (no download): https://jdbasic.org/live/index.html
Learn it: the Train jdBasic video series - https://www.youtube.com/playlist?list=PLowaSH4O3MGq-veO7qSIp-9EntEjY_iPZ
Downloads (Windows x64, Build 82; VB6 Pack Build 84)
New in Build 82 - four pieces of syntax that shorten the same three
lines everybody writes:
- Optional parameters with defaults, for
FUNCandSUB. Builtins
have taken optional arguments all along; now so do the functions you
write.FUNC Greet(name$, greeting$ = "Hello")and the caller may
leave the tail off. A wrong count names the range it wanted. ??gives the left side unless it is absent. Not falsy, absent:
m{"port"} ?? 8080keeps a port of 0, whereORELSEwould replace it.
The long-hand test everyone writes,x = NONE, is a documented trap
because it is true for values that are not NONE at all.?.?{?[read into something that may not be there. A missing
key already reads as NONE; it is the next step that fails, and this
stops the chain instead:
reply?{"choices"}?[0]?{"message"}?{"content"} ?? "no answer".$"..."puts expressions inside a string:
$"Hallo {{name$}}, du hast {{n}} Nachrichten". Double braces, because
single ones are what JSON is made of, and it is a concatenation at
parse time so it compiles as well as it interprets.
Also in this build:
DIR$of a directory lists that directory. It used to split the
name at its last slash, look for a file of that name in the parent,
find nothing, and answer with an empty list - which reads as "the
directory is empty" rather than "you meant something else". Fixed on
Windows and POSIX alike, so both give the same answer.- Native compiler: a call with the wrong number of arguments is a
compile error naming the line and the range, instead of an LLVM IR
verification failure naming a mangled function. - Faster: builtins carry their own arity instead of wearing a
wrapper, reductions walk their input instead of copying it, and
SLEEPwaits against a deadline rather than counting slices, so it no
longer drifts. - Reference docs caught up again.
help.txtgained twenty-six
entries,doc/languages.mda chapter for the microcontroller ports.
Also new, though not in these bundles: jdBasic runs on
microcontrollers. embedded/ holds an RP2350 build (a PicoCalc) and an
ESP32-S3 one that runs on a 2.8 inch display board: it boots into its own
prompt on the panel, with touch, sound, a microphone, an SD slot and the
same editor the desktop has. Full frames at 31 a second, and a game that
redraws only what moved is not waiting on the panel.
Every bundle ships the app-local Visual C++ runtime, so it runs on a clean
Windows with no redistributable installed. Each also ships the full help.txt
reference (HELP in the REPL), doc/languages.md, and THIRD_PARTY_LICENSES.txt.
| Bundle | Size | What you get |
|---|---|---|
jdbasic-core-windows-x64.zip |
~4.0 MB | Interpreter + MCP server, no LLVM. Smallest footprint. |
jdbasic-mcp-native-windows-x64.zip |
~34.5 MB | Core plus the LLVM native-compile toolchain for jdbasic -c (standalone EXEs). |
jdbasic-vibe-game-pack-windows-x64.zip |
~8.7 MB | GFX/ImGui build with ready-to-run game demos, launchers, and an AI pair-coding quickstart. Embedded SQLite (SQL.*) for highscores and save state, plus WAV I/O and the effects chain (WAV.*, FX.*). |
jdbasic-vb6-windows-x64.zip |
~8.7 MB | VB6 Pack: native Win32 forms (FORM.*), COM automation (Excel/Word/Outlook via CREATEOBJECT), embedded SQLite (SQL.*), plus GFX/ImGui/HTTP and the MCP server. Ships forms demos incl. .jdform layouts from the VS Code visual designer. |
SHA256
jdbasic-core-windows-x64.zip DAD368458543E6ECE57EA8CDCFE34F24B8594A6B5C8C0B0773065EE3E1D92217
jdbasic-mcp-native-windows-x64.zip E9E093A10E23EFF87CFD999FD51BC8D2C21D06FFCD251CCB6B148699E715331C
jdbasic-vibe-game-pack-windows-x64.zip DCAA8E3FD1E1625B648B74A8301BB04C6DD5D59DE55F589F4C0840937BDBAEEA
jdbasic-vb6-windows-x64.zip A0E138DE57D9880C45D8DDC4843BE358290E23F05B88433353B6B8C5B0609EA5
Verify with PowerShell: Get-FileHash -Algorithm SHA256 <file>.zip.
First run on Windows. The binaries are Authenticode-signed (certificate:
Open Source Developer Achim Christ). Because the signature is new, Microsoft
Defender SmartScreen may show a "Windows protected your PC - unrecognised app"
notice the first time you start jdBasic.exe. This is a reputation prompt,
not a malware detection - the signed publisher is shown right in the dialog.
Click "More info" if the button is hidden, then "Run anyway". To skip it
entirely, right-click the downloaded .zip before extracting, choose
Properties, tick Unblock, and click OK - then no extracted file carries the
"downloaded from the internet" mark.
Use it as an MCP server
{
"mcpServers": {
"jdbasic": { "command": "C:\\path\\to\\jdBasic.exe", "args": ["--mcp"] }
}
}Full client config and the tool reference are in doc/MCP.md, which also ships inside every bundle.
Language reference: doc/languages.md - Source and issues: https://github.com/AtomiJD/jdBasic
jdBasic now speaks MCP — persistent VM for any AI agent
jdBasic doubles as a Model Context Protocol server - every MCP-aware client
(Claude Desktop, Claude Code, Cursor, Cline, Continue, Zed, Windsurf,
ChatGPT Desktop) can drive jdBasic's persistent VM directly: run code,
compile it to a standalone Windows EXE, and even pause a running program to
live-tweak it and resume.
What's new
jdBasic.exe --mcp(stdio) and--mcp-http 7321(HTTP) transports.- 14 tools:
jdb_eval,jdb_check,jdb_doc,jdb_vars,jdb_funcs,
jdb_load,jdb_loadws,jdb_savews,jdb_run_native,jdb_recompile,
jdb_stop,jdb_resume,jdb_status,echo. - Persistent VM - variables and
FUNCdefinitions survive across tool
calls within one session. Most code-execution MCP servers fork a fresh
process per call; this one doesn't. - Live pair-coding -
jdb_stop/jdb_resume/jdb_recompilelet an
agent freeze a running script, inspect or mutate its state withjdb_eval,
swap in new code, and resume, without restarting the program. jdb_doc- substring lookup against the bundled language reference.
Catches "model invented a builtin name" beforejdb_evalever runs it.jdb_run_native- compiles a.jdbto a standalone Windows EXE via the
embedded LLVM-18 backend. A small binary plus a runtime DLL, droppable on a
USB stick, no setup on the target machine.
Assets (Build 82; VB6 Pack Build 84)
jdbasic-core-windows-x64.zip(~4.0 MB) - interpreter + MCP server, no LLVM
dependency.doc/languages.mdships alongside the EXE sojdb_docworks
out of the box.
sha256DAD368458543E6ECE57EA8CDCFE34F24B8594A6B5C8C0B0773065EE3E1D92217jdbasic-mcp-native-windows-x64.zip(~34.5 MB) - Core plus the LLVM-18
backend forjdb_run_native. The bundle ships LLVM, but the final link
shells out to your local MSVC: install Visual Studio 2022 17.10+ (Community
is fine) with the "Desktop development with C++" workload.
sha256E9E093A10E23EFF87CFD999FD51BC8D2C21D06FFCD251CCB6B148699E715331Cjdbasic-vibe-game-pack-windows-x64.zip(~8.7 MB) - GFX/ImGui build with
ready-to-run games (Pac-clone, vector shooter, empty canvas), launchers and
a Claude-Code pair-coding quickstart. Embedded SQLite (SQL.*) for
highscores and save state, plus WAV I/O and the effects chain
(WAV.*,FX.*).
sha256DCAA8E3FD1E1625B648B74A8301BB04C6DD5D59DE55F589F4C0840937BDBAEEAjdbasic-vb6-windows-x64.zip(~8.7 MB) - VB6 Pack: native Win32 forms
(FORM.*), COM automation (CREATEOBJECT), embedded SQLite (SQL.*),
plus GFX/ImGui/HTTP and the MCP server. Ships forms demos incl..jdform
layouts from the VS Code visual designer.
sha256A0E138DE57D9880C45D8DDC4843BE358290E23F05B88433353B6B8C5B0609EA5
Setup: see doc/MCP.md for client configs.
Release candidate 1.0.0
Getting Started
Read the language reference:
https://github.com/AtomiJD/jdBasic/blob/development/doc/languages.md
Read the manual:
https://github.com/AtomiJD/jdBasic/blob/development/doc/manual.md
Get the latest release at: https://github.com/AtomiJD/jdBasic/releases/tag/jdbasic
Download: jdBasic_Release_1_0_0.zip
Extract it wherever you want.
Open a command window and change your directory to the "jdb" folder.
To run jdBasic, simply type in your command line:
..\bin\jdBasic Then load and run a program:
LOAD TEST
RUNIf you want to code in vs code take a look at:
https://github.com/AtomiJD/jdBasic/blob/development/vscode_extension/vscode_readme.md