In this post I'll give updates about open source I worked on during September 2023.
To see previous OSS updates, go here.
Sponsors
I'd like to thank all the sponsors and contributors that make this work possible! Open the details section for more info.
Sponsor info
Top sponsors:
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!
Updates
Last week I delivered my babashka talk at Strange
loop talk and much of my attention went to the preparation of that (slides here). Hopefully the talk will be online soon. Keep an eye on the Strange Loop Youtube
channel. 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 on last month.
- clj-kondo: static analyzer and linter for Clojure code that sparks joy. Published a new version (2023.09.07) with these changes:
- #1332: New linter
:unused-alias
. See docs. - #2143: false positive type warning for
clojure.set/project
- #2145: support ignore hint on multi-arity branch of function definition
- #2147: use alternative solution as workaround for https://github.com/cognitect/transit-clj/issues/43
- #2152: Fix false positive with used-underscored-binding with core.match
- #2150: allow command line options = as in –fail-level=error
- #2149:
:lint-as clojure.core/defmacro
should suppress &env
as unresolved symbol - #2161: Fix type annotation for
clojure.core/zero?
to number -> boolean - #2165: Fix error when serializing type data to cache
- #2167: Don't crash when
:unresolved-symbol
linter config contains unqualified symbol - #2170:
:keyword-binding
linter should ignore auto-resolved keywords - #2172: detect invalid amount of args and invalid argument type for
throw
- #2164: deftest inside let triggers :unused-value
- #2154: add
:exclude
option to :deprecated-namespace
linter - #2134: don't warn on usage of private var in
data_readers.clj(c)
- #2148: warn on configuration error in
:unused-refeferred-var
linter - Expose more vars in
clj-kondo.hooks-api
interpreter namespace
- babashka: native, fast starting Clojure interpreter for scripting. Version 1.3.185 released!
- #1624: Use Oracle GraalVM 21 (@lispyclouds)
- Use PGO to speed up loops (now 2-3x faster for
(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))
!) - Bump babashka.http-client to v0.4.15
- Bump rewrite-clj to v0.1.1.47
- #1619: Fix reflection issue with
Thread/sleep
in core.async/timeout
- Support interop on
java.util.stream.IntStream
- #1513: Fix interop on
Thread/sleep
with numbers that aren't already longs - Bump babashka.cli to 0.7.53
- Fix #babashka.nrepl/66
- Various nREPL server improvements (classpath op, file lookup information for
cider-find-var
) - Bump cheshire to 5.12.0
- squint: CLJS syntax to JS compiler A lot of happened in squint this month:
- Many core var implementations got added:
reduce-kv
, max
, min
, every-pred
, into-array
, some-fn
, keep-indexed
, iterate
, juxt
, compare
, to-array
, fn?
- Bun compatibility
- Lots of bug fixes
- REPL improvements
- Adopt CLJS truth semantics:
0
and ""
are no longer considered falsey - Lots more coming next month!
- neil: A CLI to add common aliases and features to deps.edn-based projects Version 0.2.61 released
- #181: fix
neil --version
- fix tests by referring to latest hiccup (@teodorlu)
- #180:
neil dep upgrade
: allow upgrading from an unstable version to the latest unstable version (@teodorlu) - #180:
neil dep upgrade
: with --unstable
, opt-into unstable library updates (@teodorlu) - #183: Don't drop
:exclusions
when running neil dep add
or neil dep upgrade
([@borkdude] and [@teodorlu])
- CLI: Turn Clojure functions into CLIs!
- Small release with the option to add your own header on top of
format-opts
, thanks to @Sohalt
- http-client: babashka's http-client
- A number of small bugfixes and additions
- A number of experiments around squint:
- rewrite-edn: Utility lib on top of rewrite-clj with common operations to update EDN while preserving whitespace and comments
- Fixed a round-tripping issue by bumping rewrite-clj
- tools-deps-native and tools.bbuild: use tools.deps directly from babashka
- aarch64 binary (thanks @TimoKramer for contributing)
- update upstream projects
- cherry: Experimental ClojureScript to ES6 module compiler
- Bump shared compiler code with squint and publish new version
- deps.clj: A faithful port of the clojure CLI bash script to Clojure
- Bumped tools jar and fixed a bug concerning SHA comparison
- SCI: Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs
- Add experimental
:static-methods
override to control how a static method is invoked. This allowed a fix in babashka for Thread/sleep
on non-longs and for Class/forName
which works arond a bug in Oracle GraalVM 21.
- sci.configs: A collection of ready to be used SCI configs.
Other projects
These are (some of the) other projects I'm involved with but little to no activity happened in the past month.
Click for more details
- jet: CLI to transform between JSON, EDN, YAML and Transit using Clojure
- quickdoc: Quick and minimal API doc generation for Clojure
- nbb: Scripting in Clojure on Node.js using SCI
- pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3
- pod-babashka-fswatcher: babashka filewatcher pod
- edamame: Configurable EDN/Clojure parser with location metadata
- lein-clj-kondo: a leiningen plugin for clj-kondo
- lein2deps: leiningen to deps.edn converter
- scittle: Execute Clojure(Script) directly from browser script tags via SCI
- sql pods: babashka pods for SQL databases
- cljs-showcase: Showcase CLJS libs using SCI
- fs - File system utility library for Clojure
- process: Clojure library for shelling out / spawning sub-processes
- babashka.book: Babashka manual
- instaparse-bb
- rewrite-clj: Rewrite Clojure code and edn
- pod-babashka-buddy: A pod around buddy core (Cryptographic Api for Clojure).
- gh-release-artifact: Upload artifacts to Github releases idempotently
- carve - Remove unused Clojure vars
- grasp: Grep Clojure code using clojure.spec regexes
- quickblog: Light-weight static blog engine for Clojure and babashka
- 4ever-clojure - Pure CLJS version of 4clojure, meant to run forever!
- pod-babashka-lanterna: Interact with clojure-lanterna from babashka
- joyride: VSCode CLJS scripting and REPL (via SCI)
- clj2el: transpile Clojure to elisp
- deflet: make let-expressions REPL-friendly!
- babashka.json: babashka JSON library/adapter
- deps.add-lib: Clojure 1.12's add-lib feature for leiningen and/or other environments without a specific version of the clojure CLI
Published: 2023-09-30
Tagged:
clojure
oss updates
In this post I'll give updates about open source I worked on during August 2023.
To see previous OSS updates, go here.
Sponsors
I'd like to thank all the sponsors and contributors that make this work possible! Open the details section for more info.
Sponsor info
Top sponsors:
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!
Updates
Currently my attention is mostly directed at the upcoming Strange loop talk. I'm very excited to be part of the last iteration of this conference. It will also be my first time flying to the USA!
Rahul De and Anupriya Johari will be giving a workshop at JavaZone on Tuesday the 5th of September. Check the details here.
Here are updates about the projects/libraries I've worked on last month.
- jet: CLI to transform between JSON, EDN, YAML and Transit using Clojure
- Release version
0.7.27
(see changelogs) with missing 1.11 functions and options for easier kebab/camel/etc. casing.
- quickdoc: Quick and minimal API doc generation for Clojure
- No update in quickdoc, but happy to see that Github have resolved a bug on their side with local anchors in HTML, which quickdoc relies on
- Require clojure 1.11 as the minimal clojure version
- sci.configs: A collection of ready to be used SCI configs.
- Worked together with @niwinz to make sci.configs upgradable to promesa 10 and 11. Many thanks to Andrey for making promesa backward-compatible again, since sci.configs relies on Clojure libraries to be always upgradable without breaking changes.
- nbb: Scripting in Clojure on Node.js using SCI
- Bumped sci.configs and promesa
- deps.clj: A faithful port of the clojure CLI bash script to Clojure
- The tools jar relocated to Github releases so deps.clj was updated to this new location, with backward compatibility
- Per my request, Alex added a
.sha256
file to Github releases so the downloaded jar file could be verified against corruption
- SCI: Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs
- Clojure compatibility: allow
(def foo/foo 1)
in namespace foo
- Clojure compatibility: reset file metadata on var when it's re-evaluated from other file
- Add
sci.async/eval-form
and sci.async/eval-form+
- babashka: native, fast starting Clojure interpreter for scripting.
- expose
sci.core
in babashka - Asahi linux support (linux on Apple m1/m2)
- Several other library upgrades and Clojure compatibility fixes
- Compatibility with the newest integrant version
- pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3
- Upgrade sqlite version so it supports json fields
- cherry
- Add
defclass
to cherry (similar to squint) - Expose
clojure.string
and clojure.walk
namespaces - Fix overriding core vars
- clj-kondo: static analyzer and linter for Clojure code that sparks joy.
- working towards a new release with a large number of small bug fixes, see upcoming changelog
- http-client: babashka's http-client
- A number of small bugfixes and additions
Other projects
These are (some of the) other projects I'm involved with but little to no activity happened in the past month.
Click for more details
Published: 2023-08-30
Tagged:
clojure
oss updates
In this post I'll give updates about open source I worked on during July 2023.
To see previous OSS updates, go here.
Sponsors
I'd like to thank all the sponsors and contributors that make this work possible! Open the details section for more info.
Sponsor info
Top sponsors:
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!
Updates
- clj-kondo: static analyzer and linter for Clojure code that sparks joy.
- A big fat new release: 2023.07.23. Several new linting rules and lots of fixes. See changelogs here.
- http-client: Babashka's http-client
- Added a websocket API, a fix for the
:ssl-context {:insecure true}
option and more. See CHANGELOG.
- pod-babashka-fswatcher: babashka filewatcher pod
- The events emitted from the file watcher are now automatically deduplicated.
- An aarch64 binary for Mac is now available Thanks to @fjsousa and @lispyclouds.
- edamame: Configurable EDN/Clojure parser with location metadata
- A small bugfix release around reading malformed reader conditional expressions
- lein-clj-kondo: a leiningen plugin for clj-kondo
- This plugin now follows the version number of clj-kondo
- squint: CLJS syntax to JS compiler and cherry Experimental ClojureScript to ES6 module compiler
- Add
defclass
in squint, inspired by shadow-cljs - More work on getting squint and cherry to work in one build
- Provide UMD build which works better in Firefox Webworkers
- cherry can now be used in a playground at livecodes.io
- Fix
doseq
and add doall
and dorun
in squint
- lein2deps: leiningen to deps.edn converter
- Allow anonymous function literals in
project.clj
- babashka: native, fast starting Clojure interpreter for scripting.
- Version
1.3.182
released, mostly library bumps and small bugfixes. See changelogs here.
- deps.clj: A faithful port of the clojure CLI bash script to Clojure
- More robust handling of downloading and unzipping tools jar
- scittle: Execute Clojure(Script) directly from browser script tags via SCI
- Fixed a small bug with evaluating tags: when there would be whitespace + a
"src"
attribute, the whitespace would be executed and the attribute was ignored.
- tools-deps-native and tools.bbuild
- This EXPERIMENTAL combo allows you to use tools.build from babashka. In this release a reflection issue was addressed.
- nbb: Scripting in Clojure on Node.js using SCI
- Add missing function to promesa
- jet: CLI to transform between JSON, EDN, YAML and Transit using Clojure
- Release version
0.7.27
(see changelogs) with missing 1.11 functions and options for easier kebab/camel/etc. casing.
Other projects
These are (some of the) other projects I'm involved with but little to no activity happened in the past month.
Click for more details
- sql pods: babashka pods for SQL databases
- CLI: Turn Clojure functions into CLIs!
- cljs-showcase: Showcase CLJS libs using SCI
- fs - File system utility library for Clojure
- SCI: Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs
- Support
:require-macros
- Introduce
eval-string+
which received an optional initial :ns
key and also returns the last active :ns
so you can preserve the namespace state over multiple evaluations. - Released v0.8.40
- process: Clojure library for shelling out / spawning sub-processes
- Implement
:out :bytes
to receive output as bytes (thanks Hans Bugge Grathwohl) - Make
:dir
option accept java.nio.file.Path
- sci.configs: A collection of ready to be used SCI configs.
- babashka.book: Babashka manual
- pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3
- instaparse-bb
- quickdoc: Quick and minimal API doc generation for Clojure
- rewrite-clj: Rewrite Clojure code and edn
- pod-babashka-buddy: A pod around buddy core (Cryptographic Api for Clojure).
- gh-release-artifact: Upload artifacts to Github releases idempotently
- neil: A CLI to add common aliases and features to deps.edn-based projects
- carve - Remove unused Clojure vars
- grasp: Grep Clojure code using clojure.spec regexes
- quickblog: Light-weight static blog engine for Clojure and babashka
- 4ever-clojure - Pure CLJS version of 4clojure, meant to run forever!
- pod-babashka-lanterna: Interact with clojure-lanterna from babashka
- joyride: VSCode CLJS scripting and REPL (via SCI)
- clj2el: transpile Clojure to elisp
- deflet: make let-expressions REPL-friendly!
- babashka.json: babashka JSON library/adapter
- deps.add-lib: Clojure 1.12's add-lib feature for leiningen and/or other environments without a specific version of the clojure CLI
Published: 2023-08-02
Tagged:
clojure
oss updates