Skip to content

Go + bb!

Gobb is a Go-native implementation of the Babashka experience, powered by Gloat and the full Glojure runtime—without SCI, GraalVM, or a JVM.

Gobb project artwork
It's not a trick, it's an illusion.
Current phase: Foundation and architecture Implementation has just begun.

One runtime, two ways to ship

Gobb is designed to preserve the fast, practical scripting workflows that make BB useful while adding native compilation as a first-class operation.

01

Run Clojure directly

Evaluate expressions, scripts, stdin, namespaces, tasks, and project dependencies through the full Glojure runtime.

gobb script.clj one two three
02

Build native programs

Turn the same program into a native executable or WebAssembly artifact through Gloat and the Go toolchain.

gobb build script.clj -o app
03

Meet Java code in Go

Grow compatibility with Java-dependent Clojure libraries through reusable gojava shims and Go-backed host adapters.

(Math/sqrt 144) ; => 12.0

The intended pipeline

flowchart LR
    SRC["BB / Clojure source"] --> GOBB["Gobb"]
    GOBB --> RUN["Glojure runtime"]
    GOBB --> BUILD["Gloat build"]
    BUILD --> GO["Generated Go"]
    GO --> TARGET["Native or Wasm"]

Glojure provides reading, evaluation, namespaces, Vars, dynamic bindings, and Clojure semantics. Gobb adds BB-compatible command behavior, tasks, dependencies, bundled features, platform policy, and packaging.

Compatibility is measured, not implied

The project will track BB behavior feature by feature and test Gobb against a pinned BB executable. Platform differences are explicit: when a host cannot provide an operation, Gobb returns a stable capability error instead of a missing symbol or an obscure host failure.

Project status

The architecture and roadmap are defined.

Runtime execution, compatibility work, and cross-platform artifacts are the next engineering milestones.

View current progress →