Clojure Hosted on Go

(github.com)

195 points | by dnlo 2 days ago ago

27 comments

  • gregwebs 2 days ago ago

    There’s also typed fp on Go: https://lisette.run/

    The Go runtime, toolchain, and ecosystem are great- it makes sense to target it.

    • rienbdj 2 days ago ago

      Looks like a nice language. They market it as a Rust-like looks more like an ML to me.

      • tomjakubowski a day ago ago

        Rust itself, at least the early incarnations, was pretty strongly influenced by ML. The first rustcs, before it became self-hosted, were written in Ocaml.

    • solumunus 2 days ago ago

      Gosh this is exactly what I’m looking for, would love for this to become mature and popular.

    • samuell 2 days ago ago

      Found this previous thread about Lisette: https://news.ycombinator.com/item?id=47646843

  • shikck200 2 days ago ago

    Thats pretty sweet.

    How does the repl work? Does it compile to Go, then execute? Or does it ship with a full vm? Most go repls are really slow because they need to compile/execute (they fake the "e" part in repl). Its a niche case, but could enable some fun projects.

  • adityaathalye 2 days ago ago

    PSA: glojure maintenance has moved here: https://github.com/gloathub/glojure

    Worth changing the submit URL to this one?

    Edit: never mind. Spoke too soon. Ingy is keeping gloathub/glojure fork and glojurelang/glojure source at parity.

  • giancarlostoro 2 days ago ago

    Previous discussion from 2024:

    https://news.ycombinator.com/item?id=42272524

    • metadat 2 days ago ago

      68 comments

      I wonder how it’s progressed in the past two years?

      • ameliaquining 2 days ago ago

        Judging by the changelogs in the releases section, there haven't been radical changes, just incremental improvements.

        • seanc 2 days ago ago

          This is the way.

      • adityaathalye 2 days ago ago

        Work is being furthered by Ingy döt Net [0] (Creator of Gloat, YAML, YAMLScript, and other stuff), supported by a Clojurists Together grant [1].

        [0] https://gloathub.org/blog/2026/06/16/gloat-q2-grant-halfway-...

        > We are halfway through the Q2 2026 Clojurists Together funding cycle, so this is a good time to report what has been done for Gloat and Glojure.

        ...

        > Since the start of the grant period, Gloat and Glojure have had over 20 releases, with Gloat moving from v0.1.26 to v0.1.50. The Glojure work was all being done on the long running fork gloathub/glojure, but I'm thrilled to announce that as of today, the work has been fully moved back to the upstream glojurelang/glojure and will continue to be maintained and released from there.

        > My overall ambition for Gloat is to have Clojure be as full featured and prominent to Go programming as it is to Java. The industry is crazy about Go. Let's get it crazy about Clojure.

        [1] https://www.clojuriststogether.org/projects/#Gloat:~:text=Ma...

        > Make Gloat/Glojure binaries smaller and faster. Pass more of the Clojure Compatibility Test Suite. Create tutorial docs on: How to use Gloat to integrate Clojure into Go projects and How to use Gloat instead of GraalVM to (cross-)compile Clojure.

  • kpassapk 2 days ago ago

    dialects are IMO the most exciting thing about clojure. they are making progress quickly and reaching parity.

  • didibus 2 days ago ago

    I believe this is the most promising Clojure hosted on Go, as their has been a few recently, this is the only one with full proper interop.

    • marcingas 2 days ago ago

      https://github.com/nooga/let-go has been making huge leaps in terms of perf and interop since its launch.

      • didibus a day ago ago

        Has something changed since you last told me:

        > I think Gloat/Glojure has the best hosted runtime story because of its AOT to Go src pipeline - you can grab anything Go at compile time. OTOH let-go can roundtrip any Go value including structs, functions and channels but it does not allow pulling arbitrary go libs without wrapping them up first - they'd need to be built into the runtime for this.

  • jonathanstrange 2 days ago ago

    From what I can gather from the site it has no security or sandboxing features. Or am I missing something?

    I'm asking because I'm thinking about R7RS Wile scheme[1] as an embedded language, which has some basic security features. But it's heavily vibe-coded and that puts me off a bit, so I'm looking for other Lisp or Scheme dialects in Go.

    [1] https://github.com/aalpar/wile

    • networked 2 days ago ago

      Sandboxing in Wile is based on "A Security Kernel Based on the Lambda-Calculus" by Jonathan A. Rees (https://dspace.mit.edu/entities/publication/ef87c5a4-aae4-41...). This 2020 HN comment recommends it as the best paper the user read that year: https://news.ycombinator.com/item?id=25354770. The report itself is from 1996. Sounds worth reading.

      My current choice of Go interpreter for untrusted code is Starlark in Go (https://github.com/google/starlark-go/). Since Starlark is a dialect of Python, it's occurred to me it might be fun to put a Hy-like (https://hylang.org/) layer on top.

    • kitd 2 days ago ago

      A Go executable is self-contained. You can put it in a Docker container with very little overhead. That would give you some sandboxing at least.

      • jonathanstrange 2 days ago ago

        I'm creating cross-platform GUI applications in Go. Besides that, there are numerous reasons why an extension/scripting language might need various security and sandboxing features on a server, too.

  • rcarmo 2 days ago ago

    My take on this is a turbocharged fork of joker, with an IR-driven runtime and a WASM bridge via wazero: https://github.com/rcarmo/go-joker

  • hardwaresofton 2 days ago ago

    Another really interesting Lisp that I recently came across:

    https://github.com/carp-lang/Carp

    • adityaathalye 2 days ago ago

      Jank, a Clojure dialect, is playing in the same field:

      > Where jank differs from Clojure JVM is that its host is C++ on top of an LLVM-based JIT. This allows jank to offer the same benefits of REPL-based development while being able to seamlessly reach into the native world and compete seriously with JVM's performance.

      https://jank-lang.org/

  • mono442 2 days ago ago

    since this is tree walking interpretator, won't it be quite slow?

  • nathell 2 days ago ago

    Another recent Clojure dialect written in Go: [0], HN discussion: [1]

    [0]: https://github.com/nooga/let-go

    [1]: https://news.ycombinator.com/item?id=48076815

  • 2 days ago ago
    [deleted]
  • igtztorrero 2 days ago ago

    Clojure is difficult for me, that's why I use Tengo script language in our Go Projects, to allow user run certain code.

    https://github.com/d5/tengo