clojure

GitHub Discussion Board, Parler, and Gab 150 150 craig

GitHub Discussion Board, Parler, and Gab

Awhile back, I created personal accounts on Parler and Gab, to augment (and ultimately replace) my personal Twitter account.

More recently, I enabled the new GitHub Discussions feature on my fork of Joker, and posted the “Welcome” message link on Clojure’s Joker channel on Slack, plus this content on both my Parler and Gab accounts:

If you’re interested in the #Clojure programming language and want to try out a version that is compact, interpreted, and not based Java[*] nor Javascript, consider #Joker, perhaps even my “gostd” fork of it.

Joker, written in #Go, builds down to a single, fairly compact and quick-starting, executable, with numerous core and widely used namespaces already “built in” to the executable (therefore not needing deployment alongside it).

My “gostd” fork adds an experimental capability in which many Go standard-library packages are automatically added to the core libraries during the Joker build. There’s lots of work still to do on it, but I’m making progress in my spare time. (Yesterday I got it working with Go 1.16beta1.)

I just enabled GitHub Discussions on my fork’s page; feel free to join in: https://github.com/jcburley/joker/discussions/20

And Merry Christmas!

[*] If you’re looking for a compact, interpretive Joker based on a quick-startup JVM engine, try #Babashka; last I checked, it was competitive with Joker (in terms of startup time and overhead), and it might run faster to the extent any JIT works effectively (as Joker, being built on top of Go, has no JIT).

Why Discord is switching from Go to Rust 150 150 craig

Why Discord is switching from Go to Rust

I just came across this article via the 2020-02-08 O’Reilly Programming Newsletter:

Why Discord is switching from Go to Rust

While I’ve greatly enjoyed — and become increasingly productive in — Go, using it mainly to enhance Joker to automatically include Go’s standard library and (more recently) start up more quickly (about which I plan to write another blog post soon) — I’ve been planning to look into Rust as a possible new low-level systems-programming language to replace C in my arsenal.

Would Joker (or a similar fast-startup, low-overhead, Clojure interpreter) be worth considering re-implementing in Rust?

I plan to look into startup-time performance for Rust programs soon!

Joker: a Clojure Linter and Interpreter 150 150 craig

Joker: a Clojure Linter and Interpreter

In last November’s post, I discussed what was then called gostd2joker, and have since renamed gostd, which is a fork of Joker. Joker itself is a small, single-threaded linter and interpreter of a subset of Clojure. My fork seeks to automate creation of wrappers around much (if not all) of the Go standard library, and perhaps other arbitrary packages in the future, so they are accessible (even if via fairly primitive, low-level mechanisms that aren’t idiomatic Clojure) via running Joker code.

Though I put that project aside for several months earlier this year, while pursuing other fields of endeavor, I returned to it a few months ago and have made substantial progress. Compare the namespaces provided by canonical Joker to those provided (though incompletely, in most cases) by my fork.

Besides that work, the canonical version of Joker continues to improve at a reasonable pace, and is increasingly useful as a scripting language.

In a recent podcast, Joker’s author, Roman Bataev, discusses Joker’s history, capabilities, and potential futures, including a brief shout-out to my fork at around the 15:00 mark:

https://podcasts.apple.com/us/podcast/s2-e9-joker-with-roman-bataev/id1461500416?i=1000455478703

I continue to enjoy working on this (currently unfunded) project, due to its heady mix of Clojure (a well-designed Lisp variant), Go (a well-designed imperative language), and automated code generation.