Skip to content

Roadmap

Current phase

Native execution

Completed milestones

1 / 14

Last updated

July 24, 2026

The first native Gobb executable is now working. It evaluates expressions, files, and stdin through Glojure and is compiled to a native binary by Gloat. This is an architecture proof, not yet a general BB replacement.

Completed foundation

0
Complete

Repository foundation and Makes automation

Establish reproducible Makes-managed tooling, cleanup, website commands, and the initial project structure.

  • Architecture and complete roadmap written
  • Initial MkDocs website created
  • make serve and make publish wired
  • gobb.site custom domain configured
  • Branded social cards generated from the hero artwork
  • Clean Make-managed tool provisioning validated
  • Runtime build and test targets added
  • Install, cross-platform release, and final website publication automated

Current work

2
In progress

Prove the execution architecture

Expand the working native executable into the complete execution proof, including runtime namespace loading and the first Wasm artifact.

  • make build produces bin/gobb
  • gobb -e EXPR [ARGS...]
  • gobb FILE [ARGS...]
  • Source evaluation from stdin
  • Definitions persist across multiple forms
  • Useful CLI errors and nonzero exit status
  • Focused differential tests against BB
  • Runtime require and classpath loading
  • WASI and browser-Wasm smoke artifacts
1
Started

Compatibility ledger and test inventory

Inventory BB's CLI, configuration, bundled namespaces, Java classes, platforms, and tests. The source namespace portion now exists; the broader user-visible compatibility inventory remains.

Babashka source integration

Gobb builds against Babashka source without vendoring it and without adding Git submodules to this repository.

  • The default build downloads Babashka v1.12.218 at commit 0fb349c414e717800be775ba9cb77c95a9eb700d into the ignored Makes cache.
  • BABASHKA_DIR=/path/to/babashka selects a development checkout instead.
  • Babashka's own submodules will be initialized individually only when a selected capability needs one.
  • A generated source staging tree gives each namespace exactly one provider and rejects duplicates or missing selected files.
  • The machine-readable source ledger currently discovers all 67 core Babashka namespaces: 1 is compiled unchanged from upstream and 66 are deferred pending compatibility work.
  • The upstream proof namespace is babashka.impl.exceptions; the executable entry point is the Gobb-owned gobb.cli.

The build interface is now:

make deps           # Download and verify pinned Babashka source
make build          # Build bin/gobb with Gloat
make test           # Run native and differential BB tests
make source-ledger  # Print the generated namespace ledger

make clean removes generated source and the Gobb binary. make realclean also removes the downloaded Babashka source checkout.

Known gaps

  • Most Babashka implementation namespaces still depend on SCI, JVM classes, GraalVM substitutions, or libraries that have not been ported.
  • Runtime require, project classpaths, bb.edn, and deps.edn are not supported yet.
  • Tasks, subprocesses, filesystem compatibility, networking, pods, and REPL services remain unimplemented.
  • Native builds are verified; Wasm builds have not yet been attempted.
  • The current source reader wraps input in one do form. Shebang handling and exact BB reader edge cases remain for a later CLI-compatibility pass.

Next concrete slice

Add runtime require and ordered classpath loading to the native executable, extend the differential harness for namespace loading, then compile the same smoke program to WASI.

Planned milestones

03

Differential BB harness

Compare BB and Gobb output, errors, exit status, and side effects.

04

Glojure-native BB shell

Replace SCI's host responsibilities with Glojure-native execution.

05

Platform capabilities

Define consistent native, WASI, and browser-Wasm host behavior.

06

Java compatibility

Expand gojava and Glojure support based on BB and library demand.

07

Projects and dependencies

Support bb.edn, deps.edn, Git, Maven source, and resources.

08

Tasks and commands

Port BB tasks, exec functions, process pipelines, and aliases.

09

Batteries included

Bring over BB's bundled libraries in tested dependency-shaped waves.

10

Interactive services

Add terminal REPL, nREPL, socket REPL, pods, and servers.

11

Production build command

Finalize deterministic native and Wasm builds through Gloat.

12

Website and live Gobb

Keep compatibility reports current and add a browser-Wasm playground.

13

Compatibility closure

Close remaining BB gaps, establish performance baselines, and release.

What counts as full Gobb?

A release can claim full Gobb status when:

  • applicable user-visible BB tests pass or have documented waivers;
  • every BB-exposed Java class has a compatibility disposition;
  • tasks, dependencies, pods, REPLs, bundled libraries, and build mode have end-to-end coverage;
  • native and Wasm differences are tested and documented;
  • no execution path depends on SCI, a JVM, or GraalVM;
  • this site reflects the tested state of the release.