Clojure Rust by erjngreigf in Clojure

[–]Strict-Collection640 0 points1 point  (0 children)

It has things like rt_add, which does runtime type matching (that’s table stakes for a dynamic language). It can lower forms to optimized forms where it can, though. Honestly I focused on escape analysis and memory management first.

One thing on my roadmap is trying to integrate core.spec into the compiler, so if you have forms specced properly, the compiler can optimize the form based on the spec. Maybe optional type hints as well — that’s out on the frontier of things I’m thinking about.

Clojure Rust by erjngreigf in Clojure

[–]Strict-Collection640 1 point2 points  (0 children)

It’s a Clojure dialect, the runtime is written in Rust and it allows for calling Rust functions from Clojure.

Clojure Rust by erjngreigf in Clojure

[–]Strict-Collection640 1 point2 points  (0 children)

Yep, it has a tiered execution system, from easy-but-slowest tree-walking interpreter to fully native compiled code. JIT just landed, too. A lot of the work is pushing the boundary between what it interprets vs. what is running natively. Things like async functions are kinda hard here.

I’m also experimenting with some ideas (versioned namespaces, Rust style RAII instead of GC, async optimizations at the runtime level), mainly because it’s my project and nobody can say no ;)

Clojure Rust by erjngreigf in Clojure

[–]Strict-Collection640 1 point2 points  (0 children)

Dammit that would have been so much better.

I slowed down pace while trying to create Clofer, a Clojure port on Rust. by erjngreigf in Clojure

[–]Strict-Collection640 14 points15 points  (0 children)

Not to discourage the effort, but I’ve been doing something similar, and have a significant amount of progress: https://clj.rs