Show HN: Rust but Lisp

· devtools · Source ↗

TLDR

  • 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.

Original | Discuss on HN