ClojureRS – Clojure interpreter implemented in Rust

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • ClojureRS

    Clojure, implemented atop Rust (unofficial)

  • sci

    Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs

    Built with the lovely SCI library (https://github.com/babashka/sci) + GraalVM, probably the most useful GraalVM project I've seen in the wild so far.

    Also, Babashka will probably always support more features than ClojureRS could ever, particularly the interop with the various Java classes/functions, as that'd be very hard to achieve in ClojureRS.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • clojure-scheme

    Clojure to Scheme to C to the bare metal.

    > But wouldn't it make more sense to first rewrite Clojure itself in some small/minimal scheme-y subset of Clojure

    How about Scheme?: https://github.com/takeoutweight/clojure-scheme

    Note that this project is unmaintained and the last updates are ~10 years old.

  • dotfiles

    Home sweet home 🏠 (by hiepph)

    Extremely useful. I use it to write small to medium scripts, replacing Bash. For example, I wrote a small client that interacts with Pocket API. [1] Aside from interop with shell commands (I use Fish for that), most things seem pleasant so far.

    [1] https://github.com/hiepph/dotfiles/blob/master/scripts/_pock...

  • cloture

    Clojure in Common Lisp

  • cloroutine

    Coroutine support for clojure

    Thanks for sharing! I think these restarts could definitely be implemented as a library in Clojure with the help of a coroutine library like https://github.com/leonoel/cloroutine#guides

  • farolero

    Thread-safe Common Lisp style conditions and restarts for Clojure(Script) and Babashka.

    Someone added conditions/restarts to Clojure: https://github.com/IGJoshua/farolero

    It does allow errors to be caught by the Repl and just.hkw to handle them.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • babashka

    Native, fast starting Clojure interpreter for scripting

    I've been checking out Babashka [1] recently. It allows you to write clojure scripts and output a single-binary with fast startup time.

    Then I did a very brief search for clojure libraries, things like parsing html. Most of the github projects were not seeing much activity.

    I've found bash-as-glue of unix programs like ImageMagick, curl, jq and pup very practical. I was just looking for a possible alternative to be sure I'm not missing out. Doesn't seem like it.

    Anyone wants to hop in and sell me on his own approach?

    [1]: https://babashka.org/

  • process

    Clojure library for shelling out / spawning sub-processes

    Nothing prevents you from using babashka and still use it as a glue for Unix programs. The difference is you get a nicer language (my opinion), a REPL if you want, and also you do get access to a lot more libraries from Java and Clojure and the pod concept of you want too as well.

    So to be clear, you can easily use ImageMagick, curl, jq, pup, etc. See: https://clojure.github.io/clojure/clojure.java.shell-api.htm... and https://github.com/babashka/process

    Other benefits are that you only need to learn Clojure and suddenly you can use it for everything, backend apps, frontend apps, scripts, etc. You don't need to learn bash, js and Java/go, make, etc.

    > Then I did a very brief search for clojure libraries, things like parsing html. Most of the github projects were not seeing much activity (like last commit in 2020)

    This surprises everyone, but those libraries still work, have no bugs, are missing no features, and can be used without issues in production.

    Clojure is one of the most stable language, so things never break and almost never need updating.

    People have a kind of Stockholm syndrome I think coming to other languages that if something didn't need a bug fix in a year it must be abandoned and broken.

    And the reason you often don't need to update those libraries to keep up with the environment, like OS versions, is because they all leverage existing runtimes under the hood like JVM and that's the one that updates. So they're all secure and kept up to date, working with new OS and new architecture for free as JVM updates. This applies to Babashka as well, because it is implemented using a JVM.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts