The clj.rs project introduces an experimental Clojure dialect designed to run natively within the Rust ecosystem rather than on the Java Virtual Machine (JVM). By providing a Lisp runtime that supports persistent data structures, a hosted macro system, and native interop, it offers a path for developers to use Clojure's expressive syntax while leveraging Rust's performance and deployment characteristics.

Project Overview and Core Features

The primary source describes clj.rs as an experimental dialect that targets the Rust ecosystem. It aims to provide a capable Lisp runtime that includes essential Clojure features like persistent data structures and a hosted macro system.

A key technical goal of the project is native interop, allowing the dialect to interact with Rust's native capabilities. The runtime is designed to be flexible, supporting both compiled and interpreted execution modes to suit different deployment needs.

“cljrs is an experimental Clojure dialect targeting the Rust ecosystem.”

— clj.rs

Discussion on Use Cases and Comparisons

In the Hacker News discussion, commenters explored the practical applications of a Rust-based Clojure dialect. One commenter, writing as sshine, suggested that moving away from the JVM could be desirable for developers seeking faster start times and leaner container images.

Other participants compared the project to existing tools like scheme-rs, a crate used for dynamic scripting. While some users noted they did not currently have specific interop holes that required a new solution, the discussion highlighted the potential for a non-JVM Lisp environment.

Technical Trade-offs and Limitations

The project is currently in an early stage, and the developers acknowledge that the implementation has 'rough edges.' This suggests that the feature parity with standard Clojure may not be complete at this time.

Commenters on Hacker News also raised questions regarding the project's specific goals. One commenter, jiehong, questioned whether the project's lack of native binary compilation might make it behave more like ClojureScript than standard Clojure. The project's exact 'non-goals' remain a point of discussion among early observers.