Glojure: Clojure interpreter hosted on Go, with extensible interop support

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. glojure

    Clojure interpreter hosted on Go, with extensible interop support. (by glojurelang)

    Thanks for the shout out. :) It's always great to see more Clojure dialects.

    For those jankers wondering what Glojure means for Clojure on native, the main thing to note is that Glojure is an interpreter. No JIT or AOT compilation (right now). Looks like it's a great start for an interpreter, though. Not quite ready for prime time, given some of the todos in the code [0], but the structure of it looks quite intentional. Based on some of the code [1], it looks like the analysis could be largely a port of tools.analyzer, which is honestly a smart way to do it.

    To the author, you may be interested in the clojure.core-test intitiative [2]. I'm aiming to get a good test suite for all Clojure dialects.

    0: https://github.com/glojurelang/glojure/blob/e54deb6597ceafd3...

    1: https://github.com/glojurelang/glojure/blob/e54deb6597ceafd3...

    2: https://github.com/jank-lang/clojure.core-test

  2. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  3. let-go

    Clojure-esque extension language for Go. (WIP)

  4. joker

    Small Clojure interpreter, linter and formatter.

  5. jank

    The native Clojure dialect hosted on LLVM

  6. clojure.core-test

    Dialect-independent tests for clojure.core, focused on locking down how Clojure JVM behaves so that other dialects to reach parity.

    Thanks for the shout out. :) It's always great to see more Clojure dialects.

    For those jankers wondering what Glojure means for Clojure on native, the main thing to note is that Glojure is an interpreter. No JIT or AOT compilation (right now). Looks like it's a great start for an interpreter, though. Not quite ready for prime time, given some of the todos in the code [0], but the structure of it looks quite intentional. Based on some of the code [1], it looks like the analysis could be largely a port of tools.analyzer, which is honestly a smart way to do it.

    To the author, you may be interested in the clojure.core-test intitiative [2]. I'm aiming to get a good test suite for all Clojure dialects.

    0: https://github.com/glojurelang/glojure/blob/e54deb6597ceafd3...

    1: https://github.com/glojurelang/glojure/blob/e54deb6597ceafd3...

    2: https://github.com/jank-lang/clojure.core-test

  7. muse

    Clojure library that makes remote data access code elegant and efficient at the same time (by kachayev)

    Something I find problematic about the various implementations of Clojure is the lack of specs to determine a common ground.

    Clojurescript doesn't use the same conventions in import/require statements: you're supposed to import macros using :require-macros or :refer-macros (I'm not even sure anymore). Conversely, `:refer :all` was banned in a prescriptivist attempt at fixing Clojure "mistakes", the rationale behind this decision being that with `:refer :all` it's not always obvious what namespace required symbols come from. Yet, with a REPL or a language server, it's very easy to get that info.

    The point I want to make is that because of this porting Clojure code to Clojurescript implies a lot of inessential changes to the ns forms in your project. E.g: https://github.com/kachayev/muse/blob/8db4d5de82a8acccb4486c..., but I've done far worse.

    It doesn't need to be that way.

  8. clojure

    The Clojure programming language

    Glojure author here! Your analysis is spot-on :). I'll definitely take a look at clojure.core-test. As components mature, I focus on improving compatibility by porting tests from Clojure [0], but they often require modifications to accommodate differences in the host language. As you noted, there are still several fundamental features missing — most notably some core data structures. That said, the implementation is robust enough to support another non-trivial hobby project [1].

    A bit more detail on some of your observations:

    > No JIT or AOT compilation (right now).

    I do plan to implement AOT compilation eventually. JIT, however, is more complex. Go's "plugin" standard library [2] could serve as a mechanism, but its support is limited and not without issues [3].

    > it looks like the analysis could be largely a port of tools.analyzer

    Exactly! Another key implementation strategy has been the handling of clojure.core. Instead of reimplementing everything from scratch, the Clojure 1.11 core libraries are programmatically transformed to work with Go [4]. However, this approach has its downsides — many functions appear to be available but are non-functional because parts of their implementation haven't yet been adapted.

    And by the way, impressive progress on Jank! I've been following it closely and really admire the work you're doing.

    [0] https://github.com/clojure/clojure/tree/master/test/clojure/...

  9. muscrat

    A real-time computer music system and language

  10. go

    The Go programming language

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Design Patterns in Golang: A Comprehensive Guide

    1 project | dev.to | 20 Jan 2025
  • Real-Time CO Monitoring MacOS App with Go

    2 projects | dev.to | 20 Jan 2025
  • How to create an AI Avatar in Go using Simli

    1 project | dev.to | 16 Jan 2025
  • Golang proposal: reduce error handling boilerplate using?

    1 project | news.ycombinator.com | 13 Jan 2025
  • Ask HN: When would you fork instead of waiting for proposal/PR acceptance?

    1 project | news.ycombinator.com | 13 Jan 2025

Did you know that Go is
the 4th most popular programming language
based on number of references?