rlisp is a transparent s-expression frontend that transpiles directly to Rust source, preserving full Rust semantics with no new runtime or GC.
Key Takeaways
Pipeline is .lisp -> .rs -> binary via rustc; rlisp only handles syntax, rustc owns type/borrow checking and optimization.
Full Rust feature set mapped to s-expressions: ownership, lifetimes, generics, traits, pattern matching, closures, macros, visibility modifiers.
rlisp macros are compile-time s-expression transformers using quasiquote/unquote/unquote-splicing – no proc_macro, no syn, no quote.
Escape hatch: (rust "...") inlines raw Rust verbatim for anything rlisp doesn’t yet express natively.
Structural editing and homogeneous syntax (expressions, types, patterns all s-expressions) are cited as practical upsides beyond novelty.
Hacker News Comment Review
Commenters split on framing: some see the s-expression-over-Rust approach as a pure syntax experiment with limited novelty; others argue surfacing Rust-specific semantics (ownership, borrowing) in Lisp form is the actual point, not replacing Common Lisp.
Critical gaps flagged: no examples of lifetime annotation syntax or turbofish, and no sourcemap/span support means rustc errors point to generated .rs, not the original .lisp – author acknowledged adding ariadne-based spans.
Skepticism that LLM tooling benefits from s-expressions; one commenter argues agents perform worse with paren-heavy grammars vs. Algol/Python-style due to training data depth.
Notable Comments
@skulk: raises rust-analyzer LSP and IDE feature loss as a practical blocker for real adoption.
@vermilingua: “not a single example of specifying lifetimes or the turbofish” – core Rust syntax left undemonstrated.