September & October 2023 Long-Term Project Updates

By Kathy Davis


Thanks to our 2023 long-term developers for this amazing body of work. This is the 5th report of the year - with one more to come around the new year. (Projects listed are only some of what they are covering in this post).

Bozhidar Batsov: CIDER/REPL
Michiel Borkent: clj-kondo,babashka, squint, neil, CLI,clojure-mode, and more..
Sean Corfield: clojure-doc.org, toolsbuild, deps-new, honey-SQL, expectations
Toby Crawley: Clojars
Eric Dallo: Clojure-lsp, intellij
Christophe Grand: ClojureDart et.al.
Thomas Heller: Shadow-cljs
Nikita Prokopov: new projects, Clojure Sublimed, DataScript, Sublime Executor
Tommi Reiman: Malli, Reitit, Jsonista
Peter Stromberg: Calva, JavaScript REPL, Polylith
Peter Taoussanis: Carmine, Nippy, http-kit, Tempel, Telemere

Bozhidar Batsov

I’m happy to report that after numerous delays the long-awaited CIDER 1.8 (“Geneva”) was shipped on October 13th (which also happened to be my 39th birthday)! This was a truly colossal release that addressed many long-standing issues and introduced some impressive new features (e.g. much improved enrich-classpath, cider-log-mode, a new way to display javadoc and many improvements to the tests runner). See the release notes for more details.

This release was quickly followed by CIDER 1.9 and CIDER 1.10 - much smaller releases that mostly addressed some small issues and polished a bit some of the new functionality in CIDER 1.8. All this work also resulted in the list of open issues on CIDER finally dipping under 100 (currently they stand at 85). That feels nice!

Now that this is done, my focus will switch to completing the support for clojure-ts-mode in CIDER and finally cutting an nREPL 1.1 (which will bring TLS support).


Michiel Borkent

In this post I’ll give updates about open source I worked on during September and October 2023.
To see previous OSS updates, go here.

If you want to ensure that the projects I work on are sustainably maintained, you can sponsor this work in the following ways. Thank you!

If you’re used to sponsoring through some other means which isn’t listed above, please get in touch. On to the projects that I’ve been working on!

September Updates

I delivered my babashka talk at Strange loop talk and much of my attention went to the preparation of that (slides here). The talk is now available here.

I did manage to get some coding done as well, despite testing positive for COVID when I arrived back home… Here are updates about the projects/libraries I’ve worked in September.

October Updates

Other projects

These are (some of the) other projects I’m involved with but little to no activity happened in September and October. See final section of each report (“Other Projects”) for details.
https://blog.michielborkent.nl/oss-updates-sep-2023.html
https://blog.michielborkent.nl/oss-updates-oct-2023.html

Discuss this post here
Published: 31 October and 30 September, 2023
Tagged: clojure oss updates


Sean Corfield

:tags [“clojure” “clojure-doc.org” “expectations” “honeysql” “jdbc” “open source” “community” “clojurists together”]}

In my previous Long-Term Funding update I said I would review/overhaul the “ecosystem” and “tutorials” sections (once I’d finished the “language” section).

clojure-doc.org

I finished reviewing and updating the last three language sections to Clojure 1.11
(Concurrency and Parallelism, Macros, and Laziness), and I added a new section about transducers to the Collections and Sequences section. In the next period, I’ll revisit the “TBD” items in the language section to see what I can do to address them.

I rewrote the Generating Documentation section (ecosystem) to focus on cljdoc.org and removed the outdated content.

The Web Development section (ecosystem) also got a major rewrite, adding a lot of new content, removing outdated content, and incorporating a lot of community feedback on a draft version (thank you!).

Finally, I added a new section to the tools.build Cookbook about template pom.xml file and the :pom-data approach (new in tools.build 0.9.6).

tools.build and deps-new

Following on from the tools.build Cookbook update, I updated deps-new to use that new release of tools.build and updated all the project templates to use :pom-data for generating pom.xml files. See the v0.5.3 Release

I need to do the same for clj-new at some point – perhaps in the next period!

HoneySQL

HoneySQL also saw a lot of work with two releases that mostly focused on improving BigQuery support (array subquery, select as struct, create or replace, ignore/respect nulls, and new :distinct and :expr clauses to facilitate certain non-standard queries), and introducing basic support for NRQL (New Relic Query Language) as a new dialect.

NRQL has non-standard quoting rules, non-standard entity names, and inlines all expression values, since it is mostly used directly within the New Relic web UI or via their CLI, neither of which support parameterized queries. New clauses and helpers have been added for :compare-with, :since, :timeseries,until, and :facet.

In addition, an important bug in the helper merge functions was fixed that affected anyone using the quoted-symbol style of DSL (instead of the keyword style).

See HoneySQL releases for more details of these two new versions.

Expectations

Expectations also saw two new releases this period. The first release focused on improving the way test failures are reported to be more consistent and informative. The second release was a minor one to improve clj-kondo support for more-of.

See Expectations releases for more details on these two new versions.

next.jdbc

Finally, next.jdbc 1.3.894 provides variants of with-transaction and on-connection that will rewrap an options-wrapped connectable. This was a long-requested feature that I had struggled with finding an elegant solution for. In addition, I updated most of the JDBC drivers that next.jdbc is tested against, to flush out any issues with those newer versions. Notably, SQLite no longer supports :return-generated-keys true but you can specify RETURNING * in your SQL instead.

What’s Next?

In November/December, I’m hoping to complete a review and update of the “cookbooks” section and make another pass of “TBD” items in the “language” section.


Toby Crawley

Clojars Worklog

September 2023

Commit Logs: clojars-web

Most of September was vacation, but I did make a few improvements towards the end of the month:

October 2023

Commit Logs: clojars-web

The work this month was modernization: we moved away from yesql in favor of
honeysql, and to next.jdbc from clojure.java.jdbc:


Eric Dallo

During these months I worked a lot on clojure-lsp-intellij to make it stable and allow IntelliJ users have the same experience of using clojure-lsp in other editors, the plugin is way more stable now, and I’ve been working with @afucher in a clojure-repl-intellij OSS plugin which should work pretty well with this plugin so users will be able to have both REPL access and LSP features in Intellij, we should announce it soon!

For that to work and scale, I extracted all the clojure integration part from clojure-lsp-intellij to a separated library called clj4intellij, this new library allows the creation of Intellij plugins in Clojure without too much effort, this was the result of months of research and headaches about how IntelliJ’s API could work with Clojure, we are already successfully using it in clojure-repl-intellij!

clj4intellij

0.3.1

clojure-lsp-intellij

0.9.0 - 0.13.0

clojure-lsp

The main highlights are performance and memory improvement along with paredit features for clojure-lsp-intellij and other editors.

2023.10.30-16.25.41


Christophe Grand

ClojureDart

Improvements

Fixes

Several fixes to the compiler, cljd.core. Amongst them:

Future work

ClojureDart

New items:

Existing items:


Thomas Heller

shadow-cljs

Time was mostly spent on doing maintenance work and some bugfixes. As well as helping people out via the typical channels (e.g. Clojurians Slack).

Current shadow-cljs version: 2.52.10 Changelog

Notable Updates


Nikita Prokopov

(aka Niki Tonsky)

Must be something in the air that makes you start new projects in the Fall. Three new ones has popped up:

New project - clj-simple-router:

New project - toml-clj:

New project - extend-clj:

Old projects also have seen some love:

DataScript:

Clojure Sublimed:

Sublime Executor:

And, of course, blogging. Unicode article has seen its five minutes of fame:


Tommi Reiman

Working mostly with Malli and Reitit. Will do an open source retreat to get planned things out in 2023.

Malli

0.13.0 (2023-09-24)

Reitit

0.7.0-alpha7 (2023-10-03)

[metosin/ring-swagger-ui "4.19.1"] is available but we use "4.18.1"  

0.7.0-alpha6 (2023-09-11)

Jsonista

Something else

We had a family vacation in the Rhodes Island, which had massive wildfires earlier this year

image



Peter Stromberg

Calva

I had a bit of vacation from hacking on Calva during September. Which does not mean I had (or need ??) a vacation from Calva, I kept pretty busy with user support. And it was not all pause on the hacking either, more that I couldn’t really get a hold on some bugs and after some fruitless hunts I decided to wait for more information. Which I got, both from users and from my own investigations. There was also an issue with VS Code Insider builds, stopping our CI pipeline completely. Calva uses the Insider branch of VS Code for integration testing. I was pretty sure the VS Code team would fix it, so I waited that out instead of installing workarounds. But not without spending considerable time on the issue before figuring out that it was upstream, and where upstream.

The major issue hitting users was quite awful. A hang in Calva’s structural editor, which mostly manifested itself in moments of total Calva unresponsiveness. With the help of Ingy döt Net’s ever more minimal reproductions we finally understood the problem and could fix it. ?? There is also some other hang hitting users of WSL, that we haven’t figured out yet…

Calva user Albert Snow discovered that Calva’s ClojureScript Quick Start REPLs were broken on Windows. He set the Calva development environment up and we could pair on finding the issue, which he then fixed! ??

Also fixed:

Giving myself a JavaScript REPl with Joyride

As a not-too-frequent user of JavaScript, I often find myself lacking an easy way to experiment with JS code, especially in the way I am used to being able to experiment with Clojure code. I decided to use Joyride for it, and created a script that gives me a JavaScript REPL, right there in VS Code. It’s still very simple, and I plan to return to it, making it a bit more sophisticated, but it is already pretty useful.

Polylith Real World example in the browser

When helping Joakim Tengstrand with feedback on an article about Polylith (pending), we realized that it would be very good with a way to test Polylith without having to set your machine up for Clojure development. So I created an experience for that, leveraging Gitpod and Furkan Bayraktar’s Real World example app.

Related: I also wrote about observing when ChatGPT taught itself about Polylith from only a single diagram from that coming article.

Image composition using Babashka & Membrane

But not together. Though enabling using Membrane to Babashka does present itself as something I might try to do one of these days.

Some venturing into image and text composition lead me to two different solutions. One invloving ImageMagick and Babashka, plus it had me create a missing Docker image. And one involving the super exciting Clojure UI library, Membrane:


Peter Taoussanis

Open source update

A big thanks to Clojurists Together, Nubank, lambdaschmiede, and other sponsors of my open source work!

Recent work

This was another productive period with 100% of my time going to open source. Highlights:

Upcoming work

- Peter Taoussanis