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, networking and a working debugger.

Version 1.2Lc • 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.

💻 Tested on

Ubuntu 26.04 LTS and CachyOS (from the 2026-08-09 desktop ISO), 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, same contents. Pick the one for your distribution — extract it and run it, there is no installer.

⚠️ Pick the build that matches your distribution

Both 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.2Lc • 29 MB

  • BambooBasic Transpiler
  • Integrated Editor with Debugger
  • Vulkan 2D Runtime (356 functions)
  • Audio, Networking, JSON, File I/O
  • GLSL Shaders & Palette Cycling
  • Complete Documentation
  • 59 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.2Lc • 21 MB

  • BambooBasic Transpiler
  • Integrated Editor with Debugger
  • Vulkan 2D Runtime (356 functions)
  • Audio, Networking, JSON, File I/O
  • GLSL Shaders & Palette Cycling
  • Complete Documentation
  • 59 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 both 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.2Lc-linux-x86_64-debian.tar.gz $ cd BambooBasic-1.2Lc-linux-x86_64-debian

Substitute -arch for -debian if that is the build you took. 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

This is a 2D edition. 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
  • 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
  • Multi-monitor support and fullscreen that letterboxes correctly

Not in this edition

  • 3D. The Windows edition's 431 3D functions are not here. Only the window lifecycle calls share the b3d prefix. This is a future extension, not an oversight.
  • The visual GUI designer (BGI). Not ported.
  • The web / WebGPU target. Desktop only.
  • Bamboo Studio (the 3D modelling tool).
  • Movie playback and the canvas filter.
  • Anything needing the Windows API — this edition is Linux-only by design, not a port with compatibility shims.

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 356 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 59 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.