Skip to content

Releases: AtomiJD/jdBasic

jdBasic 1.0

Choose a tag to compare

@AtomiJD AtomiJD released this 22 Jun 13:14

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 FUNC and SUB. 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"} ?? 8080 keeps a port of 0, where ORELSE would 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
    SLEEP waits against a deadline rather than counting slices, so it no
    longer drifts.
  • Reference docs caught up again. help.txt gained twenty-six
    entries, doc/languages.md a 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

Choose a tag to compare

@AtomiJD AtomiJD released this 01 May 15:27

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 FUNC definitions 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_recompile let an
    agent freeze a running script, inspect or mutate its state with jdb_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" before jdb_eval ever runs it.
  • jdb_run_native - compiles a .jdb to 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.md ships alongside the EXE so jdb_doc works
    out of the box.
    sha256 DAD368458543E6ECE57EA8CDCFE34F24B8594A6B5C8C0B0773065EE3E1D92217
  • jdbasic-mcp-native-windows-x64.zip (~34.5 MB) - Core plus the LLVM-18
    backend for jdb_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.
    sha256 E9E093A10E23EFF87CFD999FD51BC8D2C21D06FFCD251CCB6B148699E715331C
  • jdbasic-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.*).
    sha256 DCAA8E3FD1E1625B648B74A8301BB04C6DD5D59DE55F589F4C0840937BDBAEEA
  • jdbasic-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.
    sha256 A0E138DE57D9880C45D8DDC4843BE358290E23F05B88433353B6B8C5B0609EA5

Setup: see doc/MCP.md for client configs.

Release candidate 1.0.0

Pre-release

Choose a tag to compare

@AtomiJD AtomiJD released this 27 Feb 08:49

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
RUN

If you want to code in vs code take a look at:
https://github.com/AtomiJD/jdBasic/blob/development/vscode_extension/vscode_readme.md