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¶
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 serveandmake publishwiredgobb.sitecustom 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¶
Prove the execution architecture
Expand the working native executable into the complete execution proof, including runtime namespace loading and the first Wasm artifact.
make buildproducesbin/gobbgobb -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
requireand classpath loading - WASI and browser-Wasm smoke artifacts
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.218at commit0fb349c414e717800be775ba9cb77c95a9eb700dinto the ignored Makes cache. BABASHKA_DIR=/path/to/babashkaselects 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-ownedgobb.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, anddeps.ednare 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
doform. 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¶
Differential BB harness
Compare BB and Gobb output, errors, exit status, and side effects.
Glojure-native BB shell
Replace SCI's host responsibilities with Glojure-native execution.
Platform capabilities
Define consistent native, WASI, and browser-Wasm host behavior.
Java compatibility
Expand gojava and Glojure support based on BB and library demand.
Projects and dependencies
Support bb.edn, deps.edn, Git, Maven source, and resources.
Tasks and commands
Port BB tasks, exec functions, process pipelines, and aliases.
Batteries included
Bring over BB's bundled libraries in tested dependency-shaped waves.
Interactive services
Add terminal REPL, nREPL, socket REPL, pods, and servers.
Production build command
Finalize deterministic native and Wasm builds through Gloat.
Website and live Gobb
Keep compatibility reports current and add a browser-Wasm playground.
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.