Skip to content

Instantly share code, notes, and snippets.

@borkdude
Last active January 30, 2024 16:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save borkdude/6449c9a44b35e24560091dccf051cf6e to your computer and use it in GitHub Desktop.
Save borkdude/6449c9a44b35e24560091dccf051cf6e to your computer and use it in GitHub Desktop.
clj-kondo, jet, edamame, sci, babashka

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment