Lambda Island Open Source Update January 2022

By Alys Brooks

Community contributors and Lambda Island team members have been busy working on new projects and improving existing ones.

If you want to join in, check out our blog postcalling for contributions, or jump right in to our first issueslist.

A Versioning Tweak

You might notice that library versions look a little different. We now increment the minor version on each release. This should make it easier to tell how many releases between your current version and the latest. For example, Kaocha’s at 1.60.977.

Apart from that our versioning policy is still the same: the “teeny” version is just the numbers of commits, and the major version is either 0 for comparitively young and immature projects, or 1 if we feel ready to make a strong commitment regarding API stability. Note that even for “0” projects we don’t take making breaking changes lightly, and always consider how widely used a project already is.

Kaocha: Parallel tests and more

A major focus has been adding parallelization support. We’re waiting to stabilize the feature (although you’re invited to try it and provide feedback) before formally releasing it, but it’s getting close.

In the meantime, here are newly released improvements to Kaocha:

We’ve also fixed many bugs, so running Kaocha should be smoother than ever.

Regal: RE2 and Lazy Qualifiers

Regal received two new major features:

Fetch

We’re making Fetch happen, well not really. We’ve fleshed out the Fetch library, meaning a larger portion of the native Fetch API is available in our ergonomic wrapper:

  • Added support for all options that js/fetch understands. Option values can be supplied as keyword or string. :headers is expected to be a Clojure map from string to string: :headers, :redirect, :mode, :cache, :credentials, :referrer-policy.
  • Implemented encoding for :content-type :form-encoded
  • Added optional EDN support. Enable it by requiring the lambdaisland.fetch.edn namespace, which registers the necessary multimethods.

And one change in behavior: Supplying a body as a string will not encode it, but use the string unchanged as the body.

A New Tool: Classpath

In case you missed it, Arne wrote a blog post diving deep into the classpath and introducing the need for the lambdaisland.classpath library. In short, when you require a namespace, there’s a lot more going on than simply loading the first .class or .clj that matches.

Witchy Minecraft

Combining the creativity of Minecraft with the interactivity of Clojure can yield some amazing results. Over a year ago we started the Witchcraft project to explore that space, and we’ve been shipping major improvements almost every month since. We did a series of videosto demonstrate the kind of things you can do with it.

If that sounds cool then come hang out on our Discord, or join the “#minecraft” channel on Clojurians Slack.

The most recent development is that we are working at integrating with the Citizens2 plugin, so you can populate your world with unique and interesting characters. We’ve also added some new entries to the gallery, like a classic mob spawnerand a birchwood lodge.

Don’t Be A Stranger

We’d love to have your help on these projects. To reiterate, if you want to join in, check out our blog postcalling for contributions, or jump right in to our first issueslist.

Even if you can’t or don’t want to help out, we’d love for you to join the Lambda Island Discord. We hope that it will be an enjoyable and inclusive community for Clojurians of all experience levels. (If the link expires, you can message Arne (Arne#3086), Mitesh (ox#1485), or myself (alysbrooks#2195) for an invite).