Fast native Clojure scripting runtime

Avoid switching between Clojure and bash scripts. Enjoy your parens on the command line.

time bb -e '{:ci (System/getenv "CI")}'
{:ci "true"}
0.01s user 0.01s system 79% cpu 0.026 total

Features

Instant startup

Leveraging GraalVM native-image and the Small Clojure Interpreter, babashka is a self-contained and instantly starting scripting environment.

Batteries included

Babashka comes with scripting batteries included: tools.cli, cheshire, babashka.fs, babashka.process, java.time and many more libraries and classes.

Cross-platform

Babashka scripts work on linux, macOS and Windows.

Libraries

Besides the built-in libraries, babashka is able to load libraries from source, tapping into the world of already existing Clojure libraries.

Multi-threaded

Babashka supports real JVM threads and like Clojure, supports futures and dynamic thread-locally bound vars

Task runner

Babashka features a built-in task runner which covers the most popular use cases of make, just and npm scripts.

Pods

Babashka can shell out to other CLI programs like you are used to in bash. It goes one step further and offers seamless integration with other binaries using the pod protocol. Pods can be implemented in any language, including Clojure, Rust and Go.


Community

The babashka channel on Clojurians Slack has quickly summoned more than 500 members. We are sharing ideas and helping each other out with questions and issues. Github discussions can be used to reach out for any topic if you are more into slower moving communication.


Support the project

If you enjoy babashka and it is helping you succeed, consider sponsoring the development and maintainance of this project.