Show HN: I made a Clojure-like language in Go, boots in 7ms (github.com)
I started this project in 2021 as an elaborate practical joke: I wanted to have an excuse for writing Clojure while pretending to write Go.
Jokes aside, it turned out to be pretty decent: it feels like real Clojure, it has an nREPL server (supported in Calva, CIDER, etc.), it's easily embeddable in your Go programs (funcs, structs and channels cross the boundary without fuss). It's good for writing CLIs, web servers, data processing scripts and even doing some systems programming - I used it to write a deamonless container runtime. Oh, and it runs on Plan9.
Under the hood there is a fairly simple compiler and a stack VM, both handcrafted specifically for running Clojure-like code. The compiler can work in AOT mode producing portable bytecode blobs and standalone binaries (runtime+bytecode).
This is not a drop-in replacement for Clojure in general - it does not load JARs, it does not have all Java APIs and it most probably won't run your exiting Clojure projects without modifications. At least not at the moment.
Take it for a spin, tell me what you think. Issues and PRs are welcome!
43 comments
[ 2.9 ms ] story [ 75.5 ms ] threadhttps://github.com/glojurelang/glojure
Thanks for your work will definitely check it out again once I get over renewed love for cpp (26)
Edit how did glojure go under my radar also a great project from the looks
Gloat is a Glojure AOT automation tool. I worked with James Hamlin to get Glojure AOT going last summer and have been moving it forward since. I've also been working with marcingas (nooga) to get Gloat/Glojure/let-go all cooperating.
Is it possible for now?
As far as JVM-free Clojure-like, Janet is really nice. I've been using it in production for a while: https://janet-lang.org/ There's also Fennel if you want the Lua vm and libraries.
Some email stuff I don't know how to summarize well
Some data processing/aggregation servers
Some accounting stuff
I'm trying to build a declarative DSL https://lobste.rs/s/ylq7sd/what_are_you_doing_this_weekend#c... which I could port production Common Lisp/Prolog stuff to, but I probably won't for performance reasons.
I think it is brilliant and completely underappreciated :)
Excellent work, thank you for sharing it with us ^_^
So far Lisette (http://lisette.run) seems to be the best/most active version of a compile to Go language out there.