Overview of recent projects and how they relate:
-
clj-kondo: Clojure linter, compiled with GraalVM for fast startup. While implementing clj-kondo I realized that analyzed code could not only be linted, but also interpreted. This gave rise to sci.
-
jet: converts between JSON, EDN and Transit. Supports minimal query language in the spirit of jq. While implementing the query language for jet, I realized that using normal Clojure instead of a DSL was better for most Clojure users. This gave rise to sci.
-
edamame: EDN parser with location metadata and configurable dispatch table. This way of parsing is inspired by rewrite-clj, but it skips the intermediate node representation. This parser was extracted from sci.
-
sci: Small Clojure interpreter. Analyzes and interprets Clojure code. Uses edamame for parsing. Works with JVM, GraalVM and CLJS (also with advanced compilation). Extracted as a library from babashka when I realized this interpreter could work on multiple targets, not only as a GraalVM-compiled binary.
-
babashka: a sprinkle of Clojure for the command line. Native scripting environment compiled with GraalVM, uses sci for interpreting Clojure.