December 2020 Monthly Update

By Alyssa Parado

Happy (belated) New Year everyone! Here are the updates from our new projects.

Clj-kondo/babashka/sci

December 1-15

Babashka

Sci

Clj-kondo

Misc

December 16-31

Babashka

Sci

Clj-kondo

Misc

O’Doyle Rules

December 1-15

I released version 0.5.0 of O’Doyle Rules with two new features that make it rule even more:

You can read more in the release notes.

I also added several benchmarks to the repo. One of them is code extracted from my dungeon crawler test game. Some of the benchmarks are also implemented with Clara and DataScript to compare performance. I will soon be putting a lot of focus on performance so these will help. GOTTA GO FAST, as Ricky Bobby once said.

December 16-31

I released version 0.6.0 with a new feature that makes it possible for rules to build recursive data structures similar to what you’d get from “pull” queries in DataScript or Datomic. See the release notes for more. Using O’Doyle in this way is somewhat advanced and hard to explain briefly, so to go along with the release I wrote a more in-depth explanation: Using O’Doyle Rules as a poor man’s DataScript.

Next month will be focused on performance. There’s a lot of low-hanging fruit from the RETE literature that I still need to steal, such as “node sharing”. When they make a movie about this, there’ll be a scene where my character is deep in the stacks of an old library, dusting off CS papers and scrolling through microfilm to find the lost gems of early rules engine research.

It won’t be true, but it’ll be a cool scene.

Calva

December 1-15

This first couple of weeks involved information gathering on the Language Server Protocol in general and clojure-lsp, specifically, and how to integrate it with VS Code and Calva. Fortunately, the initial integration had been started on a branch by Kevin Ahlbrecht and Peter Strömberg.

Below is a list of work that has been done in the last couple of weeks. Some features in clojure-lsp have been disabled in favor of Calva’s functionality, at least for now, because Calva’s similar functionality is either more mature at this time, or there is work required to make the two feature sets work well together. The initial goal is to publish a release with clojure-lsp early, disabling anything that might cause issues for now, while providing features Calva was lacking. The disabled features may receive work later in order to integrate them.

A development version (vsix) was sent to the #calva channel of the Clojurians slack for testing of the above changes, and I plan to release the changes soon and then continue work on some things that have been disabled, and/or on extra capabilities clojure-lsp can provide.

Version 2.0.134 Was Released

This includes a couple of small fixes for things I noticed while developing.

December 16-31

Calva’s clojure-lsp integration has been released as of version 2.0.137. See the ClojureVerse post for details.

Clojure-lsp Work

Contributing to clojure-lsp is important to improving Calva, and I expect to be doing more of this in the future. Below are changes I made or helped with.

Calva Work

Peter Strömberg and myself have been quite active lately, and Eric Dallo has been a tremendous help with clojure-lsp fixes, PR reviews, ideas, etc. Peter added refactoring commands that utilize clojure-lsp’s refactorings as well as updated the docs to explain clojure-lsp in Calva and the refactoring commands. Below is a list of recent Calva changes.

2.0.135

2.0.136

2.0.137

2.0.138

2.0.139

2.0.140

2.0.141