Retro BASIC programming, native on Linux with Vulkan.
A separate Linux edition of BambooBasic — not a compatibility layer, not Wine. The same language and the same IDE, rebuilt on Vulkan, SDL2 and wxWidgets. Your program transpiles to C++ and compiles with g++ into a native 64-bit ELF binary. 2D graphics, audio, shaders, palette cycling, movies, 3D models drawn the 3D-in-2D way, desktop GUIs with a visual designer, an in-game GUI, networking, a working debugger, and an AI Assistant built into the IDE.
Please check this before downloading. It is the single most common problem.
This build needs glibc 2.38 or newer and a
libstdc++ from GCC 13 or newer. That is not a package you can
install — it is the age of the distribution itself. If yours is older, the
program will refuse to start with a message like
version `GLIBC_2.38' not found.
That is not a corrupt download and not a bug.
| Distribution | glibc | Will it run? |
|---|---|---|
| Ubuntu 24.04 LTS and newer | 2.39 | Yes |
| Ubuntu 22.04 LTS | 2.35 | No — too old |
| Debian 13 (trixie) | 2.41 | Yes |
| Debian 12 (bookworm) | 2.36 | No — too old |
| Fedora 39 and newer | 2.38 | Yes |
| Arch, CachyOS, Manjaro, EndeavourOS | current | Yes |
| RHEL / Rocky / Alma 9 | 2.34 | No — too old |
Not sure? The package ships a script that answers it for you, and tells you plainly which of the two problems you have — a missing package, or a distribution that is simply too old:
SDL2, the Vulkan loader, and an actual Vulkan driver. The loader is not a driver — with the loader installed but no driver you get "no Vulkan device", which looks like a broken program but is a missing package. The script above checks for all three separately and installs only what is missing. It understands apt, dnf, pacman and zypper, and never installs a compiler. Programs that play movies also need GStreamer and its video plugins, which most desktops already have; the script checks those too.
Ubuntu 26.04 LTS and CachyOS (installed and updated on 2026-10-03), both on real hardware with NVIDIA GPUs rather than only in a virtual machine. Other distributions are expected to work but are not tested — Debian and Arch derivatives are the most likely to be fine since they share those package sets. Fedora and openSUSE are the least: the package lists exist but have never actually been run on either.
Two builds. Pick the one for your distribution — extract it and run it, there is no installer. Both builds are version 1.2Le.
Each version's two archives hold the same transpiler, runtime,
documentation and examples. Only the IDE differs, because it links wxWidgets
3.2 — and wx 3.2 is not ABI-stable across the point releases
that different distributions ship, so the IDE from the wrong build
cannot start. If ./BambooBasic
exits immediately with
has different size in shared object,
you have the wrong one — take the other and nothing else needs changing.
Debian • Ubuntu • Mint • Pop!_OS
Version 1.2Le • 41 MB
x86-64 • glibc 2.38+ • Vulkan
By downloading, you agree to the End User
License Agreement HERE
Arch • CachyOS • EndeavourOS • Manjaro
Version 1.2Le • 40 MB
x86-64 • glibc 2.38+ • Vulkan
By downloading, you agree to the End User
License Agreement HERE
SHA-256 checksums for the archives: SHA256SUMS.txt
Three steps. None of them need root except the dependency install.
If you took the Arch build, use its file name instead
(BambooBasic-1.2Le-linux-x86_64-arch).
No installer, and nothing is written outside the folder. Delete the folder
to uninstall.
Checks first and only installs what is actually missing, so it is safe to run on a machine that is already set up. This one does install g++, because BambooBasic transpiles your program to C++ and then compiles it — see the note below.
Then open something from examples/, or a
whole game from games/Anti-Tetrafied/.
Press Build and Run.
Want it in your applications menu with an icon?
./scripts/install-desktop.sh — per-user, no
root, and --uninstall reverses it. On
Wayland this is not just cosmetic: the compositor ignores the icon an
application sets for itself and takes it from an installed
.desktop file instead, so without it the
IDE has no icon at all.
Every one of these is in the documentation. Every one of these still gets asked. Two minutes here will save you an evening.
Each dimension gets its own brackets. Commas are not it.
✗ Local grid:Int[10,10]
✓ Local grid:Int[10][10]
Not +. This one matters because + on strings does
not fail to build — it quietly does pointer arithmetic and prints
garbage.
✗ Print "Score: " + score
✓ Print "Score: " & score
BBRuntimeLinux.so is loaded at run time from the program's own
folder. Move the executable somewhere on its own and it will not start.
When you share a game, ship the .so next to it.
The IDE finds config/, bin/ and
userlibs/ relative to its own location. Copying just the
BambooBasic binary somewhere else will not work.
BambooBasic is a transpiler. Your program becomes C++ and is then compiled into a native binary, so a C++ compiler is required on the machine you are writing on. People playing your finished game do not need one.
Inside a string, ~q is a quote character — not
\". And {} is interpolation syntax:
{$name}, {%count}, {!ratio}.
Not radians. If your animation looks completely frozen, this is usually
why — a step of 0.05 per frame is a rounding error in degrees.
A Const inside a function does not produce a helpful error —
it produces a confusing one from the C++ compiler. Put them at the top of
the file.
A program using UseConsole is launched in a terminal window by
the IDE. If you run the built binary by double-clicking it from a file
manager instead, it has no terminal and input will appear to do nothing.
Please read the right-hand column before asking where something is.
.so at run time* The AI Assistant uses the Claude API, so it needs your own Anthropic API key with Claude API credits, bought separately from Anthropic. A Claude Pro or Max subscription does not cover API usage.
** New in version 1.2Le.
A 2D program usually moves across in minutes. A full 1,500-line game with images, audio, fonts and three shaders took three changes.
Import "BBRuntime64.decls" becomes
Import "BBRuntimeLinux.decls".
Vulkan consumes SPIR-V, so shaders are GLSL here, not HLSL.
Shader files are not portable between the editions even though the
shader API is identical. The documentation includes an HLSL → GLSL
translation table. Two things catch people out: use
gl_FragCoord where a Windows shader used
input.position, and
tint where it used
input.color.
sysQuitRequested() is Linux-only — there is no
Windows equivalent. Windows terminates the process from inside the event pump;
this edition lets your program exit gracefully, so code after your main loop
actually runs. Poll it in your loop. A program written against the Linux
runtime will need this removing before it builds on Windows.
In a fullscreen mode where your requested resolution does not match the screen,
Windows stretches and Linux letterboxes. Both fill the screen
when the aspect ratios agree; when they do not, Windows distorts and Linux adds
black bars and preserves your aspect ratio. Ask a monitor for its own
resolution with sysGetMonitorWidth /
Height and open fullscreen at exactly that for
a pixel-perfect 1:1 surface.
It ships with the package. It is genuinely complete.
docs/index.html from the folder you extractedEvery one of the 710 runtime functions has its own reference page, with the signature, what it returns, and the things that are easy to get wrong. The documentation was rebuilt for this edition rather than copied — the function list is generated from what the runtime actually exports, so it can never list something that is not there.
There are also 124 working examples in
examples/ covering every part of the language
and runtime, and a complete playable game with full source in
games/. If you are stuck on how something fits
together, there is almost certainly an example of it.
Copy your executable, BBRuntimeLinux.so
beside it, your assets, and
scripts/deps-runtime.sh so the player can
check their own system. Your player needs no compiler and no BambooBasic
install. See scripts/README.md for the details,
including which distributions your build will reach.
Please check the documentation and the examples first — but if it is genuinely broken, do say so.
When reporting a Linux problem, please include your distribution and version, and
the output of ./scripts/deps-runtime.sh. It answers
most of the first questions before they get asked.