BambooBasic for Linux

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.

Version 1.2Le • Vulkan • 64-bit • Tested on Ubuntu & CachyOS

Will It Run On My Machine?

Please check this before downloading. It is the single most common problem.

⚠️ Your distribution has to be recent enough

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.

DistributionglibcWill it run?
Ubuntu 24.04 LTS and newer2.39Yes
Ubuntu 22.04 LTS2.35No — too old
Debian 13 (trixie)2.41Yes
Debian 12 (bookworm)2.36No — too old
Fedora 39 and newer2.38Yes
Arch, CachyOS, Manjaro, EndeavourOScurrentYes
RHEL / Rocky / Alma 92.34No — 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:

$ ./scripts/deps-runtime.sh

You also need three things at runtime

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.

💻 Tested on

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.

Download

Two builds. Pick the one for your distribution — extract it and run it, there is no installer. Both builds are version 1.2Le.

⚠️ Pick the build that matches your distribution

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 family

Debian • Ubuntu • Mint • Pop!_OS

Version 1.2Le • 41 MB

  • BambooBasic Transpiler
  • Integrated Editor with Debugger
  • AI Assistant (needs your own Anthropic API key)
  • Vulkan 2D Runtime (710 functions)
  • Desktop GUIs (BGI) & the Visual GUI Designer
  • In-Game GUI (IGI) with a Code Editor
  • Movies, 3D Models & Image Quads
  • Audio, Networking, JSON, File I/O
  • GLSL Shaders & Palette Cycling
  • Complete Documentation
  • 124 Example Programs
  • A full playable game with source
Download for Debian / Ubuntu

x86-64 • glibc 2.38+ • Vulkan

By downloading, you agree to the End User
License Agreement HERE

🐧 Arch family

Arch • CachyOS • EndeavourOS • Manjaro

Version 1.2Le • 40 MB

  • BambooBasic Transpiler
  • Integrated Editor with Debugger
  • AI Assistant (needs your own Anthropic API key)
  • Vulkan 2D Runtime (710 functions)
  • Desktop GUIs (BGI) & the Visual GUI Designer
  • In-Game GUI (IGI) with a Code Editor
  • Movies, 3D Models & Image Quads
  • Audio, Networking, JSON, File I/O
  • GLSL Shaders & Palette Cycling
  • Complete Documentation
  • 124 Example Programs
  • A full playable game with source
Download for Arch / CachyOS

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

Getting Started

Three steps. None of them need root except the dependency install.

1

Extract it anywhere you like

$ tar xzf BambooBasic-1.2Le-linux-x86_64-debian.tar.gz $ cd BambooBasic-1.2Le-linux-x86_64-debian

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.

2

Install what it needs

$ ./scripts/deps-appdev.sh

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.

3

Start the IDE

$ ./BambooBasic

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.

Things People Get Wrong

Every one of these is in the documentation. Every one of these still gets asked. Two minutes here will save you an evening.

Multi-dimensional arrays

Each dimension gets its own brackets. Commas are not it.

✗ Local grid:Int[10,10]

✓ Local grid:Int[10][10]

Joining strings uses &

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

The runtime must sit beside your program

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.

Keep the BambooBasic folder together

The IDE finds config/, bin/ and userlibs/ relative to its own location. Copying just the BambooBasic binary somewhere else will not work.

You still need g++ installed

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.

Quotes and interpolation

Inside a string, ~q is a quote character — not \". And {} is interpolation syntax: {$name}, {%count}, {!ratio}.

mathSin and mathCos take degrees

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.

Const is file scope only

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.

Console programs need a terminal

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.

What's In It, And What Isn't

Please read the right-hand column before asking where something is.

Included and working

  • 2D graphics — sprites, primitives, transforms, render targets
  • Bitmap text and fonts
  • Audio (SoLoud), including 3D positional audio
  • User shaders, written in GLSL
  • Screen / post-process shaders
  • Palette cycling and indexed colour
  • Movie playback — .mp4, .mkv, .webm and more, through GStreamer
  • 3D models (.bb3d, animated ones too) drawn the 3D-in-2D way, and a GLB to .bb3d converter in the IDE
  • Image quads — stretch an image over any four corners, with depth
  • Collision, pixel access, image grab and save
  • File I/O, JSON, networking, string and maths libraries
  • Encrypted asset packs and password-protected archives
  • Userlibs — load your own C++ .so at run time
  • The IDE, with a working step debugger and breakpoints
  • The AI Assistant — Claude in the IDE, with your own API key*
  • Multi-monitor support and fullscreen that letterboxes correctly
  • Desktop GUI programs (BGI) — windows, menus, buttons, lists, trees, tabs, rich text and more, all native GTK — with the visual GUI designer in the IDE, and b2d drawing inside a GUI window**
  • The in-game GUI (IGI) — menus, HUDs, debug panels and a code editor drawn over your game, built on Dear ImGui**
  • The canvas filter**

Not in this edition

  • The web / WebGPU target. Desktop only. The Windows edition can also build your program for the browser; this one can't.
  • Anything needing the Windows API — this edition is Linux-only by design, not a port with compatibility shims.

* 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.

Coming From The Windows Version?

A 2D program usually moves across in minutes. A full 1,500-line game with images, audio, fonts and three shaders took three changes.

1. Change the import

Import "BBRuntime64.decls" becomes Import "BBRuntimeLinux.decls".

2. Convert your shaders to GLSL

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.

3. Notice the window close button

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.

One behaviour difference worth knowing

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.

The Documentation

It ships with the package. It is genuinely complete.

📚 Open docs/index.html from the folder you extracted

Every 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.

Shipping a game you have made?

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.

Stuck? Found A Bug?

Please check the documentation and the examples first — but if it is genuinely broken, do say so.

💬

Discord

The quickest place to get an answer.

Join the Discord
📝

Forums

For longer questions and showing off what you have made.

SyntaxBoom

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.