diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecb5871f..81527f0a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,4 +11,4 @@ jobs: steps: - name: Trigger publish - run: curl -X POST -H "Authorization:token ${{ secrets.TRIGGER_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches + run: curl -X POST -H "Authorization:token ${{ secrets.GH_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches diff --git a/.github/workflows/publish-events.yml b/.github/workflows/publish-events.yml index 5aa89c36..2003bb3e 100644 --- a/.github/workflows/publish-events.yml +++ b/.github/workflows/publish-events.yml @@ -3,6 +3,7 @@ name: Daily Event Publishing on: schedule: - cron: '0 0 * * *' + workflow_dispatch: jobs: published-daily-events: @@ -33,14 +34,17 @@ jobs: run: | cd script/eventgen clojure -X parse/parse-feed :dir '"../../content/events"' + cd ../.. - name: Commit and push event page run: | git config --global user.name clojure-build git config --global user.email "clojure-build@users.noreply.github.com" git add content/events - if git status | grep -q modified + if ! git diff --quiet --cached then git commit -m 'update events' git push + + curl -X POST -H "Authorization:token ${{ secrets.GH_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches fi diff --git a/content/api/api.adoc b/content/api/api.adoc index 2443cd4d..5c72b2e1 100644 --- a/content/api/api.adoc +++ b/content/api/api.adoc @@ -26,7 +26,7 @@ Documentation for Clojure <>: == Other resources * https://clojuredocs.org[ClojureDocs] - community provided example repository -* https://cljdoc.org/[cljdoc] - library documentation +* https://cljdoc.org[cljdoc] - library documentation == Deprecated (pre Clojure 1.3) diff --git a/content/community/books.adoc b/content/community/books.adoc index 610bc8c8..10c3adf3 100644 --- a/content/community/books.adoc +++ b/content/community/books.adoc @@ -12,6 +12,16 @@ _Listed in order of descending release date of newest edition._ [width="80", cols="<.^30a,.^70", role="table"] |=== +| image::https://aiprobook.com/img/lafp-cover.png[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure,link="https://aiprobook.com/numerical-linear-algebra-for-programmers/",width="130"] +| https://aiprobook.com/numerical-linear-algebra-for-programmers/[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure] + +by Dragan Djuric + +Dec 20, 2024 + +| image::https://aiprobook.com/img/dlfp-cover.png[Deep Learning for Programmers,link="https://aiprobook.com/deep-learning-for-programmers/",width="130"] +| https://aiprobook.com/deep-learning-for-programmers/[Deep Learning for Programmers] + +by Dragan Djuric + +Dec 20, 2024 + | image::https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/mmclobrain-beta-500.jpg[Clojure Brain Teasers,link="https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/",width="130"] | https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/[Clojure Brain Teasers] + by Alex Miller, Lorilyn Jordan Miller + @@ -32,16 +42,6 @@ Mar 23, 2023 by Dmitri Sotnikov, Scot Brown + July 29, 2021 -| image::https://aiprobook.com/img/lafp-cover.png[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure,link="https://aiprobook.com/numerical-linear-algebra-for-programmers/",width="130"] -| https://aiprobook.com/numerical-linear-algebra-for-programmers/[Numerical Linear Algebra for Programmers] + -by Dragan Djuric + -Jan 15, 2021 - -| image::https://aiprobook.com/img/dlfp-cover.png[Deep Learning for Programmers,link="https://aiprobook.com/deep-learning-for-programmers/",width="130"] -| https://aiprobook.com/deep-learning-for-programmers/[Deep Learning for Programmers] + -by Dragan Djuric + -Dec 21, 2020 - | image::https://images-na.ssl-images-amazon.com/images/I/51AWkNYd4NL._SL160.jpg[The Clojure Workshop,link="https://www.amazon.com/dp/B082FJ9ZLY",width="130"] | https://www.amazon.com/dp/B082FJ9ZLY[The Clojure Workshop] + by Joseph Fahey, Thomas Haratyk, Scott McCaughie, Yehonathan Sharvit, Konrad Szydlo + @@ -67,7 +67,7 @@ Nov 15, 2019 by Ivan Grishaev + Aug 31, 2018 -| image::https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/book/roclojure/getting-clojure",width="130"] +| image::https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/titles/roclojure/getting-clojure/",width="130"] | https://pragprog.com/book/roclojure/getting-clojure[Getting Clojure] + by Russ Olsen + May 19, 2018 diff --git a/content/community/companies.adoc b/content/community/companies.adoc index 025459fa..57c88d15 100644 --- a/content/community/companies.adoc +++ b/content/community/companies.adoc @@ -143,6 +143,7 @@ Also, check out the <> and <!! !]]) ----- - -Or include it in your namespace: - -[source,clojure] ----- -(ns my.ns - (:require [clojure.core.async :as a :refer [!! !]])) ----- - -== Channels - -Values are conveyed on queue-like channels. By default channels are unbuffered (0-length) - they require producer and consumer to rendezvous for the transfer of a value through the channel. - -Use `chan` to make an unbuffered channel: - -[source,clojure] ----- -(a/chan) ----- - -Pass a number to create a channel with a fixed buffer size: - -[source,clojure] ----- -(a/chan 10) ----- - -`close!` a channel to stop accepting puts. Remaining values are still available to take. Drained channels return nil on take. Nils may not be sent over a channel explicitly! - -[source,clojure] ----- -(let [c (a/chan)] - (a/close! c)) ----- - -Channels can also use custom buffers that have different policies for the "full" case. Two useful examples are provided in the API. - -[source,clojure] ----- -;; Use `dropping-buffer` to drop newest values when the buffer is full: -(a/chan (a/dropping-buffer 10)) - -;; Use `sliding-buffer` to drop oldest values when the buffer is full: -(a/chan (a/sliding-buffer 10)) ----- - -== Threads - -In ordinary threads, we use `>!!` (blocking put) and `!! c "hello") - (assert (= "hello" (!! c "hello")) - (assert (= "hello" (!` (put) and `! c "hello")) - (assert (= "hello" (!! c1 "hi") - (>!! c2 "there")) ----- - -Prints (on stdout, possibly not visible at your repl): - -[source] ----- -Read hi from #object[clojure.core.async.impl.channels.ManyToManyChannel ...] -Read there from #object[clojure.core.async.impl.channels.ManyToManyChannel ...] ----- - -We can use alts! to do the same thing with go blocks: - -[source,clojure] ----- -(let [c1 (a/chan) - c2 (a/chan)] - (a/go (while true - (let [[v ch] (a/alts! [c1 c2])] - (println "Read" v "from" ch)))) - (a/go (>! c1 "hi")) - (a/go (>! c2 "there"))) ----- - -Since go blocks are lightweight processes not bound to threads, we can have LOTS of them! Here we create 1000 go blocks that say hi on 1000 channels. We use alts!! to read them as they're ready. - -[source,clojure] ----- -(let [n 1000 - cs (repeatedly n a/chan) - begin (System/currentTimeMillis)] - (doseq [c cs] (a/go (>! c "hi"))) - (dotimes [i n] - (let [[v c] (a/alts!! cs)] - (assert (= "hi" v)))) - (println "Read" n "msgs in" (- (System/currentTimeMillis) begin) "ms")) ----- - -`timeout` creates a channel that waits for a specified ms, then closes: - -[source,clojure] ----- -(let [t (a/timeout 100) - begin (System/currentTimeMillis)] - (>** + +Return <> can sometimes be useful to flow Java type information out of functions. To provide a return type hint, place it on the function parameter vector: + +[source,clojure] +---- +(defn new-file ^java.io.File [path] (java.io.File. path)) +---- + +Note that type hints can also be placed on the var itself, but placing it on the parameter vector is preferred for two reasons: + +1. Var type hints are evaluated and for special primitive or array type hints like `^long` or `^longs`, these happen to also name functions. When the var type hints are evaluated they become function objects, which are invalid type hints and ignored. +2. A multi-arity function may specify different return type hints for different arities (although this is not common). + [[varargs]] **<>** diff --git a/content/guides/getting_started.adoc b/content/guides/getting_started.adoc index f00b4b6a..fab5f982 100644 --- a/content/guides/getting_started.adoc +++ b/content/guides/getting_started.adoc @@ -43,12 +43,12 @@ There are many ways to learn the Clojure language. This tutorial covers the basi If you'd like to work from a <>, these are some excellent starting points: -image:https://images-na.ssl-images-amazon.com/images/I/51Bvd25CstL._SL160.jpg[Programming Clojure 3rd edition,link="https://a.co/bSxW6A6",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/book/roclojure/getting-clojure",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/6112vbQYDLL._SL160.jpg[Clojure for the Brave and True,link="https://a.co/bsviqV7",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/5122uV93jfL._SL160.jpg[Living Clojure,link="https://a.co/1m2Zt4p",width="130"] +image:https://images-na.ssl-images-amazon.com/images/I/51Bvd25CstL._SL160.jpg[Programming Clojure 3rd edition,link="https://a.co/bSxW6A6",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/titles/roclojure/getting-clojure/",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/6112vbQYDLL._SL160.jpg[Clojure for the Brave and True,link="https://a.co/bsviqV7",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/5122uV93jfL._SL160.jpg[Living Clojure,link="https://a.co/1m2Zt4p",width="130"] If you'd like to try some practice problems: * https://4clojure.oxal.org/[4Clojure] - a large set of Clojure practice problems -* https://exercism.io/tracks/clojure[exercism Clojure track] - larger problems with mentor support +* https://exercism.org/tracks/clojure[exercism Clojure track] - larger problems with mentor support Also check out: @@ -60,5 +60,5 @@ Also check out: There are many places to interact with other Clojure developers: * https://ask.clojure.org[Ask Clojure] [official] - Clojure Q&A and knowledge base -* https://clojurians.net[Clojurians Slack channel] - Clojure live chat, check out #beginners, #jobs, etc +* http://clojurians.net[Clojurians Slack channel] - Clojure live chat, check out #beginners, #jobs, etc * https://clojureverse.org[Clojureverse] - Clojure forum diff --git a/content/guides/install_clojure.adoc b/content/guides/install_clojure.adoc index cafc870f..d6015e32 100644 --- a/content/guides/install_clojure.adoc +++ b/content/guides/install_clojure.adoc @@ -127,7 +127,7 @@ Alternately, you can use https://github.com/casselc/clj-msi[clj-msi] to install Clojure requires Java. Clojure officially supports Java LTS releases (currently Java 8, 11, 17 and 21), but also tries to ensure interim versions work as well. You can use any Java distribution, whether it’s a commercial release from Oracle or an open source version based on OpenJDK (like Temurin). The Clojure tools require only that the `java` command is on the `PATH` or that the `JAVA_HOME` environment variable is set. -If you don't already hava Java installed, we recommend installing Adoptium Temurin 21. +If you don't already have Java installed, we recommend installing Adoptium Temurin 21. To use the Adoptium Temurin installers: diff --git a/content/guides/learn/namespaces.adoc b/content/guides/learn/namespaces.adoc index 3736df4d..2aa079b6 100644 --- a/content/guides/learn/namespaces.adoc +++ b/content/guides/learn/namespaces.adoc @@ -97,7 +97,7 @@ Similar to `:refer`, the `ns` macro has an `:import` clause (that is supported b (ns com.some-example.my-app2 (:import [java.util Date UUID] - [java.io File])) + [java.io File])) ---- This example imports the `Date` and `UUID` class from the `java.util` package and the `File` class from the `java.io` package. diff --git a/content/guides/structural_editing.adoc b/content/guides/structural_editing.adoc index a674da68..71af4564 100644 --- a/content/guides/structural_editing.adoc +++ b/content/guides/structural_editing.adoc @@ -19,18 +19,18 @@ Structural editing has a long history with editing Lisp languages, and is most a Similar to character-based editing, structural editing has ways to create new forms, navigate, select, copy/paste, delete, etc but all in terms of nested expressions rather than characters or lines. This page intends to introduce you to some high-level terms and concepts in structural editing, and not to cover any specific editors or keys as the details vary significantly depending on the editor (and are usually customizable as well). -When you get started, focus on memorizing a small set of commands (which are all covered below): kill, slurp forward, barf forward, splice, and raise. As you encounter other scenarios find the appropriate structural editing command and add it to your toolkit. +When you get started, focus on memorizing a small set of commands (which are all covered below): kill, slurp forward, barf forward, splice, and raise. As you encounter other scenarios, find the appropriate structural editing command and add it to your toolkit. == Balanced forms A general principle of structural editing is to ensure that all forms are balanced at all times. This is immediately apparent when creating new forms in your code. If you type the beginning delimiter for a collection, your editor will also insert the ending delimiter. If you type `(`, your editor will insert `()` with your cursor in the middle so you can keep typing inside the form. Most editors also provide some visual feedback that match beginning and ending delimiters as you move across them, or may even support code folding and unfolding based on this structure. -One common issue you may encounter (especially while learning) is the accidental use of a line editing command that unbalances your code structure. For example, if you have a multi-line nested expression, deleting one line from the middle is highly likely to delete a left paren but not it's matching right paren on a subsequent line. Don't panic! +One common issue you may encounter (especially while learning) is the accidental use of a line editing command that unbalances your code structure. For example, if you have a multi-line nested expression, deleting one line from the middle is highly likely to delete a left paren but not its matching right paren on a subsequent line. Don't panic! Some common ways to fix this situation: * Undo - often you can simply undo that line command and then use a structural editing command instead -* Turn off structural editing, fix the problem, and re-enable structural editing - in some editors there is a button in the footer or elsewhere to toggle structural editing and this is relatively easy, in others it will harder. +* Turn off structural editing, fix the problem, and re-enable structural editing - in some editors there is a button in the footer or elsewhere to toggle structural editing and this is relatively easy, in others it will be harder. * Use character editing commands to fix - in some cases, such as a dangling opening paren to delete, you can select the opening paren and use character deletion to delete it (outside structural editing) * Use comments and character editing - if you have a dangling open paren to close, you can insert a Clojure comment `;`, allowing you to type the `)`, then select the `;` and delete it with character editing diff --git a/content/guides/tools_build.adoc b/content/guides/tools_build.adoc index 0c7f5245..7e7f2a98 100644 --- a/content/guides/tools_build.adoc +++ b/content/guides/tools_build.adoc @@ -47,7 +47,7 @@ So executing `clj -T:build jar` will use an effective classpath here of: * org.clojure/clojure (from the root deps.edn `:deps`) and transitive deps * org.clojure/tools.build (from the `:build` alias `:deps`) and transitive deps -The `:ns-default` specifies the default Clojure namespace to find the function specified on the classpath. Because the only local path is the default `"."`, we should expect to find the build program at `build.clj` in the root of our project. Note that the path roots (via the `:build` alias `:paths`) and the namespace of the build program itself relative to those paths roots are fully under your control. You may wish to put them in a subdirectory of your project too. +The `:ns-default` specifies the default Clojure namespace to find the function specified on the classpath. Because the only local path is the default `"."`, we should expect to find the build program at `build.clj` in the root of our project. Note that the path roots (via the `:build` alias `:paths`) and the namespace of the build program itself relative to those path roots are fully under your control. You may wish to put them in a subdirectory of your project too. And then finally, on the command line we specify the function to run in the build, here `jar`. That function will be executed in the `build` namespace, and passed a map built using the same arg passing style as `-X` - args are provided as alternating keys and values. @@ -57,7 +57,7 @@ The remainder of this guide demonstrates individual common use cases and how to The most common Clojure build creates a jar file containing Clojure source code. To do this with tools.build we'll use the following tasks: -* `create-basis` - to create a project basis (note: this will download deps as a side effect) +* `create-basis` - to create a <> (note: this will download deps as a side effect) * `copy-dir` - to copy Clojure source and resources into a working dir * `write-pom` - to write a pom file in the working dir * `jar` - to jar up the working dir into a jar file @@ -227,7 +227,7 @@ For example, consider a parameterization that includes an extra set of dev resou params)) ---- -The other aspects of deps.edn and invocation remain the same. +The other aspects of deps.edn and invocation remain the same. Invocation that activates :dev environment will look like this: diff --git a/content/news/2021/06/11/deref.adoc b/content/news/2021/06/11/deref.adoc index 4bbaa03c..bf3b9490 100644 --- a/content/news/2021/06/11/deref.adoc +++ b/content/news/2021/06/11/deref.adoc @@ -21,7 +21,7 @@ We have a bumper crop of Clojure-related podcast episodes this week, put these i * https://www.cognitect.com/cognicast/160[Cognicast] - Christian Romney interviews Jarrod Taylor from the Datomic team * https://getsmarterandmakestuff.com/2021/06/06/podcast-episode-005-michael-fogus/[Get Smarter and Make Stuff] - Craig Andera interviews Michael Fogus from the Clojure core team -* https://anchor.fm/lostinlambduhhs/episodes/puredanger-Alex-Miller--Clojures-Cool-dad-e12botj[Lost in Lambduhhs] - Jordan Miller interviews Alex Miller from the Clojure core team +* link:++https://anchor.fm/lostinlambduhhs/episodes/puredanger-Alex-Miller--Clojures-Cool-dad-e12botj++[Lost in Lambduhhs] - Jordan Miller interviews Alex Miller from the Clojure core team * https://clojurescriptpodcast.com/[ClojureScript Podcast] - Jacek Schae interviews Tommi Reiman about Malli * https://soundcloud.com/defn-771544745/72-chris-badahdah-from-phoenix[defn] - Vijay Kiran and Ray McDermott interview Chris Badahdah about Portal diff --git a/content/news/2021/06/25/deref.adoc b/content/news/2021/06/25/deref.adoc index 1e93efed..ce162ab0 100644 --- a/content/news/2021/06/25/deref.adoc +++ b/content/news/2021/06/25/deref.adoc @@ -40,7 +40,7 @@ Over the last couple years, the https://calva.io/[Calva] team has been putting a * https://danielgregoire.dev/posts/2021-06-18-open-closed-systems-clojure/[Open and Closed Systems with Clojure] - Daniel Gregoire * https://blog.jakubholy.net/2021/simplicity/[What is simplicity in programming and why does it matter?] - Jakub Holý * https://www.michaelnygard.com/blog/2021/06/counterfactuals-are-not-causality/[Counterfactuals are not Causality] - Michael Nygard - not about Clojure but worth a read! -* https://robhaisfield.com/notes/how-i'm-learning-clojure[How I'm learning Clojure] - Rob Haisfield +* link:++https://robhaisfield.com/notes/how-i'm-learning-clojure++[How I'm learning Clojure] - Rob Haisfield * https://ostash.dev/posts/2021-06-18-clojure-metadata/[Clojure metadata] - Roman Ostash * https://ostash.dev/posts/2021-06-24-edn-data-notation/[Data notation in Clojure] - Roman Ostash * https://blog.jakubholy.net/2021/specific-vs-general-cryogen/[Specific vs. general: Which is better?] - Jakub Holý diff --git a/content/news/2021/10/08/deref.adoc b/content/news/2021/10/08/deref.adoc index aaa0c8df..30d4d10c 100644 --- a/content/news/2021/10/08/deref.adoc +++ b/content/news/2021/10/08/deref.adoc @@ -42,7 +42,7 @@ I've been working on several things, but one ongoing thing we're exploring is so * https://www.cognitect.com/cognicast/162[Cognicast] - Craig Andera * https://www.therepl.net/episodes/42/[The REPL] - Faster JSON parsing with Erik Assum -* https://anchor.fm/lostinlambduhhs/episodes/lambduhh--Jordan-Miller-I-e185vtp[:lambduhh (= Jordan Miller "I" )] - Jordan Miller +* link:++https://anchor.fm/lostinlambduhhs/episodes/lambduhh--Jordan-Miller-I-e185vtp++[:lambduhh (= Jordan Miller "I" )] - Jordan Miller * https://clojurescriptpodcast.com/[ClojureScript podcast] - Config with Alexander Yakushev * https://lispcast.com/the-humble-programmer/[The Humble Programmer] - Eric Normand * https://lispcast.com/programmer-as-navigator/[Programmer as Navigator] - Eric Normand diff --git a/content/news/2022/05/27/deref.adoc b/content/news/2022/05/27/deref.adoc index 601ff690..4f111c54 100644 --- a/content/news/2022/05/27/deref.adoc +++ b/content/news/2022/05/27/deref.adoc @@ -12,7 +12,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure * https://soundcloud.com/defn-771544745/84-debbie-and-wilker-lucio[#84 - Debbie and Wilker Lúcio] - defn podcast * https://soundcloud.com/clojurestream/nbb-with-michiel-borkent[E71 nbb with Michiel Borkent] - ClojureStream Podcast * https://www.youtube.com/watch?v=AvtSFWT5rHs[Clojure Transducers: optimizing my submission to Steve Yegge's farmer/dog/chicken/grain challenge] - Fred Overflow -* https://anchor.fm/lostinlambduhhs/episodes/ray-mcdermott-Has-birthed--a-repl-acement-e1iuoom[:ray-mcdermott (Has birthed, a repl-acement??)] - Lost in Lambduhhs +* link:++https://anchor.fm/lostinlambduhhs/episodes/ray-mcdermott-Has-birthed--a-repl-acement-e1iuoom++[:ray-mcdermott (Has birthed, a repl-acement??)] - Lost in Lambduhhs == Blogs diff --git a/content/news/2022/09/09/deref.adoc b/content/news/2022/09/09/deref.adoc index 79095e24..42fa9f04 100644 --- a/content/news/2022/09/09/deref.adoc +++ b/content/news/2022/09/09/deref.adoc @@ -15,7 +15,7 @@ I will mention the Clojurists Together https://www.clojuriststogether.org/news/q == Podcasts and videos -* https://anchor.fm/lostinlambduhhs/episodes/janet-a-carr-Ms--Free-lance-a-lot-frees-her-SaaSy-thoughts-e1niuf3[:janet-a-carr (Ms. Free-lance-a-lot frees her SaaSy thoughts)] - Lost in Lambduhhs by Jordan Miller +* link:++https://anchor.fm/lostinlambduhhs/episodes/janet-a-carr-Ms--Free-lance-a-lot-frees-her-SaaSy-thoughts-e1niuf3++[:janet-a-carr (Ms. Free-lance-a-lot frees her SaaSy thoughts)] - Lost in Lambduhhs by Jordan Miller * https://www.youtube.com/watch?v=ARqU40IHiwo[Starting a fresh Clojure project with Neovim REPL driven development] - Oliver Caldwell * https://www.youtube.com/watch?v=QTgdoZ1LSzk[Clojure visual-tools meeting 11: tooling for learning resources, a peek into Data Rabbit] - Sci Cloj * https://www.youtube.com/watch?v=pImaXoTPWWA[Transform MS Office into Cloud-savvy Linked Data Microservices With Clojure on .NET (by Bob Calco)] - London Clojurians diff --git a/content/news/2023/11/10/deref.adoc b/content/news/2023/11/10/deref.adoc index ecd9aa84..ee4bd7cf 100644 --- a/content/news/2023/11/10/deref.adoc +++ b/content/news/2023/11/10/deref.adoc @@ -26,7 +26,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure New releases and tools this week: * https://github.com/oliyh/carmine-streams[carmine-streams] 0.2.2 - Utility functions for working with Redis streams in carmine -* https://github.com/overtone/overtone[overtone] https://github.com/overtone/overtone/blob/master/CHANGELOG.md#0110-2023-11-02--2907605ba[0.11.0] - Collaborative Programmable Music +* https://github.com/overtone/overtone[overtone] link:++https://github.com/overtone/overtone/blob/master/CHANGELOG.md#0110-2023-11-02--2907605ba++[0.11.0] - Collaborative Programmable Music * https://github.com/cnuernber/ham-fisted[ham-fisted] https://github.com/cnuernber/ham-fisted/blob/master/CHANGELOG.md#2011[2.010] - High performance HAMT * https://github.com/alexander-yakushev/compliment[compliment] https://github.com/alexander-yakushev/compliment/blob/master/CHANGELOG.md#050-2023-11-08[0.5.0] - Clojure completion library that you deserve * https://github.com/zmedelis/hfds-clj[hfds-clj] 2023.11.05 - Access to HuggingFace datasets via Clojure diff --git a/content/news/2023/11/17/deref.adoc b/content/news/2023/11/17/deref.adoc index 14315f49..651633c6 100644 --- a/content/news/2023/11/17/deref.adoc +++ b/content/news/2023/11/17/deref.adoc @@ -30,7 +30,7 @@ New releases and tools this week: * https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md#0448-2023-11-17[0.4.48] - ClojureScript syntax to JavaScript compiler * https://github.com/behrica/msal-helper[msal-helper] - Just a bit of re-usable code to obtain and cache identity tokens comming from Azure Identtity -* https://github.com/grzm/awyeah-api[awyeah-api] https://github.com/grzm/awyeah-api/blob/main/CHANGES.markdown#0882--5ecad02--2023-11-14[0.8.82] - Cognitect's aws-api for babashka +* https://github.com/grzm/awyeah-api[awyeah-api] link:++https://github.com/grzm/awyeah-api/blob/main/CHANGES.markdown#0882--5ecad02--2023-11-14++[0.8.82] - Cognitect's aws-api for babashka * https://github.com/taoensso/tempel[tempel] https://github.com/taoensso/tempel/releases/tag/v1.0.0-alpha1[1.0.0-alpha1] - Data security framework for Clojure * https://github.com/fractl-io/fractl[fractl] 0.4.7 - Generative AI-powered Programming Language * https://github.com/quil/quil[quil] https://github.com/quil/quil/blob/master/RELEASE-NOTES.md#431323[4.3.1323] - Quil diff --git a/content/news/2023/12/08/deref.adoc b/content/news/2023/12/08/deref.adoc index 501377da..455699d0 100644 --- a/content/news/2023/12/08/deref.adoc +++ b/content/news/2023/12/08/deref.adoc @@ -36,7 +36,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure New releases and tools this week: -* https://github.com/grzm/awyeah-api[awyeah-api] https://github.com/grzm/awyeah-api/blob/main/CHANGES.markdown#0884--e551334--2023-12-02[0.8.84] - Cognitect's aws-api for babashka +* https://github.com/grzm/awyeah-api[awyeah-api] link:++https://github.com/grzm/awyeah-api/blob/main/CHANGES.markdown#0884--e551334--2023-12-02++[0.8.84] - Cognitect's aws-api for babashka * https://github.com/eval/deps-try[deps-try] https://github.com/eval/deps-try/blob/master/CHANGELOG.md#v0100-2023-12-04[0.10.0] - Try out Clojure libraries via rebel-readline * https://github.com/raystubbs/zero[zero] - Build web components in CLJS * https://github.com/SURFnet/apie[apie] 0.1.0 - Apie 🙈 OpenAPI Service Validator diff --git a/content/news/2024/02/02/deref.adoc b/content/news/2024/02/02/deref.adoc index 4fbfe801..3ee47349 100644 --- a/content/news/2024/02/02/deref.adoc +++ b/content/news/2024/02/02/deref.adoc @@ -38,14 +38,14 @@ New releases and tools this week: * https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md#1424[1.4.24] - Configurable EDN/Clojure parser with location metadata * https://github.com/mpenet/hirundo[hirundo] 0.1.31 - Helidon 4.x RING adapter - using loom/java21+ * https://github.com/SURFnet/apie[apie] https://github.com/SURFnet/apie/blob/main/changelog.md#v020[0.2.0] - OpenAPI Service Validator -* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md#08692--2024-01-31[0.8.692] - AWS, data driven +* https://github.com/cognitect-labs/aws-api[aws-api] link:++https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md#08692--2024-01-31++[0.8.692] - AWS, data driven * https://github.com/clj-commons/marginalia[marginalia] https://github.com/clj-commons/marginalia/releases/tag/v0.9.2[0.9.2] - Ultra-lightweight literate programming for clojure inspired by docco * https://github.com/clj-commons/lein-marginalia[lein-marginalia] 0.9.2 - A Marginalia plugin to Leiningen * https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2024.02.01-11.01.59[2024.02.01-11.01.59] - Clojure & ClojureScript Language Server (LSP) implementation * https://github.com/mynomoto/sci-koans[sci-koans] - A port of Clojurescript koans to SCI translated to Portuguese * https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md#2-alpha77---2024-02-02[2-alpha77] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming * https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md#12180-2024-01-29[1.2.180] - Scripting in Clojure on Node.js using SCI -* https://github.com/kbosompem/bb-excel[bb-excel] https://github.com/kbosompem/bb-excel/blob/main/CHANGELOG.md#011--2024-02-01[0.1.1] - Read Excel Files in babashka scripts +* https://github.com/kbosompem/bb-excel[bb-excel] link:++https://github.com/kbosompem/bb-excel/blob/main/CHANGELOG.md#011--2024-02-01++[0.1.1] - Read Excel Files in babashka scripts * https://github.com/imrekoszo/polylith-kaocha[polylith-kaocha] https://github.com/imrekoszo/polylith-kaocha/releases/tag/v0.8.4[0.8.4] - Kaocha-based test runner for Polylith * https://github.com/babashka/json[json] https://github.com/babashka/json/blob/main/CHANGELOG.md#016[0.1.6] - JSON abstraction library * https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md#version-080[0.8.0] - A data driven description of software architecture based on UML and the C4 model diff --git a/content/news/2024/02/26/deref.adoc b/content/news/2024/02/26/deref.adoc index ccd90155..c1241319 100644 --- a/content/news/2024/02/26/deref.adoc +++ b/content/news/2024/02/26/deref.adoc @@ -44,7 +44,7 @@ New releases and tools this week: * https://github.com/polyfy/polylith[polylith] https://github.com/polyfy/polylith/releases/tag/v0.2.19[0.2.19] - A tool used to develop Polylith based architectures in Clojure * https://github.com/fulcrologic/guardrails[guardrails] 1.2.3 - Efficient, hassle-free function call validation with a concise inline syntax for clojure.spec and Malli * https://github.com/replikativ/mesalog[mesalog] 0.2.253 - CSV data loader for Datalog databases -* https://github.com/lambdaisland/cli[cli] https://github.com/lambdaisland/cli/blob/main/CHANGELOG.md#0424-2024-02-17--5a1e316[0.4.24] - Opinionated command line argument handling, with excellent support for subcommands +* https://github.com/lambdaisland/cli[cli] link:++https://github.com/lambdaisland/cli/blob/main/CHANGELOG.md#0424-2024-02-17--5a1e316++[0.4.24] - Opinionated command line argument handling, with excellent support for subcommands * https://github.com/lambdaisland/deep-diff2[deep-diff2] https://github.com/lambdaisland/deep-diff2/releases/tag/v2.11.216[2.11.216] - Deep diff Clojure data structures and pretty print the result * https://github.com/tonsky/clj-reload[clj-reload] https://github.com/tonsky/clj-reload/blob/main/CHANGELOG.md#013---feb-21-2024[0.1.3] - Smarter way to reload Clojure code * https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md#013[0.1.3] - A fast PostgreSQL driver for Clojure diff --git a/content/news/2024/06/01/deref.adoc b/content/news/2024/06/01/deref.adoc index a2e822c6..46dbe741 100644 --- a/content/news/2024/06/01/deref.adoc +++ b/content/news/2024/06/01/deref.adoc @@ -9,7 +9,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure == Podcasts and videos -* https://podcasters.spotify.com/pod/show/lostinlambduhhs/episodes/arne-brasseur-tea--travel--taoism-and-HoC-e2kbq1p[:arne-brasseur (tea, travel, taoism and HoC)] - Lost in Lambduhhs +* link:++https://podcasters.spotify.com/pod/show/lostinlambduhhs/episodes/arne-brasseur-tea--travel--taoism-and-HoC-e2kbq1p++[:arne-brasseur (tea, travel, taoism and HoC)] - Lost in Lambduhhs * https://www.youtube.com/watch?v=EvAFEC6n7NI[FDB - a reactive database environment for your files (by Filipe Silva)] - London Clojurians == Blogs, articles, and projects diff --git a/content/news/2024/07/17/deref.adoc b/content/news/2024/07/17/deref.adoc index f93dc922..97f7dc93 100644 --- a/content/news/2024/07/17/deref.adoc +++ b/content/news/2024/07/17/deref.adoc @@ -12,7 +12,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure * https://www.youtube.com/watch?v=XKHFDncWFTI[Clojure visual-tools meeting 25 - keg-party & HTMX] - Sci Cloj * https://www.youtube.com/watch?v=eBf7qb-97Bs[Pedestal 9 – API that does nothing] - Clojure Diary * https://www.youtube.com/watch?v=S8N5je3nN0c[Coding Injee – First steps] - Clojure Diary -* https://podcasters.spotify.com/pod/show/lostinlambduhhs/episodes/sophia-velten-category-theory--monads--kung-fu-e2lvg8b[:sophia-velten (category theory, monads, kung-fu) by Lost in Lambduhhs] - LiLpodcast +* link:++https://podcasters.spotify.com/pod/show/lostinlambduhhs/episodes/sophia-velten-category-theory--monads--kung-fu-e2lvg8b++[:sophia-velten (category theory, monads, kung-fu) by Lost in Lambduhhs] - LiLpodcast * https://www.youtube.com/watch?v=u7dtFGL4Sgg[Meetup: Collaborative Learning – Sente] - Los Angeles Clojure Users Group == Blogs, articles, and projects diff --git a/content/news/2024/10/11/deref.adoc b/content/news/2024/10/11/deref.adoc index 95afa968..d633d88a 100644 --- a/content/news/2024/10/11/deref.adoc +++ b/content/news/2024/10/11/deref.adoc @@ -20,7 +20,7 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure * https://scicloj.github.io/blog/clojurists-together-project-scicloj-community-building-september-2024-update/[Clojurists Together project - Scicloj community building - September 2024 update] - Daniel Slutsky * https://biffweb.com/p/rocksdb-indexes-yakread/[RocksDB indexes are done, open-sourcing Yakread next] - Jacob O'Bryant * https://andersmurphy.com/2024/10/07/clojure-synchronous-server-sent-events-with-virtual-threads-and-channels.html[Clojure: Synchronous server sent events with virtual threads and channels] - Anders Murphy -* https://www.ovistoica.com/blog/20241009T084633--the-best-way-to-handle-svg-icons-in-fullstack-clojure-project__blog_clojure_clojurescript_web[The Best Way To Handle SVG Icons in FullStack Clojure Project] - Ovi Stoica +* link:++https://www.ovistoica.com/blog/20241009T084633--the-best-way-to-handle-svg-icons-in-fullstack-clojure-project__blog_clojure_clojurescript_web++[The Best Way To Handle SVG Icons in FullStack Clojure Project] - Ovi Stoica == Libraries and Tools diff --git a/content/news/2024/12/06/deref.adoc b/content/news/2024/12/06/deref.adoc new file mode 100644 index 00000000..daa60c84 --- /dev/null +++ b/content/news/2024/12/06/deref.adoc @@ -0,0 +1,43 @@ += Clojure Deref (Dec 6, 2024) +Alex Miller +2024-12-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.freshcodeit.com/podcast/we-are-writing-in-clojure[Episode 1: Now We are Writing in Clojure] - Clojure in Product +* https://www.youtube.com/watch?v=CsfRxg5EOuY[Clojure Corner: Interview with Chris Nuernberger] - Flexiana +* https://vimeo.com/1035819201[Apropos 2024-12-03] - Apropos Clojure +* https://www.youtube.com/watch?v=O2qgApg-Fxo[Livecode ASMR | Clojure | Emacs | Advent of Code | day 3 (first time)] - faster-than-light-memes +* https://www.youtube.com/watch?v=fLUZJfIiWHE[Learn Clojure - dotimes] - Clojure Diary +* https://www.youtube.com/watch?v=Ya62VpbZIso[Testing ring handlers while using non default port] - Clojure Diary + +== Blogs, articles, and projects + +* https://clojure.org/news/2024/12/02/state-of-clojure-2024[State of Clojure 2024 Results] - Alex Miller +* https://narimiran.github.io/aoc2024/[AoC 2024 in Clojure (Clerk notebooks)] - narimiran +* https://emil0r.com/posts/2024-11-29-replicant/[Testing out replicant] - Emil Bengtsson +* https://jank-lang.org/blog/2024-11-29-llvm-ir/[jank is now running on LLVM IR] - Jeaye Wilkerson +* https://clojure-diary.gitlab.io/2024/12/01/clojure-is-really-nice-to-write.html[Clojure is really nice to write] - Karthikeyan A K + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/noahtheduke/clein[clein] https://github.com/NoahTheDuke/clein/blob/main/CHANGELOG.md[0.3.1] - Build and deploy your deps.edn projects with ease! +* https://git.sr.ht/~hiredman/machinate[machinate] 0.0.79 - a new new concurrent ml in clojure +* https://github.com/nnichols/clojure-lint-action[clojure-lint-action] https://github.com/nnichols/clojure-lint-action/releases/tag/v3[3] - A GitHub Action that lints clojure files with clj-kondo and generates comments with reviewdog on pull requests +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.711] - AWS, data driven +* https://github.com/ikappaki/basilisp-kernel[basilisp-kernel] https://github.com/ikappaki/basilisp-kernel/blob/main/CHANGELOG.md[1.2.0] - A Jupyter kernel for Basilisp, a Clojure compatible dialect implemented in Python +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.129] - Light-weight ClojureScript dialect +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.34.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://flamebin.dev[Flamebin] - Pastebin for your flamegraphs 🔥📈 +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta25] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta1.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.967] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/releases/tag/v1.16.1[1.16.1] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.23] - File system utility library for Clojure \ No newline at end of file diff --git a/content/news/2024/12/12/deref.adoc b/content/news/2024/12/12/deref.adoc new file mode 100644 index 00000000..8a820831 --- /dev/null +++ b/content/news/2024/12/12/deref.adoc @@ -0,0 +1,39 @@ += Clojure Deref (Dec 12, 2024) +Alex Miller +2024-12-12 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://open.spotify.com/episode/7L0UnySfPmf3kao3K1IFtF[Episode 2: We choose the best tool for the job, with Adam Tornhill, CodeScene] - Clojure in Product +* https://www.youtube.com/watch?v=WUU46HcrP3Q[State Management 101 with ClojureDart and Flutter 🚀] - ClojureDart + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/clojurists-together-2025-long-term-funding-announcement/[Clojurists Together 2025 Long-Term Funding Announcement] - Kathy Davis (Clojurists Together) +* https://state-of-clojurescript.com[State of ClojureScript 2024 Survey] - Roman Liutikov +* https://www.patreon.com/posts/117438975[Transparency report: November 2024] - Nikita Prokopov +* https://buttondown.com/tensegritics-curiosities/archive/beyond-swap-encapsulation-sans-abstraction-the/[Beyond `swap!`: Encapsulation sans Abstraction, the Transactor Pattern] - Christophe Grand +* https://github.com/pitch-io/uix/blob/master/DEVLOG.md#november-2024[UIx Devlog: November, 2024] - Roman Liutikov +* https://www.daveliepmann.com/articles/cljd-talk.html[ClojureDart: an experience report] - Dave Liepmann +* https://xtdb.com/blog/the-missing-sql-subqueries[The missing SQL sub-queries] - James Henderson (JUXT) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta2] - A clojure framework for data science +* https://github.com/chr15m/sitefox[sitefox] 0.0.26 - Node + cljs backend web framework +* https://github.com/monkey-projects/oci-vault[oci-vault] 0.2.0 - Access the OCI vault api using Clojure +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.3.0] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/greglook/cljstyle[cljstyle] https://github.com/greglook/cljstyle/releases/tag/0.17.642[0.17.642] - A tool for formatting Clojure code +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.23] - A fast PostgreSQL driver for Clojure +* https://github.com/willcohen/clj-proj[clj-proj] https://github.com/willcohen/clj-proj/blob/main/CHANGELOG.md[0.1.1] - A native (or transpiled) version of PROJ for both the JVM and JS ecosystems +* https://github.com/damn/clojure.gdx.backends.lwjgl3[clojure.gdx.backends.lwjgl3] 1.13.0-0.1 - Clojure API for the libgdx lwjgl3 (desktop) backend +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta1.2] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.3.0] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.3.4[0.3.4] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ \ No newline at end of file diff --git a/content/news/2024/12/20/deref.adoc b/content/news/2024/12/20/deref.adoc new file mode 100644 index 00000000..19968e5a --- /dev/null +++ b/content/news/2024/12/20/deref.adoc @@ -0,0 +1,50 @@ += Clojure Deref (Dec 20, 2024) +Alex Miller +2024-12-20 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=ma1Ie5vgCHQ[Clojure Corner: Interview with Christian Johansen] - Flexiana +* https://www.freshcodeit.com/podcast/once-you-try-clojure-there-is-no-way-back[Episode 3: Once you try Clojure, there is no way back] - Clojure in Product +* https://zencastr.com/z/t7QDS4kE[8f5d5379091d Eric Normand] - defn podcast +* https://www.youtube.com/watch?v=Bf5RzGEpA90[Trying JDK21 Structured Concurrency from Clojure] - Andrey Fadeev +* https://www.youtube.com/watch?v=evmRpr_DEBQ[Get Started with Clojure Programming with Cider | Emacs Tutorial] - Ken Huang +* https://www.youtube.com/watch?v=hpjJJqnkqCw[Easel: A Pure Clojure IDE in the Spirit of Emacs] - phronmophobic +* https://www.youtube.com/watch?v=mUsu6YJAXvk[Why Clojure? No operator precedence!!] - Clojure Diary + + +== Blogs, articles, and projects + +* https://scicloj.github.io/clojure-data-tutorials/projects/ml/llm/index.html[Using LLMs from Clojure] - SciCloj community +* https://emil0r.com/posts/2024-12-16-config-files-generation/[porter - config files generation] - Emil Bengtsson +* https://scicloj.github.io/blog/clojurists-together-project-scicloj-community-building-november-2024-update/[Clojurists Together project - Scicloj community building - November 2024 update] - Daniel Slutsky +* https://fpilluminated.com/deck/252[Fibonacci Function Gallery - Part 1] - Philip Schwarz + + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.7.701 - Facilities for async programming and communication in Clojure +* https://github.com/velio-io/collet[collet] https://github.com/velio-io/collet/releases/tag/v0.1.0[0.1.0] - Collet is a powerful Clojure library designed to simplify the development and execution of data processing pipelines (ETL or ELT) +* https://github.com/roman01la/uix.css[uix.css] https://github.com/roman01la/uix.css/blob/master/CHANGELOG.md[0.2.1] - CSS-in-CLJS library +* https://github.com/roman01la/cljs-react-devtools[cljs-react-devtools] 0.2.0 - React DevTools for ClojureScript wrappers +* https://github.com/and-z/komb[komb] https://github.com/and-z/komb/blob/main/CHANGELOG.md[0.0.1] - A tiny Babashka utility for sorting JSON +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1243[2.6.1243] - Turn Clojure data structures into SQL +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.981] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/scicloj/tablemath[tablemath] https://github.com/scicloj/tablemath/blob/main/CHANGELOG.md[1-alpha2] - Math and statistics modelling with table ergonomics +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta5] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/emil0r/porter[porter] - babashka library for creating config files +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/tonsky/fast-edn[fast-edn] https://github.com/tonsky/fast-edn/blob/main/CHANGELOG.md[1.1.0] - Drop-in replacement for clojure.edn that is 6 times faster +* https://github.com/dpassen/malapropism[malapropism] https://github.com/dpassen/malapropism/releases/tag/0.5.234[0.5.234] - Malli-backed configuration library +* https://github.com/clj-commons/aleph[aleph] https://github.com/clj-commons/aleph/blob/master/CHANGES.md[0.8.2] - Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2024-12-17[2024-12-17] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/metosin/jsonista[jsonista] https://github.com/metosin/jsonista/blob/master/CHANGELOG.md#0312-2024-11-01[0.3.13] - Clojure library for fast JSON encoding and decoding +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2024-12-19[2024-12-19] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/blob/main/CHANGELOG.md[0.6.22] - Execute Clojure(Script) directly from browser script tags via SCI \ No newline at end of file diff --git a/content/news/2025/01/02/deref.adoc b/content/news/2025/01/02/deref.adoc new file mode 100644 index 00000000..f17d641d --- /dev/null +++ b/content/news/2025/01/02/deref.adoc @@ -0,0 +1,63 @@ += Clojure Deref (Jan 2, 2025) +Alex Miller +2025-01-02 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=0O5kS0Rq50E[Building Tailwind CSS for Clojure Hiccup Backend (Updated Clojure Service Template)] - Andrey Fadeev +* https://www.youtube.com/watch?v=Z0Re2rySl6E[Specifying port in ring app] - Clojure Diary + +== Blogs, articles, and projects + +* https://compiler-research.org/blogs/jank_intro/[The jank programming language] - Jeaye Wilkerson +* https://slipset.github.io/posts/small-fns-at-the-repl?1[Small Fns At The Repl] - Erik Assum +* https://metaredux.com/posts/2024/12/23/state-of-cider-2024.html[State of CIDER Survey (2024)] - Bozhidar Batsov +* https://kaepr.github.io/posts/writing-a-c-compiler-in-clojure/[Writing a C Compiler in Clojure] - Shagun Agrawal +* https://oss.toyokumo.co.jp[活動について] - Toyokumo, Inc +* https://blog.michielborkent.nl/oss-updates-nov-dec-2024.html[OSS updates November and December 2024] - Michiel Borkent +* https://www.patreon.com/posts/transparency-118956984[Transparency report, December 2024] - Nikita Prokopov +* https://www.taoensso.com/news/2024-12-open-source[Open source update] - Peter Taoussanis +* https://codewithkira.com/2024-12-31-clojurists-together-update-nov-dec-2024.html[OSS Updates November and December 2024] - Kira Howe (McLean) +* https://fnguy.com/RAD_lazy_images.html[Lazy Images in Fulcro RAD] - Alex Sheluchin +* https://www.wedesoft.de/software/2024/12/26/clojure-ruby-python-performance/[Performance comparison of Clojure, Ruby, and Python] - Jan Wedekind + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1495] - Clojure CLI +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta27] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.132] - Light-weight ClojureScript dialect +* https://github.com/fulcrologic/fulcro-inspect[fulcro-inspect] https://github.com/fulcrologic/fulcro-inspect/releases[1.0.3] - A tool for inspecting and debugging Fulcro applications during development +* https://github.com/fulcrologic/fulcro-devtools-remote[fulcro-devtools-remote] 0.2.6 - An adapter for writing development tooling that runs as a Chrome extension or an electron app +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.0 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/babashka/cli[cli] https://github.com/babashka/cli/blob/main/CHANGELOG.md[0.8.62] - Turn Clojure functions into CLIs! +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.723] - AWS, data driven +* https://github.com/scicloj/scicloj.ml.tribuo[scicloj.ml.tribuo] https://github.com/scicloj/scicloj.ml.tribuo/blob/master/CHANGELOG.md[0.1.6] - Use Tribuo ML model in metamorph.ml +* https://github.com/scicloj/scicloj.ml.smile[scicloj.ml.smile] https://github.com/scicloj/scicloj.ml.smile/blob/main/CHANGELOG.md[7.4.4] - A Smile models plugin for metamorh.ml +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta4] - A clojure framework for data science +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.8 - A Statechart library for CLJ(S) +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.11.1] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/nnichols/clojure-lint-action[clojure-lint-action] https://github.com/nnichols/clojure-lint-action/releases/tag/v4[4] - A GitHub Action that lints clojure files with clj-kondo and generates comments with reviewdog on pull requests +* https://github.com/babashka/tools-deps-native[tools-deps-native] https://github.com/babashka/tools-deps-native/blob/master/CHANGELOG.md#v016[0.1.7] - Run tools.deps as a native binary +* https://github.com/liquidz/elin[elin] 2025.1.0-alpha - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/babashka/pod-babashka-go-sqlite3[pod-babashka-go-sqlite3] https://github.com/babashka/pod-babashka-go-sqlite3/blob/main/CHANGELOG.md[0.2.7] - A babashka pod for interacting with sqlite3 +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta6] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/fulcro-rad[fulcro-rad] 1.6.9 - Fulcro Rapid Application Development +* https://github.com/fulcrologic/fulcro-rad-datomic[fulcro-rad-datomic] 1.5.5 - Datomic database support plugin for Fulcro RAD +* https://github.com/fulcrologic/fulcro-websockets[fulcro-websockets] 3.4.0 - A Pluggable Remote for Fulcro 3 that uses Websockets +* https://github.com/nrepl/piggieback[piggieback] https://github.com/nrepl/piggieback/blob/master/CHANGES.md[0.6.0] - nREPL support for ClojureScript REPLs +* https://github.com/HendrikLevering/cljs-eval[cljs-eval] https://github.com/HendrikLevering/cljs-eval/blob/main/CHANGELOG.md[0.1.2] - Eval CLJS code directly from CLJ +* https://github.com/lambdaisland/config[config] https://github.com/lambdaisland/config/blob/main/CHANGELOG.md[0.4.17] - Clojure configuration library +* https://github.com/damn/clojure.gdx[clojure.gdx] - Desktop/Android/iOS Clojure game development framework +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.196] - Native, fast starting Clojure interpreter for scripting +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[1.0.0-RC2] - Structured telemetry library for Clojure/Script +* https://github.com/vlaaad/reveal[reveal] 1.3.284 - Reveal: Read Eval Visualize Loop for Clojure +* https://github.com/Wall-Brew-Co/clj-xml[clj-xml] https://github.com/Wall-Brew-Co/clj-xml/blob/master/CHANGELOG.md[1.12.0] - The missing link between clj and xml +* https://github.com/taoensso/sente[sente] https://github.com/taoensso/sente/blob/master/CHANGELOG.md[1.20.0] - Realtime web comms library for Clojure/Script +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.1.0] - A debugger for Clojure and ClojureScript with some unique features \ No newline at end of file diff --git a/content/news/2025/01/09/deref.adoc b/content/news/2025/01/09/deref.adoc new file mode 100644 index 00000000..6e24e076 --- /dev/null +++ b/content/news/2025/01/09/deref.adoc @@ -0,0 +1,44 @@ += Clojure Deref (Jan 9, 2025) +Alex Miller +2025-01-09 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.freshcodeit.com/podcast/is-it-easy-to-manage-a-team[Episode 04: Is it easy to manage a team?] - Clojure in Product +* https://www.youtube.com/watch?v=gBt_tBoy1kE[ClojureScript Tiny Slides] - mccormix +* https://www.youtube.com/watch?v=u_UchyyRzOE[Clojure visual-tools meeting 27 - Workflow Demos 1: Emacs, CIDER, VSCode Calva, Zulip] - Sci Cloj +* https://www.youtube.com/watch?v=2VOXxG_7VGk[Clj visual-tools 28- Workflow Demos 2: CIDER, Portal, Snitch, clj-reload, Cursive, Conjure, Parinfer] - Sci Cloj +* https://www.youtube.com/watch?v=FxUVaytRlxk[Printing Color in Terminal with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://clojureverse.org/t/scicloj-is-looking-for-community-organizers/11123[Scicloj is looking for community organizers] - Daniel Slutsky +* https://blog.404.taipei/making-html-reactive-using-signaali[Making HTML reactive using Signaali] - Vincent Cantin +* https://bytes.vadelabs.com/doing-hard-things-while-living-life-why-we-built-vade-studio-in-clojure/[Doing Hard Things While Living Life: Why We Built Vade Studio in Clojure] - Pragyan Tripathi +* https://electric.hyperfiddle.net/blog/y20250106_threaddump_part1[Internal tools and Electric Clojure, Part 1] - Dustin Getz +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/alex-miller-1[Speaker Interview with Alex Miller] - Functional Conf 2025 +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/amogh-talpallikar[Speaker Interview with Amogh Talpallikar] - Functional Conf 2025 +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/aditya-athalye-1[Speaker Interview with Aditya Athalye] - Functional Conf 2025 + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/pfeodrippe/vybe[vybe] https://github.com/pfeodrippe/vybe/releases/tag/v0.7.469[0.7.469] - A Clojure framework for game dev (alpha) +* https://github.com/metosin/signaali[signaali] https://github.com/metosin/signaali/blob/main/CHANGELOG.md[0.1.0] - A small, portable & flexible implementation of signals +* https://github.com/s-expresso/clojobuf[clojobuf] 0.2.0 - clojure(script) library that dynamically interprets protobuf files +* https://github.com/chr15m/clojurescript-tiny-slides[clojurescript-tiny-slides] - Minimal presentation slides for ClojureScript +* https://github.com/tonsky/fast-edn[fast-edn] https://github.com/tonsky/fast-edn/blob/main/CHANGELOG.md[1.1.2] - Drop-in replacement for clojure.edn that is 6 times faster +* https://github.com/adityaathalye/clojure-multiproject-example[clojure-multiproject-example] - A grug-brained stab at layout and tooling to conveniently develop many Clojure projects in a single source repo +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.6.0] - Embedded high-precision Clojure profiler +* https://github.com/KingMob/TrueGrit[TrueGrit] https://github.com/KingMob/TrueGrit/blob/main/CHANGELOG.adoc[2.3.35] - A data-driven, functionally-oriented, idiomatic Clojure library for circuit breakers, bulkheads, retries, rate limiters, timeouts, etc. +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.35.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta7] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.1 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.24] - File system utility library for Clojure +* https://github.com/PEZ/languages-visualizations[languages-visualizations] - A Languages visualization experiment \ No newline at end of file diff --git a/content/news/2025/01/17/deref.adoc b/content/news/2025/01/17/deref.adoc new file mode 100644 index 00000000..372836e4 --- /dev/null +++ b/content/news/2025/01/17/deref.adoc @@ -0,0 +1,49 @@ += Clojure Deref (Jan 17, 2025) +Alex Miller +2025-01-17 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=FC2PBTFUAZA[Apropos 2025-01-14] - apropos clojure +* https://www.youtube.com/watch?v=9nY25hwzWRc[Clojure visual-tools 29 - Workflow Demos 3: FlowStorm] - Sci Cloj +* https://www.youtube.com/watch?v=lAmomIESusQ[Content Made Simple Live Stream] - Content Made Simple +* https://www.youtube.com/watch?v=hEF0KzHDN_w[Episode 2: hiccup and some more stuff] - Content Made Simple +* https://www.youtube.com/watch?v=x9dN8CkEy6c[Episode 3 ... upload] - Content Made Simple +* https://www.youtube.com/watch?v=zjLaLXfgY34[Sitefox: Full Stack ClojureScript Tutorial] - mccormix +* https://www.youtube.com/watch?v=tsU74zsNQMc[Where to store your (image) files in Leiningen project, and how to fetch them?] - Clojure Diary + +== Blogs, articles, and projects + +* https://blog.404.taipei/whats-in-a-component[What's in a component] - Vincent Cantin +* https://jank-lang.org/blog/2025-01-10-i-quit-my-job/[I quit my job to work on my programming language] - Jeaye Wilkerson +* https://www.dot.studio/en/notes/case-study-under-whose-command/[Tracing Command Chains Through Time & Location] - DOT • STUDIO +* https://electric.hyperfiddle.net/blog/y20250109_datafy/[Internal tools and Electric Clojure, Part 2] - Dustin Getz +* https://shagunagrawal.me/posts/multiplayer-board-game-in-clojure/[Multiplayer Board Game with Clojure and HTMX] - Shagun Agrawal +* https://lambdaisland.com/blog/2025-01-14-ornament[Ornament] - Laurence Chen +* https://www.mihirdeshpande.com/posts/deepwalk_clojure[Deepwalking in Clojure] - Mihir Deshpande + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/jacobemcken/aws-simple-sign[aws-simple-sign] 2.0.0 - A Clojure library for pre-signing S3 URLs and signing HTTP requests for AWS +* https://git.sr.ht/~hiredman/machinate[machinate] 0.0.119 - a new new concurrent ml in clojure +* https://github.com/filipesilva/gen[gen] 1.0.0 - A CLI tool to generate files and run commands from templates +* https://github.com/bhauman/figwheel-main[figwheel-main] https://github.com/bhauman/figwheel-main/blob/master/CHANGES.md[0.2.20] - Figwheel Main provides tooling for developing ClojureScript applications +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.01.16] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/wilkerlucio/pathom3[pathom3] https://github.com/wilkerlucio/pathom3/blob/main/CHANGELOG.md[2025.01.16-alpha] - Interface with complex data via graph mapping +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.2] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/kind-clerk[kind-clerk] https://github.com/scicloj/kind-clerk/blob/main/CHANGELOG.md[1-alpha9] - An adapter for the Clerk tool to support the Kindly conventions +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta8] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.12 - A Statechart library for CLJ(S) +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1495] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/fulcrologic/fulcro-inspect[fulcro-inspect] https://github.com/fulcrologic/fulcro-inspect/releases[4.0.6] - A tool for inspecting and debugging Fulcro applications during development +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta9] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta5] - A clojure framework for data science +* https://github.com/imrekoszo/polylith-kaocha[polylith-kaocha] https://github.com/imrekoszo/polylith-kaocha/releases/tag/v0.8.6[0.8.6] - Kaocha-based test runner for Polylith +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1267[2.6.1267] - Turn Clojure data structures into SQL diff --git a/content/news/2025/01/23/deref.adoc b/content/news/2025/01/23/deref.adoc new file mode 100644 index 00000000..cb1577a5 --- /dev/null +++ b/content/news/2025/01/23/deref.adoc @@ -0,0 +1,48 @@ += Clojure Deref (Jan 23, 2025) +Alex Miller +2025-01-23 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=C5lsAE2G41c[Clein Bringing a bit of leiningen to deps edn by Noah Bogart] - London Clojurians +* https://www.youtube.com/watch?v=4tbjE0_W-58[Live-reloading Scittle ClojureScript with cljs-josh] - mccormix +* https://www.freshcodeit.com/podcast/the-capacity-to-learn-new-languages[Episode 05: The capacity to learn new languages] - Clojure in Product +* https://www.freshcodeit.com/podcast/discovered-not-the-light-but-the-enlightenment[Episode 06: Discovering Clojure – True enlightenment begins] - Clojure in Product +* https://zencastr.com/z/D1Rt977V[2afd69a4979a Kira Howe] - @defn podcast +* https://www.youtube.com/watch?v=_BvBPN86rQc[The SOLID Principles illustrated using Clojure code examples] - Jan Wedekind + +== Blogs, articles, and projects + +* https://metaredux.com/posts/2025/01/17/a-simpler-way-to-deal-with-java-sources-in-cider.html[A Simpler Way to Deal with Java Sources in CIDER] - Bozhidar Batsov +* https://bytes.vadelabs.com/how-vade-studio-achieves-lightning-fast-static-pages/[Stop Making JavaScript Do Everything - Vade Studio's Secret to Fast Web Pages] - Pragyan Tripathi +* https://ertu.dev/posts/i-made-an-online-shooter-game-in-lisp/[I made a multiplayer shooter game in Lisp] - Ertuğrul Çetin + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/scicloj/wolframite[wolframite] 1.0.0 - An interface between Clojure and Wolfram Language (the language of Mathematica) +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.2[0.1.2] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/filipesilva/gen[gen] 1.0.3 - A CLI tool to generate files and run commands from templates +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.17] - A simple, fast and versatile Datalog database +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.6.0] - pronounced "speckle": a TDD/BDD framework for Clojure +* https://github.com/uncomplicate/clojure-cpp[clojure-cpp] 0.4.0 - Clojure native interop through JavaCPP +* https://github.com/xadecimal/fpipes[fpipes] 1.0.0 - Functional pipe operators inspired by the F# and OCaml |> pipe operator for Clojure +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.31] - A fast PostgreSQL driver for Clojure +* https://github.com/darkleaf/di[di] https://github.com/darkleaf/di/blob/master/CHANGELOG.md[3.3.0] - DI is a dependency injection framework that allows you to define dependencies as cheaply as defining function arguments +* https://github.com/clojure/java.data[java.data] https://github.com/clojure/java.data/blob/master/CHANGELOG.md[1.3.113] - Functions for recursively converting Java beans to Clojure and vice versa +* https://github.com/noahtheduke/clein[clein] https://github.com/NoahTheDuke/clein/blob/main/CHANGELOG.md[0.4.1] - Build and deploy your deps.edn projects with ease! +* https://github.com/babashka/babashka-sql-pods[babashka-sql-pods] https://github.com/babashka/babashka-sql-pods/blob/master/CHANGELOG.md[0.1.3] - Babashka pods for SQL databases +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/blob/develop/CHANGELOG.md[2.6.1270] - Turn Clojure data structures into SQL +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta28] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1495-2] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.5 - Scittle cljs live-reloading server +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.2[0.1.2] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta9.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta5.1] - A clojure framework for data science +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.01.22-23.28.23[2025.01.22-23.28.23] - Clojure & ClojureScript Language Server (LSP) implementation \ No newline at end of file diff --git a/content/news/2025/01/30/deref.adoc b/content/news/2025/01/30/deref.adoc new file mode 100644 index 00000000..b8499219 --- /dev/null +++ b/content/news/2025/01/30/deref.adoc @@ -0,0 +1,56 @@ += Clojure Deref (Jan 30, 2025) +Alex Miller +2025-01-30 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=A7CcTaVC1d4[Clojure core.async Evolution by Alex Miller] - FunctionalConf 2025 +* https://www.youtube.com/watch?v=uj2wGDeOimU[Clojure visual-tools 30 - Workflow Demos 4: LLMs in Emacs for Clojure] - Sci Cloj +* https://www.youtube.com/watch?v=9wN-uBnrxgs[Apropos Clojure 2025-01-28] - apropos clojure +* https://www.youtube.com/watch?v=EoPOAtiqOC4[Episode 4 ... identity] - Content Made Simple +* https://www.youtube.com/watch?v=sVLXi617hEE[Episode 5 ... users] - Content Made Simple +* https://www.freshcodeit.com/podcast/you-should-be-living-in-pain-right[Episode 07: You should be living in pain, right?] - Clojure in Product +* https://www.youtube.com/watch?v=CspQX_R0NbM[Don't fear the storm (by Juan Monetta)] - London Clojurians +* https://www.youtube.com/watch?v=vnvcKtHHMVQ[Noj v2 - getting started - from raw data to a blog post] - Sci Cloj + +== Blogs, articles, and projects + +* https://electric.hyperfiddle.net/blog/y20250123_waveform[On the state space of CRUD apps vs visual tools — Electric Clojure] - Dustin Getz +* https://bogoyavlensky.com/blog/e2e-tests-in-clojure-with-testcontainers/[End-to-end tests in Clojure with Etaoin and Testcontainers] - Andrey Bogoyavlenskiy +* https://fnguy.com/fulcro_statecharts.html[SCXML-Inspired State Charts In Clojure(script)] - Alex Sheluchin +* https://biffweb.com/p/structuring-large-codebases/[Structuring large Clojure codebases with Biff] - Jacob O'Bryant +* https://mauricio.szabo.link/blog/2025/01/29/quick-post-multiple-shadow-cljs-builds-at-the-same-runtime/[Multiple Shadow-CLJS builds at the same runtime] - Maurício Szabo +* https://thenewstack.io/from-c-to-clojure-new-language-promises-best-of-both/[From C++ to Clojure: New Language Promises Best of Both] - Darryl K. Taft + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1501] - Clojure CLI +* https://github.com/juji-io/editscript[editscript] https://github.com/juji-io/editscript/blob/master/CHANGELOG.md[0.6.6] - A library to diff and patch Clojure/ClojureScript data structures +* https://github.com/uncomplicate/neanderthal[neanderthal] https://github.com/uncomplicate/neanderthal/blob/master/CHANGELOG.md#0500[0.52.0] - Fast Clojure Matrix Library +* https://github.com/roman01la/cljs-worklet[cljs-worklet] 0.2.0 - Run ClojureScript functions on a worklet thread in React Native +* https://github.com/darkleaf/hazel[hazel] - POC exploring adaptation of Datomic principles for the frontend +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.0.0] - A collection of utilities that improve Clojure experience +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.994] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/cjohansen/replicant[replicant] 2025.01.29 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/ikappaki/basilisp-blender[basilisp-blender] https://github.com/ikappaki/basilisp-blender/blob/main/CHANGELOG.md[0.4.0] - A library designed to facilitate the execution of Basilisp Clojure code within Blender +* https://github.com/dundalek/stratify[stratify] https://github.com/dundalek/stratify/blob/master/CHANGELOG.md[0.3.0] - Explore and improve architecture of software, visualize structure and dependencies of codebases, calculate code metrics +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.3.1] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.15] - CLIs and subcommands for Clojure or Babashka +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.13 - A Statechart library for CLJ(S) +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.2 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/fulcrologic/fulcro-rad-semantic-ui[fulcro-rad-semantic-ui] 1.4.6 - Semantic UI Rendering Plugin for RAD +* https://github.com/clojure-goes-fast/clj-java-decompiler[clj-java-decompiler] https://github.com/clojure-goes-fast/clj-java-decompiler/blob/master/CHANGELOG.md[0.3.7] - REPL-integrated Clojure-to-Java decompiler +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.15.1] - CLIs and subcommands for Clojure or Babashka +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.485[2.0.485] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1501] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/clj-commons/virgil[virgil] https://github.com/clj-commons/virgil/blob/master/CHANGELOG.md[0.3.2] - Recompile Java code without restarting the REPL +* https://github.com/fogus/lexical-chocolate[lexical-chocolate] https://github.com/fogus/lexical-chocolate/blob/master/CHANGELOG.md[0.0.3] - Provides utilities for building lexical contours +* https://github.com/scicloj/devcontainer-templates[devcontainer-templates] 1.1.2 - Devcontainer templates for Clojure +* https://repo.prod.meissa.de/meissa/dda-backup[dda-backup] 5.3.0 - Backup library \ No newline at end of file diff --git a/content/news/2025/02/06/deref.adoc b/content/news/2025/02/06/deref.adoc new file mode 100644 index 00000000..2fb2455e --- /dev/null +++ b/content/news/2025/02/06/deref.adoc @@ -0,0 +1,42 @@ += Clojure Deref (Feb 6, 2025) +Alex Miller +2025-02-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=A7CcTaVC1d4[Clojure core.async Evolution by Alex Miller #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=YEHVEId-utY[Composing (Clojure) Web Stacks using Functional First Principles by Aditya Athalye #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=X__jCh_Yj9w&t=5s[Rama: the 100x programming platform with functional programming at its core - Nathan Marz #FnConf 25] - ConfEngine +* https://www.youtube.com/watch?v=fgRt0ecWfEE[Clojure Corner: Interview with David Nolen] - Flexiana +* https://www.freshcodeit.com/podcast/clojurescript-is-a-clojure-killer-app[Episode 08: ClojureScript is a Clojure killer app] - Clojure in Product +* https://github.com/fogus/evalive/blob/master/CHANGELOG.md[Clojure Data-recur meeting 7 - R4Clj 1: Introducing R and the Tidyverse] - Sci Cloj +* https://www.youtube.com/watch?v=HstQMB3GU4I[Clojure Atom Internals, AtomicReference and Implementation Details] - Andrey Fadeev +* https://www.youtube.com/watch?v=0b_PPWMp_Ls[Static Site Search written in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.patreon.com/posts/transparency-121265695[Transparency report, January 2025] - Nikita Prokopov +* https://electric.hyperfiddle.net/blog/y20250112_data_browser[Object Browser demo — Internal Tools with Electric Clojure, Part 3] - Dustin Getz +* https://mccormick.cx/news/entries/advantages-of-generating-clojure-with-llms[Advantages of Generating Clojure with LLMs] - Chris McCormick +* https://medium.com/@_jba/classifying-data-for-developers-in-a-hurry-using-llms-569c895ccfb2[Classifying data for developers in a hurry using LLMs] - Julien Bille +* https://martinklepsch.org/posts/one-shot-babashka-cli-scripts[One-Shot Babashka CLI Scripts] - Martin Klepsch + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.730-beta01] - AWS, data driven +* https://github.com/starfederation/datastar[datastar] 1.0.0-beta.3 - The hypermedia framework +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.0] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta10.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta6] - A clojure framework for data science +* https://github.com/bhauman/rebel-readline/tree/master/rebel-readline-nrepl[rebel-readline-nrepl] 0.1.5 - A Clojure library that brings the flexibility of Rebel Readline to your terminal as an nREPL client +* https://github.com/bhauman/rebel-readline[rebel-readline] https://github.com/bhauman/rebel-readline/blob/master/rebel-readline/CHANGELOG.md[0.1.5] - Terminal readline library for Clojure dialects +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.6 - Scittle cljs live-reloading server +* https://github.com/fogus/evalive[evalive] https://github.com/fogus/evalive/blob/master/CHANGELOG.md[1.1.1] - Eval functions and macros +* https://github.com/shipclojure/voice-fn[voice-fn] https://github.com/shipclojure/voice-fn/blob/main/CHANGELOG.md[0.1.2] - A Clojure library for building real-time voice-enabled AI pipelines \ No newline at end of file diff --git a/content/news/2025/02/14/deref.adoc b/content/news/2025/02/14/deref.adoc new file mode 100644 index 00000000..0f07ecfe --- /dev/null +++ b/content/news/2025/02/14/deref.adoc @@ -0,0 +1,56 @@ += Clojure Deref (Feb 14, 2025) +Alex Miller +2025-02-14 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=zkEZykTOlQA[Alex Miller guests on Apropos Clojure 2025-02-11] - apropos clojure +* https://www.youtube.com/watch?v=CZqsg3MzbyU[Piloto Podcast deref-in] - clojure-br +* https://www.youtube.com/watch?v=PlHzTEkjAK4[EP01 - Podcast deref-in] - clojure-br +* https://www.freshcodeit.com/podcast/boundaries-to-do-a-meaningful-work[Episode 09: You need boundaries to do a meaningful work] - Clojure in Product +* https://www.youtube.com/watch?v=mzNBRmZHmD4[Clojure Crash Course 2025: Beginner Friendly] - Andrey Fadeev +* https://www.youtube.com/watch?v=TN11X9z9LjU[My aider AI dev setup] - mccormix +* https://www.youtube.com/watch?v=VCu42vxBkV8[Learn Clojure — Exception Handling] - Clojure Diary +* https://www.youtube.com/watch?v=PCY5PYHv-Uc[Learn Clojure — Dealing with Text files] - Clojure Diary + +== Blogs, articles, and projects + +* https://emil0r.com/posts/2025-02-08-modelling-permissions-in-datomic/[Modelling permissions in Datomic] - Emil Bengtsson +* https://flexiana.com/news/2025/02/side-by-side-datomic-and-postgresql-part-2[Datomic vs PostgreSQL: Time Travel and Historical Data (Part 2)] - Giga Chokheli (Flexiana) +* https://bytes.vadelabs.com/taming-llm-responses-with-instaparse/[Taming LLM Responses with Instaparse] - Pragyan Tripathi +* https://widdindustries.com/blog/revisiting-clojure-donts-concat.html[Revisiting 'Clojure Don'ts : concat] - Henry Widd +* https://yyhh.org/blog/2025/02/achieving-high-throughput-and-low-latency-through-adaptive-asynchronous-transaction/[Achieving High Throughput and Low Latency through Adaptive Asynchronous Transaction] - Huahai Yang +* https://fnguy.com/pathom3_instrumentation.html[Pathom3 Instrumentation] - Alex Sheluchin + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1517] - Clojure CLI +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.7] - Clojure builds as Clojure programs +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.2.2] - The slim way to build Clojure +* https://github.com/phronmophobic/llama.clj[llama.clj] https://github.com/phronmophobic/llama.clj/blob/main/CHANGELOG.md[0.8.6] - Run LLMs locally. A clojure wrapper for llama.cpp +* https://github.com/igrishaev/taggie[taggie] https://github.com/igrishaev/taggie/blob/master/CHANGELOG.md[0.1.0] - Can we gain anything from Clojure tags? +* https://github.com/monkey-projects/aero-ext[aero-ext] 0.3.0 - Extensions to use with the Aero config lib +* https://github.com/scicloj/scicloj.ml.fasttext[scicloj.ml.fasttext] https://github.com/scicloj/scicloj.ml.fasttext/blob/master/CHANGELOG.md[0.2] - clj-djl models for metamorph.ml and scicloj.ml +* https://github.com/brettatoms/zodiac[zodiac] https://github.com/brettatoms/zodiac/blob/master/CHANGELOG.md[0.4.58] - A simple web framework for Clojure +* https://github.com/brettatoms/zodiac-assets[zodiac-assets] https://github.com/brettatoms/zodiac-assets/blob/master/CHANGELOG.md[0.2.22] - A Zodiac extension to help manage static assets +* https://github.com/brettatoms/zodiac-sql[zodiac-sql] https://github.com/brettatoms/zodiac-sql/blob/master/CHANGELOG.md[0.1.8] - A Zodiac extension for connecting to a SQL database +* https://github.com/jacobemcken/aws-simple-sign[aws-simple-sign] https://github.com/jacobemcken/aws-simple-sign/releases/tag/v2.1.0[2.1.0] - A Clojure library for pre-signing S3 URLs and signing HTTP requests for AWS +* https://github.com/clojure-lsp/clojure-lsp-intellij[clojure-lsp-intellij] https://github.com/clojure-lsp/clojure-lsp-intellij/blob/master/CHANGELOG.md#210[3.0.0] - Intellij Plugin for Clojure & ClojureScript development via Language Server (LSP) made in Clojure +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.0.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/emil0r/porter[porter] - babashka library for creating config files +* https://git.sr.ht/~hiredman/machinate[machinate] https://git.sr.ht/~hiredman/machinate/tree/master/item/CHANGELOG.md[0.0.126] - a new new concurrent ml in clojure +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.02.07-16.11.24[2025.02.07-16.11.24] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.1.1] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.6.1] - Embedded high-precision Clojure profiler +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1517] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.134] - Light-weight ClojureScript dialect +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] 0.0.2 - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta10.2] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/borkdude/rewrite-edn[rewrite-edn] https://github.com/borkdude/rewrite-edn/blob/master/CHANGELOG.md[0.4.9] - Utility lib on top of rewrite-clj with common operations to update EDN while preserving whitespace and comments \ No newline at end of file diff --git a/content/news/2025/02/21/deref.adoc b/content/news/2025/02/21/deref.adoc new file mode 100644 index 00000000..f502b899 --- /dev/null +++ b/content/news/2025/02/21/deref.adoc @@ -0,0 +1,46 @@ += Clojure Deref (Feb 21, 2025) +Alex Miller +2025-02-21 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=xg0VjqgSxCw[Clojure Corner: Interview with Magnar Sveen] - Flexiana +* https://www.freshcodeit.com/podcast/open-source-like-eyes-looking-at-it[Episode 10: Open-source is like all eyes looking at it] - Clojure in Product +* https://www.youtube.com/live/_zOMH26d24c[[EP02] deref-in] - clojure-br +* https://www.youtube.com/watch?v=Qyf15Rrzr_o[Intro to Collet. A low-code ETL management tool (by Sergei Tkachenko)] - London Clojurians +* https://www.youtube.com/watch?v=vSaOweJg4BA[Learn Clojure — edn files] - Clojure Diary +* https://www.youtube.com/watch?v=sqpkZd5FlEE[Learn Clojure — CSV Files] - Clojure Diary + +== Blogs, articles, and projects + +* https://elementsofclojure.com[Elements of Clojure] - Zachary Tellman +* https://shagunagrawal.me/posts/making-a-simple-datalog-engine-in-clojure/[Making a simple Datalog Engine in Clojure] - Shagun Agrawal +* https://gaiwan.co/blog/why-clojure/[Why Clojure?] - Arne Brasseur (Gaiwan) +* https://www.jvm-weekly.com/p/the-state-of-scala-and-clojure-surveys[The State of Scala & Clojure Surveys: How is functional programming on JVM doing - JVM Weekly vol. 119] - Artur Skowronski +* https://lambdaisland.com/blog/2025-02-18-on-extensibility[On Extensibility] - Laurence Chen +* https://clojure-goes-fast.com/blog/tracking-memory-usage/[Tracking memory usage with clj-memory-meter.trace] - Oleksandr Yakushev + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.8.711-beta1 - Facilities for async programming and communication in Clojure +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.1.3] - Clojure SDK for the Stripe API +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/releases/tag/v1.17.0[1.17] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/gersak/toddler[toddler] 0.9.1 - UI library based on lilactown/helix and shadow-css libraries +* https://github.com/clojure-goes-fast/clj-memory-meter[clj-memory-meter] https://github.com/clojure-goes-fast/clj-memory-meter/blob/master/CHANGELOG.md[0.4.0] - Measure object memory consumption in Clojure +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.20] - A simple, fast and versatile Datalog database +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.02.20] - Static analyzer and linter for Clojure code that sparks joy +* https://repo.prod.meissa.de/meissa/c4k-jitsi[c4k-jitsi] 3.0.1 - convention 4 kubernetes +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta29] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta15] - A small library for defining how different kinds of things should be rendered +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] https://github.com/fogus/reinen-vernunft/blob/main/CHANGELOG.md[0.0.3] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta11] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta7] - A clojure framework for data science +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.1.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/roman01la/uix-cloudflare-template[uix-cloudflare-template] - Template project with UIx web app hosted on Cloudflare workers with REST API served from Cloudflare D1 (SQLite) \ No newline at end of file diff --git a/content/news/2025/02/27/deref.adoc b/content/news/2025/02/27/deref.adoc new file mode 100644 index 00000000..d19150fb --- /dev/null +++ b/content/news/2025/02/27/deref.adoc @@ -0,0 +1,45 @@ += Clojure Deref (Feb 27, 2025) +Alex Miller +2025-02-27 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=HwoGMhIx5w0[Clojure AI Meetup 1: voice-fn - real-time voice-enabled AI pipelines] - Sci Cloj +* https://www.youtube.com/watch?v=lcRqEYC-IXo[clj-depend: Validando a arquitetura da sua aplicação | Fabio Domingues] - clojure-br +* https://www.youtube.com/watch?v=MF-A46cTYUY[Alex Engelberg guests on Apropos Clojure 2025-02-25] - apropos clojure +* https://www.youtube.com/live/ut3Q4Rns5IQ[[EP.03] deref-in] - clojure-br +* https://www.youtube.com/watch?v=gDNxF_kK1z8[Ancestry of Polymorphism in Clojure by Amogh Talpallikar #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=twIelJGKuVA[Learn Clojure — Dealing with JSON files] - Clojure Diary +* https://www.youtube.com/watch?v=YOZM_6_DImM[Learn Clojure — YAML] - Clojure Diary +* https://www.youtube.com/watch?v=J9NUEJ_dCdA[Extending Java Class in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://fnguy.com/phuzql_poc.html[PhuzQL: A Fuzzy GraphQL Explorer with Babashka, Pathom, and FZF (PoC)] - Alex Sheluchin +* https://blog.danieljanus.pl/2025/02/21/double-double-toil-and-trouble/[Double, double toil and trouble] - Daniel Janus +* https://www.taoensso.com/news/2025-02-open-source[Open source update] - Peter Taoussanis + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/liquidz/elin[elin] https://github.com/liquidz/elin/blob/main/CHANGELOG.adoc[2025.2.1-alpha] - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.1.4] - Clojure SDK for the Stripe API +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.0] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-alpha] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/flow-storm/flow-storm-web-plugin[flow-storm-web-plugin] https://github.com/flow-storm/flow-storm-web-plugin/blob/master/CHANGELOG.md[1.0.0-alpha] - FlowStorm web plugin +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.735] - AWS, data driven +* https://github.com/imrekoszo/unlazy[unlazy] https://github.com/imrekoszo/unlazy/releases/tag/v1.0.1[1.0.1] - Configuration for clj-kondo, discouraging lazy processing +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.2] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.136] - Light-weight ClojureScript dialect +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta30] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.15 - A Statechart library for CLJ(S) +* https://github.com/clj-commons/aleph[aleph] https://github.com/clj-commons/aleph/blob/master/CHANGES.md[0.8.3] - Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] https://github.com/fogus/reinen-vernunft/blob/main/CHANGELOG.md[0.0.4] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta8] - A clojure framework for data science +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/blob/master/CHANGELOG.md[1.17.1] - The Clojure Interactive Development Environment that Rocks for Emacs \ No newline at end of file diff --git a/content/news/2025/03/06/deref.adoc b/content/news/2025/03/06/deref.adoc new file mode 100644 index 00000000..a078d9f2 --- /dev/null +++ b/content/news/2025/03/06/deref.adoc @@ -0,0 +1,48 @@ += Clojure Deref (Mar 6, 2025) +Alex Miller +2025-03-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=mk6Gffzinyw[Lazytest: Standalone BDD testing (by Noah Bogart)] - London Clojurians +* https://soundcloud.com/clojurestream/e99-replicant-with-christian-johansen[E99 - Replicant with Christian Johansen] - ClojureStream Podcast +* https://www.youtube.com/watch?v=BWowab_aLzo[Cloverage — Clojure Test Coverage] - Clojure Diary +* https://www.youtube.com/watch?v=l3zUcT4oSt0[Filtering maps based on key value pairs in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/call-for-proposals.-feb.-2025-member-survey/[Call for Proposals. Feb. 2025 Member Survey] - Kathy Davis (Clojurists Together) +* https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/[Clojure Brain Teasers] - Alex Miller and Lorilyn Jordan Miller +* https://www.karimarttila.fi/clojurescript/2025/02/28/clojurescript-with-replicant.html[Frontend Development with Clojurescript and Replicant] - Kari Marttila +* https://buttondown.com/tensegritics-curiosities/archive/extensible-macros/[Extensible Macros] - Christophe Grand +* https://blog.michielborkent.nl/oss-updates-jan-feb-2025.html[OSS updates January and February 2025] - Michiel Borkent +* https://alza-bitz.github.io/programmers-how-do-you-partition[Programmers: How Do You Partition A Collection?] - Alex Coyle +* https://blog.redplanetlabs.com/2025/03/04/how-multiply-went-from-datomic-to-xtdb-to-rama/[How Multiply went from Datomic to XTDB to Rama] - Nathan Marz +* https://flexiana.com/news/clojure/2025/03/clojure-vs-other-functional-programming-languages-a-quick-comparison[Clojure vs. Other Functional Programming Languages: A Quick Comparison] - Ramon Rios (Flexiana) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1530] - Clojure CLI +* https://github.com/eploko/docker-nrepl.el[docker-nrepl.el] - Easily connect CIDER to nREPL servers running in Docker containers +* https://github.com/clj-arsenal/action[action] 0.0.9 - Controlled, data oriented state manipulation - Clojure/Script/Dart +* https://github.com/PEZ/baldr[baldr] 1.0.9 - Positive reporting for clojure.test, works for Clojure, ClojureScript, Babashka, and nbb +* https://github.com/flow-storm/flow-storm-cljs-compiler-plugin[flow-storm-cljs-compiler-plugin] 1.0.0-beta2 - A FlowStorm plugin to debug the ClojureScript compiler +* https://github.com/rpub-clj/rpub[rpub] https://github.com/rpub-clj/rpub/blob/main/CHANGELOG.md[0.1.0] - A free open-source CMS written in Clojure +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.197] - Native, fast starting Clojure interpreter for scripting +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.138] - Light-weight ClojureScript dialect +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-03-01[2025-03-01] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/liquidz/elin[elin] https://github.com/liquidz/elin/blob/main/CHANGELOG.adoc[2025.3.1-alpha] - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.5] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/cjohansen/replicant[replicant] 2025.03.02 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/blob/main/CHANGELOG.md#020[0.2.3] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-beta3] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta31.1] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta9.1] - A clojure framework for data science +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1530] - A faithful port of the clojure CLI bash script to Clojure \ No newline at end of file diff --git a/content/news/2025/03/14/deref.adoc b/content/news/2025/03/14/deref.adoc new file mode 100644 index 00000000..1df98e58 --- /dev/null +++ b/content/news/2025/03/14/deref.adoc @@ -0,0 +1,68 @@ += Clojure Deref (Mar 14, 2025) +Alex Miller +2025-03-14 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=vfYB-5Z7gts[Sean Corfield guests on Apropos Clojure 2025-03-11] - apropos clojure +* https://www.youtube.com/live/WIJh2HdNkAU[[EP.04] deref-in] - clojure-br +* https://www.youtube.com/watch?v=YYHRx3EnPmg[ClojureScript compiler fun with FlowStorm] - Juan Monetta +* https://www.youtube.com/watch?v=VzQxh8W1CVI[Ways to debug Clojure code: println, pprint, hashp & debugger] - Andrey Fadeev +* https://www.youtube.com/watch?v=txcD-drmaFs[What's the point of LISP?] - mccormix +* https://www.youtube.com/watch?v=tDz1x2d65C0[Noj Reload Executable] - Timothy Pratley +* https://www.youtube.com/watch?v=gHwFCOkBb_o[Noj in a JAR - setup-free Clojure for beginners] - Sci Cloj +* https://www.youtube.com/watch?v=mrgs6DUViOk[JWT — Authentication and Authorization with JSON web token in Clojure ring] - Clojure Diary + +== Blogs, articles, and projects + +* https://2025.clojure-conj.org[CONJ Nov 12-14 Charlotte, NC] - Clojure/Conj +* https://exercises.clojure.camp/[Exercícios da Clojure Camp agora tem tradução para pt-br] - clojure camp exercises +* https://www.patreon.com/posts/123849792[Transparency report, February 2025] - Nikita Prokopov +* https://pensamientos.hashnode.dev/a-beginners-journey-through-the-clojure-web-development-landscape[A Beginner's Journey Through the Clojure Web Development Landscape] - Jose Javier Blanco Rivero +* https://www.ooloi.org/home/claude-37-meta-reflects-on-clojure-vs-python[Claude 3.7 meta-reflects on Clojure vs Python] - Peter Bengtson +* https://whatacold.io/blog/2025-02-22-flask-clojure-rewrite/[Rewrite of a Flask Web App in Clojure] - Ken Huang +* https://www.karimarttila.fi/clojurescript/2025/03/10/ui-design-with-clojurescript-replicant-and-portfolio.html[Designing UI components with Clojurescript, Replicant and Portfolio] - Kari Marttila +* https://blog.redplanetlabs.com/2025/03/11/how-afterhour-built-an-ultra-scalable-chat-service-in-one-month-with-rama/[How AfterHour built an ultra-scalable chat service in one month with Rama] - Nathan Marz +* https://rigsomelight.com/2025/03/12/inline-eval-adventure.html[Inline Evaluation Adventure] - Bruce Hauman +* http://ernestscribbler.xyz/ernest-reverse-engineers-css-with-clojure.html[In which Ernest reverse engineers CSS with Clojure] - Stephen Nelson-Smith +* https://corfield.org/blog/2025/03/12/lazytest/[Migrating to LazyTest] - Sean Corfield +* https://kirancodes.me/posts/log-data-oriented-programming.html[Functional vs Data-Driven development: a Case-Study in Clojure & OCaml] - Kiran Gopinathan + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.8.718-beta2 - Facilities for async programming and communication in Clojure +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/blob/develop/CHANGELOG.md[2.7.1295] - Turn Clojure data structures into SQL +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.2.0] - A collection of utilities that improve Clojure experience +* https://github.com/chr15m/awesome-clojure-likes[awesome-clojure-likes] - Curated list of Clojure-like programming languages +* https://github.com/lispyclouds/contajners[contajners] https://github.com/lispyclouds/contajners/releases/tag/1.0.7[1.0.7] - An idiomatic, data-driven, REPL friendly clojure client for OCI container engines +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.487[2.0.487] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.3.0] - The slim way to build Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.141] - Light-weight ClojureScript dialect +* https://github.com/paintparty/bling[bling] https://github.com/paintparty/bling/blob/main/CHANGELOG.md[0.5.2] - Rich text console printing for Clojure, ClojureScript, and Babashka +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.2.1] - Clojure SDK for the Stripe API +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2025-03-12[2025-03-12] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/abogoyavlensky/manifest-edn[manifest-edn] https://github.com/abogoyavlensky/manifest-edn/blob/master/CHANGELOG.md[0.1.1] - A small Clojure/Babashka library for hashing static assets +* https://github.com/jacobemcken/wet[wet] https://github.com/jacobemcken/wet/blob/main/CHANGELOG.md[0.3.0] - Liquid in Clojure(Script) +* https://github.com/lukaszkorecki/omega-red[omega-red] 2.2.0 - Idiomatic Redis client for Clojure +* https://github.com/nextdoc/sketch[sketch] 0.1.29 - Domain network modelling +* https://repo.prod.meissa.de/meissa/c4k-keycloak[c4k-keycloak] 1.5.0 - k8s deployment for keycloak +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.1002] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.4.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/blob/master/CHANGELOG.md[2025.03.07-17.42.36] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/borkdude/html[html] https://github.com/borkdude/html/blob/main/CHANGELOG.md[0.2.2] - Html generation library inspired by squint's html tag +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.6.1] - A standalone BDD test framework for Clojure +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.1] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.28] - Configurable EDN/Clojure parser with location metadata +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/blob/master/CHANGELOG.md[0.9.45] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta32] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta10.1] - A clojure framework for data science +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.6] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/babashka/babashka-sql-pods[babashka-sql-pods] https://github.com/babashka/babashka-sql-pods/blob/master/CHANGELOG.md[0.1.4] - Babashka pods for SQL databases +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.24] - Experimental ClojureScript to ES6 module compiler \ No newline at end of file diff --git a/content/news/2025/03/21/deref.adoc b/content/news/2025/03/21/deref.adoc new file mode 100644 index 00000000..250ce2c6 --- /dev/null +++ b/content/news/2025/03/21/deref.adoc @@ -0,0 +1,41 @@ += Clojure Deref (Mar 21, 2025) +Alex Miller +2025-03-21 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=1bUwfgcjoOs[[EP.05] deref-in] - clojure-br + +== Blogs, articles, and projects + +* https://blog.redplanetlabs.com/2025/03/18/rama-the-100x-developer-platform-is-now-free-for-production-use/[Rama, the 100x developer platform, is now free for production use] - Nathan Marz (Red Planet Labs) +* https://replicant.fun/tutorials/forms/[Replicant: Data-driven form processing] - Christian Johansen +* https://replicant.fun/tutorials/first-class-forms/[Replicant: Data-driven first class forms] - Christian Johansen +* https://replicant.fun/tutorials/declarative-forms/[Replicant: Declarative forms] - Christian Johansen + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/bhauman/rebel-readline/tree/master/rebel-readline-nrepl[rebel-readline-nrepl] 0.1.6 - A Clojure library that brings the flexibility of Rebel Readline to your terminal as an nREPL (Network REPL) client +* https://github.com/filipesilva/gen[gen] 1.1.0 - A CLI tool to generate files and run commands from templates +* https://github.com/thoughtfull-clojure/transductio[transductio] https://github.com/thoughtfull-clojure/transductio/blob/main/CHANGELOG.md[1.1.0] - A bridge from I/O to transducers and back +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.8.0] - pronounced "speckle": a TDD/BDD framework for Clojure +* https://github.com/metosin/vrac[vrac] 0.1.0 - A frontend rendering library in Clojure, for Clojurists +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.22] - A simple, fast and versatile Datalog database +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.34] - A fast PostgreSQL driver for Clojure +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta35] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.492] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta12] - A clojure framework for data science +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.3 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.25] - Experimental ClojureScript to ES6 module compiler +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.2] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/exoscale/coax[coax] 2.0.2 - Clojure.spec coercion library for clj(s) +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.142] - Light-weight ClojureScript dialect +* https://github.com/lukaszkorecki/omega-red[omega-red] 2.3.0 - Idiomatic Redis client for Clojure \ No newline at end of file diff --git a/content/news/2025/03/28/deref.adoc b/content/news/2025/03/28/deref.adoc new file mode 100644 index 00000000..cb7f058f --- /dev/null +++ b/content/news/2025/03/28/deref.adoc @@ -0,0 +1,51 @@ += Clojure Deref (Mar 28, 2025) +Alex Miller +2025-03-28 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=QhMv8KLQMho[Como eu me preparei para chegar bem no Nubank com Alberto Souza] - clojure-br +* https://www.youtube.com/watch?v=cDfmpe_w_3I[Bobbi guests on Apropos Clojure 2025-03-25] - apropos clojure +* https://www.youtube.com/watch?v=WiOUiHsq_dc[Clojure visual-tools 31 - Workflow Demos 5: Clay] - Sci Cloj +* https://www.youtube.com/watch?v=oV9F9bmPr58[Clojure visual-tools 32- Workflow Demos 6: old-school tools, REPL, Emacs, Org-mode, AI, MCP, & more] - Sci Cloj +* https://www.youtube.com/watch?v=pd_lwg2eQ8g[Clojure Corner: Interview with Oleksandr Yakushev] - Flexiana +* https://www.youtube.com/watch?v=tMx-iW-X4Qs[Episode 9 ... the refactoring will continue until morale improves] - Content Made Simple +* https://www.youtube.com/watch?v=_EzB6z_F-Ak[The Y Combinator: developing intuition around abstract recursion - Dave Kimber | Lambda Days 2024] - Code Sync +* https://www.youtube.com/watch?v=lFy9bHxYxIg[Logging in Ring - Not as good as I expected] - Clojure Diary +* https://www.linkedin.com/feed/update/urn:li:ugcPost:7309822102444924931/[The Spring Equinox of Code?] - Peter Strömberg + +== Blogs, articles, and projects + +* https://www.thoughtfull.systems/notes/2025-02-14-run-flags-for-polling-threads/[Run flags for polling threads] - technosophist +* https://clojure.org/reference/deps_edn#basis[Runtime basis] - Alex Miller (Clojure team) +* https://blog.redplanetlabs.com/2025/03/26/next-level-backends-with-rama-graphs/[Next-level backends with Rama: storing and traversing graphs in 60 LOC] - Nathan Marz (Red Planet Labs) +* https://martinklepsch.org/posts/embracing-js-files-in-clojurescript/[Using JS in ClojureScript Projects] - Martin Klepsch + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.8] - Clojure builds as Clojure programs +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.3.1] - A collection of utilities that improve Clojure experience +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[1.0.1] - Things wanted or needed but missing from clojure.core +* https://github.com/whatacold/google-analytics[google-analytics] 0.1.0-SNAPSHOT - A ClojureScript library for collecting custom events to Google Analytics +* https://github.com/NoahTheDuke/fluent-clj[fluent-clj] https://github.com/NoahTheDuke/fluent-clj/blob/main/CHANGELOG.md[0.0.2] - Project Fluent for Clojure/script +* https://github.com/ring-clojure/ring[ring] https://github.com/ring-clojure/ring/blob/master/CHANGELOG.md[1.14.0] - Clojure HTTP server abstraction +* https://github.com/rm-hull/nvd-clojure[nvd-clojure] https://github.com/rm-hull/nvd-clojure/blob/main/CHANGELOG.md[5.0.0] - National Vulnerability Database dependency checker for Clojure projects +* https://github.com/gersak/toddler[toddler] 0.9.7 - UI library based on lilactown/helix and shadow-css libraries +* https://github.com/alexander-yakushev/compliment[compliment] https://github.com/alexander-yakushev/compliment/blob/master/CHANGELOG.md[0.7.0] - Clojure completion library that you deserve +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.4.0] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/zidicat/Inview[Inview] - Enlive inspired lib for transformation of Hiccup data for use in Clojure and ClojureScript +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.495] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.7 - Scittle cljs live-reloading server +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta37] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta13] - A clojure framework for data science +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta12] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.7] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/clj-commons/virgil[virgil] https://github.com/clj-commons/virgil/blob/master/CHANGELOG.md[0.4.0] - Recompile Java code without restarting the REPL diff --git a/content/news/2025/04/05/deref.adoc b/content/news/2025/04/05/deref.adoc new file mode 100644 index 00000000..da3ae852 --- /dev/null +++ b/content/news/2025/04/05/deref.adoc @@ -0,0 +1,53 @@ += Clojure Deref (Apr 5, 2025) +Alex Miller +2025-04-05 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=bOQyCdUByHA[[EP.06] deref-in] - clojure-br +* https://soundcloud.com/clojurestream/e101-fcis-with-magnars?utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing[E101 FC/IS with magnars] - ClojureStream Podcast +* https://www.youtube.com/watch?v=ZUUstGuTRPM[Toddler - UI or not to UI (by Robert Geršak)] - London Clojurians +* https://www.youtube.com/watch?v=c0Rl9DKOTOY[Clojure visual-tools 33- Workflow Demos 7: Clojure Sublimed, Executor, clj-reload, clojure+, Clay] - Sci Cloj +* https://www.youtube.com/watch?v=fvcnCxFHyos[Scicloj AI Meetup 2: practice session - build a RAG] - Sci Cloj +* https://www.youtube.com/watch?v=IRqXVvocsps[7 UIs with Replicant, Ep 0: Setup] - Replicant TV +* https://www.youtube.com/watch?v=kUvd1o6w0Hc[7 UIs with Replicant, Ep 1: Counter] - Replicant TV +* https://www.youtube.com/watch?v=qYokrc09mQw[Refactoring Ring. Keep your handlers clean] - Clojure Diary +* https://www.youtube.com/watch?v=9-HTMlx5aNg[Clojure stuff one needs to know, and sites where one can be updated] - Clojure Diary + +== Blogs, articles, and projects + +* https://jank-lang.org/blog/2025-03-28-error-reporting/[Can jank beat Clojure's error reporting?] - Jeaye Wilkerson +* https://moea.github.io/playground/clojure/gadt/static/typing/2025/03/29/gadt.html[Playing Fast and Loose With GADTs] - Moe Aboulkheir +* https://flexiana.com/news/2025/03/experience-with-claude-code[Experience with Claude Code] - Jiri Knesl (Flexiana) +* https://flexiana.com/news/2025/04/why-clojure-developers-love-the-repl-so-much[Why Clojure Developers Love the REPL So Much] - Jakub Zika (Flexiana) +* https://www.patreon.com/posts/transparency-125684280[Transparency report: March 2025] - Nikita Prokopov +* https://blog.redplanetlabs.com/2025/04/01/massively-scalable-collaborative-text-editor-backend-with-rama-in-120-loc/[Massively scalable collaborative text editor backend with Rama in 120 LOC] - Nathan Marz (Red Planet Labs) +* https://saunved.com/tech/learning-clojure-as-a-js-dev[Learning Clojure as a Javascript developer] - Saunved Mutalik + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.8.735] - Facilities for async programming and communication in Clojure +* https://github.com/NoahTheDuke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.20.0] - A Clojure linter focused on style and code shape +* https://github.com/amiorin/big-config[big-config] - An alternative to traditional configuration languages +* https://github.com/jaidetree/valhalla[valhalla] https://github.com/jaidetree/valhalla/releases/tag/2025.3.29[2025.3.29] - A ClojureScript focused validation library +* https://github.com/k13labs/futurama[futurama] https://github.com/k13labs/futurama/blob/main/CHANGELOG.md[1.3.1] - Futurama is a Clojure library for more deeply integrating async abstractions with core.async +* https://github.com/atproto-clj/atproto-clj[atproto-clj] - ATProto Clojure SDK +* https://github.com/AbhinavOmprakash/snitch[snitch] https://github.com/AbhinavOmprakash/snitch/blob/main/CHANGELOG.md[0.1.16] - Snitch is inline-defs on steroids +* https://github.com/cjohansen/replicant[replicant] 2025.03.27 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.3.0] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[1.1.0] - Things wanted or needed but missing from clojure.core +* https://github.com/babashka/process[process] https://github.com/babashka/process/blob/master/CHANGELOG.md#0522-2024-02-29[0.6.23] - Clojure library for shelling out / spawning sub-processes +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.29] - Configurable EDN/Clojure parser with location metadata +* https://github.com/mpenet/pact[pact] 1.0.8 - clojure.spec to json-schema generation library +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta39] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta14] - A clojure framework for data science +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-04-02[2025-04-02] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/babashka/pod-babashka-instaparse[pod-babashka-instaparse] https://github.com/babashka/pod-babashka-instaparse/blob/main/CHANGELOG.md[0.0.5] - A pod exposing Instaparse to babashka +* https://github.com/kaepr/game-of-life-cljs[game-of-life-cljs] - Conway's Game of Life implemented in ClojureScript \ No newline at end of file diff --git a/content/news/2025/04/11/deref.adoc b/content/news/2025/04/11/deref.adoc new file mode 100644 index 00000000..b9b25dfa --- /dev/null +++ b/content/news/2025/04/11/deref.adoc @@ -0,0 +1,38 @@ += Clojure Deref (Apr 11, 2025) +Alex Miller +2025-04-11 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=52lGEPWA2WU[David Nolen guests on Apropos Clojure 2025-04-08] - apropos clojure +* https://www.youtube.com/watch?v=H7ZlwEDxzRs[Clojure Corner: Interview with Michiel Borkent] - Flexiana +* https://zencastr.com/z/cK98nMcr[defn episode 6ae6acf85d52 Chris Pellets McCormick] - defn +* https://www.youtube.com/watch?v=N85uFVL7YF0[7 UIs with Replicant, Ep 2: Navigation and state management] - Replicant TV +* https://www.youtube.com/watch?v=jb1BcYpyOAs[Supercharge your debugging with Snitch] - CalvaTV +* https://www.youtube.com/watch?v=JfF8ukaxG00[Elegant way of filtering maps based on key value pairs] - Clojure Diary +* https://www.youtube.com/watch?v=TpkiwqVf8Bo[Build Order - Using Clojure to determine build order] - Clojure Diary + +== Blogs, articles, and projects + +* https://andersmurphy.com/2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html[Clojure: Realtime collaborative web apps without ClojureScript] - Anders Murphy +* https://thomascothran.tech/2025/04/avoid-with-redefs/[Avoid with-redefs in tests] - Thomas Cothran +* https://blog.redplanetlabs.com/2025/04/08/next-level-backends-with-rama-recommendation-engine-in-80-loc/[Next-level backends with Rama: recommendation engine in 80 LOC] - Nathan Marz (Red Planet Labs) +* https://www.evalapply.org/posts/demo-clojure-workflow-scicloj/index.html#main[Keeping it Old-Tool: REPL habits of a grug-brained Clojure programmer] - Aditya Athalye +* https://mehmetgoekce.substack.com/p/object-oriented-programming-in-java[Object-Oriented Programming in Java 21 vs Functional Programming in Clojure: A Technical Comparison] - Mehmet Gökçe + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.8.741] - Facilities for async programming and communication in Clojure +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.04.07] - Static analyzer and linter for Clojure code that sparks joy +* https://repo.prod.meissa.de/meissa/c4k-forgejo[c4k-forgejo] 6.0.0 - Provision forgejo on k8s with c4k +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] 0.1.0 - A quick way to start a full-stack Clojure app with server-side rendering +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.144] - Light-weight ClojureScript dialect +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.498] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta15] - A clojure framework for data science \ No newline at end of file diff --git a/content/news/2025/04/17/deref.adoc b/content/news/2025/04/17/deref.adoc new file mode 100644 index 00000000..8a83fccd --- /dev/null +++ b/content/news/2025/04/17/deref.adoc @@ -0,0 +1,46 @@ += Clojure Deref (Apr 17, 2025) +Alex Miller +2025-04-17 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=_H-5SWm3Lvk[Episode 10 ... the refactoring continues until the code improves] - Content Made Simple +* https://www.youtube.com/watch?v=EpUfIrQBJ9E[Single-binary ClojureScript] - mccormix +* https://www.youtube.com/watch?v=punj0oHSrPQ[numbers, radix, arbitrary precision in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://obryant.dev/p/yakread-algorithm/[Yakread's ranking algorithm] - Jacob O'Bryant +* https://bogoyavlensky.com/blog/build-and-publish-clojure-lib-with-slim/[Building and publishing a Clojure library from scratch with Slim] - Andrey Bogoyavlenskiy +* https://scicloj.github.io/blog/clojure-in-new-fields-opening-up/[Clojure in new fields - opening up] - Daniel Slutsky +* https://ilmo.bearblog.dev/conjtest-a-new-policy-as-code-tool-built-with-clojure-go/[Conjtest: a new Policy-as-Code tool built with Clojure/Babashka & Go] - Ilmo Raunio +* https://andersmurphy.com/2025/04/15/why-you-should-use-brotli-sse.html[Why you should consider using brotli compression with SSE] - Anders Murphy +* https://blog.redplanetlabs.com/2025/04/16/next-level-backends-with-rama-fault-tolerant-timed-notifications-in-25-loc/[Next-level backends with Rama: fault-tolerant timed notifications in 25 LOC] - Nathan Marz (Red Planet Labs) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/cursive-ide/cursive[cursive] https://github.com/cursive-ide/cursive/blob/master/CHANGELOG.md[2025.1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/blob/main/CHANGELOG.md[0.0.1] - A command-line utility heavily inspired by and partially based on Conftest +* https://github.com/dakrone/cheshire[cheshire] https://github.com/dakrone/cheshire/blob/master/ChangeLog.md[6.0.0] - Clojure JSON and JSON SMILE (binary json format) encoding/decoding +* https://github.com/amiorin/big-container[big-container] - doom emacs development inside a container +* https://github.com/filipesilva/datomic-pro-manager[datomic-pro-manager] 1.0.0 - Download, setup, and run Datomic Pro backed by SQLite in a single command +* https://github.com/thoughtfull-clojure/amalgam[amalgam] https://github.com/thoughtfull-clojure/amalgam/blob/main/CHANGELOG.md[2.0.0] - Useful utilities and mixtures for com.stuartsierra/component +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.501] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.146] - Light-weight ClojureScript dialect +* https://github.com/babashka/cli[cli] https://github.com/babashka/cli/blob/main/CHANGELOG.md[0.8.65] - Turn Clojure functions into CLIs! +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.3.2] - The slim way to build Clojure +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/blob/main/CHANGELOG.md[0.3.8] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/blob/main/CHANGELOG.md#020[0.2.3] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/taoensso/nippy[nippy] https://github.com/taoensso/nippy/blob/master/CHANGELOG.md[3.5.0] - Fast serialization library for Clojure +* https://github.com/taoensso/timbre[timbre] https://github.com/taoensso/timbre/blob/master/CHANGELOG.md[6.7.0] - Pure Clojure/Script logging library +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[2.7.0] - Simple performance monitoring library for Clojure/Script +* https://github.com/http-kit/http-kit[http-kit] https://github.com/http-kit/http-kit/blob/master/CHANGELOG.md[2.9.0-beta1] - Simple, high-performance event-driven HTTP client+server for Clojure +* https://github.com/scarletcomply/license-finder[license-finder] https://github.com/scarletcomply/license-finder/blob/main/CHANGELOG.md[0.4.0] - Finds licenses of your Clojure(Script) dependencies +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.198] - Native, fast starting Clojure interpreter for scripting \ No newline at end of file diff --git a/content/news/2025/04/25/deref.adoc b/content/news/2025/04/25/deref.adoc new file mode 100644 index 00000000..5fc6a4be --- /dev/null +++ b/content/news/2025/04/25/deref.adoc @@ -0,0 +1,59 @@ += Clojure Deref (Apr 25, 2025) +Alex Miller +2025-04-25 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=_g69GKN6lAM[Fogus guests on Apropos Clojure 2025-04-22] - apropos clojure +* https://www.youtube.com/watch?v=DN0l78bFsDY[Scicloj AI Meetup 4 # LLM tools feedback loop # MCPs, Modex, and Datomic MCP] - Sci Cloj +* https://www.youtube.com/watch?v=-3VOuwUihSY[Episode 11 ... the refactoring continues cos we can] - Content Made Simple +* https://www.youtube.com/watch?v=I-XSgHeuol0[7 UIs with Replicant, Ep 4: Flight booking, part 1] - Replicant TV +* https://www.youtube.com/watch?v=xzC3g0qIRro[Anders and the Game of Life] - Datastar +* https://www.youtube.com/watch?v=_bmuH5XONww[Use Shadcn Style React Components in ClojureScript] - Kelvin Mai +* https://www.youtube.com/watch?v=ACwJNGxo3o4[The Duality of Transducers — Clojure's Transducers from Scratch] - Cameron Desautels + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/q2-2025-funding-announcement/[Q2 2025 Funding Announcement] - Kathy Davis (Clojurists Together) +* https://blog.ambrosebs.com/2025/04/20/optimizing-syntax-quote.html[Optimizing syntax-quote] - Ambrose Bonnaire-Sergeant +* https://www.karimarttila.fi/clojure/2025/04/20/clojure-power-tools-part-3.html[Clojure Power Tools Part 3] - Kari Marttila +* https://mauricio.szabo.link/blog/2025/04/14/exposing-clojure-to-ruby-and-other-languages/[Exposing Clojure to Ruby and other languages] - Maurício Szabo +* https://mauricio.szabo.link/blog/2025/04/21/exposing-clojure-to-ruby-and-other-languages-callbacks/[Exposing Clojure to Ruby and other languages – Callbacks] - Maurício Szabo +* https://mauricio.szabo.link/blog/2025/04/22/exposing-clojure-to-ruby-and-other-languages-java-objects-in-c/[Exposing Clojure to Ruby and other languages – Java objects in C] - Maurício Szabo +* https://blog.danieljanus.pl/2025/04/22/datomic-forking-the-past/[No, really, you can’t branch Datomic from the past] - Daniel Janus +* https://blog.redplanetlabs.com/2025/04/22/how-gd-netcetera-used-rama-to-100x-the-performance-of-a-product-used-by-millions-of-people/[How G+D Netcetera used Rama to 100x the performance of a product used by millions of people] - Nathan Marz (Red Planet Labs) +* https://emil0r.com/posts/2025-04-23-look-at-how-little-i-need/[Look at how little I need] - Emil Bengtsson +* https://www.emcken.dk/programming/2025/04/21/local-s3-storage-with-minio-for-clojure-dev-env/[Local S3 storage with MinIO for your Clojure dev environment] - Jacob Emcken + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/flow-storm/flow-storm-flowbook-plugin[flow-storm-flowbook-plugin] 1.0.0-alpha - A FlowStorm plugin for timelines serialization/replaying +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.741] - AWS, data driven +* https://github.com/k13labs/walkr[walkr] https://github.com/k13labs/walkr/blob/main/CHANGELOG.md[0.0.1] - Walkr (walk-reduce) is a Clojure library built to help you easily walk-reduce clojure data structures +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.38] - A fast PostgreSQL driver for Clojure +* https://github.com/clj-commons/etaoin[etaoin] https://github.com/clj-commons/etaoin/blob/master/CHANGELOG.adoc#v1.1.42[1.1.43] - Pure Clojure Webdriver protocol implementation +* https://github.com/johnmn3/wrap-map[wrap-map] https://github.com/johnmn3/wrap-map/blob/main/CHANGELOG.md[0.1.11] - map type maps +* https://github.com/igrishaev/jsam[jsam] https://github.com/igrishaev/jsam/blob/master/CHANGELOG.md[0.1.0] - A lightweight, zero-deps JSON parser and writer +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.10] - An extremely lightweight fault tolerance library for Clojure(Script) +* https://github.com/ericdallo/metrepl[metrepl] https://github.com/ericdallo/metrepl/blob/master/CHANGELOG.md[0.3.0] - Metrics of your Clojure nREPL +* https://github.com/emil0r/ez-form[ez-form] 2025.04.23 - A data-driven library for forms using hiccup +* https://github.com/xadecimal/async-style[async-style] https://github.com/xadecimal/async-style/blob/main/CHANGELOG.md[0.1.0] - Higher level utilities over Clojure core.async that let you use an async style of programming with ease +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.199] - Native, fast starting Clojure interpreter for scripting +* https://github.com/amiorin/big-config[big-config] https://github.com/amiorin/big-config/blob/main/CHANGELOG.md[0.1.169] - An alternative to traditional configuration languages +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta40] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta16] - A clojure framework for data science +* https://github.com/amiorin/big-container[big-container] https://github.com/amiorin/big-container/blob/main/CHANGELOG.md[0.1.25] - doom emacs development inside a container +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.36.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[3.0.0-beta1] - Simple performance monitoring library for Clojure/Script +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta16] - A small library for defining how different kinds of things should be rendered +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta13] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/replikativ/datahike[datahike] https://github.com/replikativ/datahike/releases/tag/0.6.1596[0.6.1595] - A durable Datalog implementation adaptable for distribution +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/blob/master/CHANGELOG.md[2025.04.23-18.16.46] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/datopia/invariant[invariant] - This repository provides invariant verification in Datalog for immutable databases like Datahike \ No newline at end of file diff --git a/content/news/2025/04/28/async_flow.adoc b/content/news/2025/04/28/async_flow.adoc new file mode 100644 index 00000000..6e3aa2c6 --- /dev/null +++ b/content/news/2025/04/28/async_flow.adoc @@ -0,0 +1,18 @@ += Introducing core.async.flow +Alex Miller +2025-04-28 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +https://github.com/clojure/core.async[core.async] 1.9.808-alpha1 is now available, featuring the first release of **core.async.flow**. You can read more about core.async.flow in https://clojure.github.io/core.async/flow.html[the rationale] and https://clojure.github.io/core.async/clojure.core.async.flow.html[the docs]. + +core.async.flow is in alpha state - all APIs are still subject to change but we welcome your feedback as we move towards a non-alpha release. + +This release also adds datafy support for channels and buffers. + +== core.async.flow-monitor + +In addition, we are today releasing https://github.com/clojure/core.async.flow-monitor/[core.async.flow-monitor] v0.1.0, which is a tool for visualizing a flow's processes as SVG (viewable inline in Calva or Cursive!), and dynamically monitoring and interacting with flows as they are running. + + diff --git a/content/news/2025/05/03/deref.adoc b/content/news/2025/05/03/deref.adoc new file mode 100644 index 00000000..a94f6fc1 --- /dev/null +++ b/content/news/2025/05/03/deref.adoc @@ -0,0 +1,68 @@ += Clojure Deref (May 3, 2025) +Alex Miller +2025-05-03 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=lXFwf3O4BVY[A quick demo of core.async.flow] - ClojureTV +* https://www.youtube.com/watch?v=vY6q_4XcdRk[Building a 3D Multiplayer Shooter in Clojure: The Making of Wizard Masters (by Ertugrul Cetin)] - London Clojurians +* https://www.youtube.com/watch?v=WfpuEhtas0Q[Clojure Corner: Interview with Eric Dallo] - Flexiana +* https://www.youtube.com/watch?v=PWHidCezwFM[Clojure in new fields - opening up] - Sci Cloj +* https://www.youtube.com/watch?v=s2UPaRjs0kg[SciNoj Light #1 pre-conference interview: Cvetomir Dimov] - Sci Cloj +* https://www.youtube.com/watch?v=B1yPkpyiEEs[Clojure for data analysis - getting started with Noj v2, VSCode, Calva, and Clay] - Sci Cloj +* https://share.descript.com/view/nJkFVXo15lM[Electric Clojure in 5 minutes — Systems Distributed 2024] - Dustin Getz +* https://www.youtube.com/watch?v=ABM7wSlb3mM[7 UIs with Replicant, Ep 5: Flight booking, part 2] - Replicant TV +* https://www.youtube.com/watch?v=qn34p5JWmOU[Automatic Type Conversion in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.taoensso.com/news/2025-04-open-source[Open source update] - Peter Taoussanis +* https://blog.michielborkent.nl/oss-updates-mar-apr-2025.html[OSS updates March and April 2025] - Michiel Borkent +* https://www.linkedin.com/pulse/secure-adaptable-systems-how-wrap-map-extends-edge-john-newman-5bkxe/?trackingId=RTatQDN8T92TTHF8hdo7WA%3D%3D[Secure, Adaptable Systems: How Wrap Map Extends Functional Programming's Edge] - John Newman +* https://shagunagrawal.me/posts/compiling-clojure-to-wasm-image/[Compiling Clojure to WebAssembly] - Shagun Agrawal +* https://www.karimarttila.fi/python/2025/04/26/converting-clojure-to-python-using-copilot.html[Converting Clojure Backend to Python Using Copilot] - Kari Marttila +* https://blog.michielborkent.nl/babashka-java-reflection-type-hints.html[Babashka Java interop, reflection and type hints] - Michiel Borkent +* https://romanliutikov.com/blog/running-clojure-in-wasm[Running Clojure in Wasm] - Roman Liutikov +* https://romanliutikov.com/blog/closure-compiler-lands-class-fields-support[Closure Compiler lands class fields support] - Roman Liutikov +* https://romanliutikov.com/blog/bringing-react-native-worklets-to-clojurescript[Bringing React Native Worklets to ClojureScript] - Roman Liutikov +* https://xtdb.com/blog/building-a-bitemp-index-1-taxonomy[Building a Bitemporal Index (part 1): A Taxonomy of Bitemporal Data] - James Henderson (XTDB) +* https://blog.redplanetlabs.com/2025/04/29/next-level-backends-with-rama-personalized-content-moderation-in-60-loc/[Next-level backends with Rama: personalized content moderation in 60 LOC] - Nathan Marz (Red Planet Labs) +* https://jank-lang.org/blog/2025-05-02-starting-seamless-interop/[Starting on seamless C++ interop in jank] - Jeaye Wilkerson +* https://tonsky.me/blog/hashp/[When You Get to Be Smart Writing a Macro] - Nikita Prokopov + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.9.808-alpha1] - Facilities for async programming and communication in Clojure +* https://github.com/clojure/core.async.flow-monitor[core.async.flow-monitor] 0.1.0 - A real-time monitoring and interaction tool for clojure.core.async.flow +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.200] - Native, fast starting Clojure interpreter for scripting +* https://github.com/igrishaev/virtuoso[virtuoso] https://github.com/igrishaev/virtuoso/blob/master/CHANGELOG.md[0.1.1] - A number of trivial wrappers on top of virtual threads +* https://github.com/pfeodrippe/vybe[vybe] https://github.com/pfeodrippe/vybe/releases/tag/v0.7.598[0.7.598] - A Clojure framework for game dev +* https://github.com/nakkaya/weave[weave] - An easy-to-use, Clojure-based web application framework +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-beta5] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/blob/master/CHANGELOG.md[1.18] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.25] - File system utility library for Clojure +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[1.0.0] - Structured telemetry library for Clojure/Script +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[3.0.0-RC1] - Simple performance monitoring library for Clojure/Script +* https://github.com/practicalli/nvim-astro5[nvim-astro5] https://github.com/practicalli/nvim-astro5/blob/main/CHANGELOG.md[2025-04-24] - Neovim 0.11 config for Clojure development, based on AstroNvim v5 +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.4.0] - A collection of utilities that improve Clojure experience +* https://github.com/borkdude/quickdoc[quickdoc] https://github.com/borkdude/quickdoc/blob/main/CHANGELOG.md[0.2.5] - Quick and minimal API doc generation for Clojure +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.507] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/paintparty/bling[bling] https://github.com/paintparty/bling/blob/main/CHANGELOG.md[0.6.0] - Rich text console printing for Clojure, ClojureScript, and Babashka +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] https://github.com/abogoyavlensky/clojure-stack-lite/releases/tag/0.1.2[0.1.2] - A quick way to start a full-stack Clojure app with server-side rendering +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.8] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/garrett-hopper/tailwindcss-clojure-class-sorter[tailwindcss-clojure-class-sorter] - A VSCode extension that provides a source action to sort Tailwind CSS classes within your Clojure code, including Hiccup templates +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta42] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta14] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.37.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta17] - A clojure framework for data science +* https://github.com/emil0r/ez-form[ez-form] https://github.com/emil0r/ez-form/blob/master/CHANGELOG.adoc[2025-05-01] - A data-driven library for forms using hiccup +* https://github.com/seancorfield/deps-new[deps-new] https://github.com/seancorfield/deps-new/blob/develop/CHANGELOG.md[0.8.1] - Create new projects for the Clojure CLI / deps.edn +* https://github.com/scicloj/wolframite[wolframite] https://github.com/scicloj/wolframite/blob/main/CHANGELOG.md[1.1.0] - An interface between Clojure and Wolfram Language (the language of Mathematica) +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/blob/main/CHANGELOG.org[2025-05-02] - User aliases and Clojure CLI configuration for deps.edn based projects \ No newline at end of file diff --git a/content/news/2025/05/10/deref.adoc b/content/news/2025/05/10/deref.adoc new file mode 100644 index 00000000..770f3028 --- /dev/null +++ b/content/news/2025/05/10/deref.adoc @@ -0,0 +1,62 @@ += Clojure Deref (May 10, 2025) +Alex Miller +2025-05-10 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://soundcloud.com/clojurestream/e102-pedestal-with-hlship[E102 - Pedestal with hlship] - ClojureStream Podcast +* https://www.youtube.com/watch?v=dxJgD0CoxVU[Introducing Calva AI Tools a k a Backseat Driver] - CalvaTV +* https://www.youtube.com/watch?v=IkxKVcv_63o[Scicloj AI Meetup 5 # Structured Data from LLMs #Agentic Data-science] - Sci Cloj +* https://www.youtube.com/watch?v=a-PrBjlBdw8[JP Monetta guests on Apropos Clojure 2025-05-06] - apropos clojure +* https://www.youtube.com/watch?v=r8bBNt9Y9fs[ClojureScript + SVG motion graphics] - mccormix +* https://www.youtube.com/watch?v=Zcd6kXmL5mI[Clojure editor flares for Cursive and Calva] - Timothy Pratley +* https://www.youtube.com/watch?v=sJQJWcPXsWc[Private Functions in Clojure] - Clojure Diary +* https://www.youtube.com/watch?v=VgONX4aItEE[Java Files in Clojure Project] - Clojure Diary +* https://www.youtube.com/watch?v=nwXBqFMPLKg[jar files in Clojure project] - Clojure Diary +* https://www.youtube.com/watch?v=bfFpO3SLQIc[Ref type in Clojure in practice] - faster-than-light-memes + +== Blogs, articles, and projects + +* https://clojure.github.io/core.async/flow-guide.html[core.async.flow Guide] - Clojure Team +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-1[Towards React Server Components in Clojure, Part 1] - Roman Liutikov +* https://code.thheller.com/blog/shadow-cljs/2025/05/07/dealing-with-zombies.html[CLJS: Dealing with Zombies] - Thomas Heller +* https://tutorials.datomic.com/todo-list-part-1.html[Building a TODO List App with Datomic Pro - [Part 1]] - Datomic Documentation +* https://potetm.com/devtalk/stability-by-design.html[Stability by Design] - Timothy Pote +* https://vlaaad.github.io/lsp-client-in-200-lines-of-code[LSP client in Clojure in 200 lines of code] - Vlad Protsenko + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async.flow-monitor[core.async.flow-monitor] 0.1.1 - A real-time monitoring and interaction tool for clojure.core.async.flow +* https://github.com/RokLenarcic/proto-relay[proto-relay] 0.1.0 - Utilities for creating functions that delegate to some underlying protocol +* https://github.com/2food/datomic-graph-viz[datomic-graph-viz] 1.0.0 - Visualize a datomic database as a graph +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.3.0] - Clojure SDK for the Stripe API +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/blob/master/CHANGELOG.md[0.0.10] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used asan MCP server +* https://github.com/lukaszkorecki/mokujin[mokujin] 1.0.0.82 - Structured logging for Clojure. Thin layer on top of clojure.tools.logging with MDC support +* https://github.com/cjohansen/dataspex[dataspex] 2025.05.7 - See the shape of your data: point-and-click Clojure(Script) data browser +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.201] - Scripting in Clojure on Node.js using SCI +* https://github.com/jonasseglare/clj-freqt[clj-freqt] - Frequent subtree mining with FREQT in Clojure +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.4[0.1.4] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.5.0] - A collection of utilities that improve Clojure experience +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.509] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/julienvincent/msgpack-clj[msgpack-clj] 1.1.0 - High performance Clojure bindings for msgpack-java +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.30] - Configurable EDN/Clojure parser with location metadata +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/blob/main/CHANGELOG.md[0.0.2] - A command-line utility heavily inspired by and partially based on Conftest +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.9] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta44] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta13] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta18] - A clojure framework for data science +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[2.1.2] - Things wanted or needed but missing from clojure.core +* https://github.com/thoughtfull-clojure/amalgam[amalgam] https://github.com/thoughtfull-clojure/amalgam/blob/main/CHANGELOG.md[2.8.3] - Useful utilities and mixtures for com.stuartsierra/component +* https://github.com/thoughtfull-clojure/amalgam-dirigiste[amalgam-dirigiste] https://github.com/thoughtfull-clojure/amalgam-dirigiste/blob/main/CHANGELOG.md[0.3.0] - Self-adjusting thread pool component with metrics reporting +* https://github.com/tatut/ripley[ripley] https://github.com/tatut/ripley#changes[2025-05-08] - Server rendered UIs over WebSockets +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.147] - Light-weight ClojureScript dialect +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.27] - Experimental ClojureScript to ES6 module compiler +* https://github.com/babashka/pod-babashka-fswatcher[pod-babashka-fswatcher] https://github.com/babashka/pod-babashka-fswatcher/blob/main/CHANGELOG.md[0.0.6] - Babashka filewatcher pod +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] https://github.com/abogoyavlensky/clojure-stack-lite/releases/tag/0.1.2[0.1.3] - A quick way to start a full-stack Clojure app with server-side rendering \ No newline at end of file diff --git a/content/news/2025/05/23/deref.adoc b/content/news/2025/05/23/deref.adoc new file mode 100644 index 00000000..eb6253e9 --- /dev/null +++ b/content/news/2025/05/23/deref.adoc @@ -0,0 +1,69 @@ += Clojure Deref (May 23, 2025) +Christoph Neumann +2025-05-23 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +A huge thanks to Anton Fonarev who has put in a ton of work aggregating these links for the last +couple of years! It's a lot to keep up with week after week. As you move on to other things, we want +you to know that your work hasn't gone unnoticed, and we really appreciate your help. + +== Podcasts, videos, and media + +* https://youtu.be/bHlLeZCKaLE[REPL Driven Test After Development in Clojure] - Clojure Diary +* https://zencastr.com/z/tS_FyddQ[defn episode 1a156fe163a1 Nathan Marz] - @defn podcast +* https://youtu.be/B_D1VAAd3NU[Func Prog Podcast Episode 3 - Peter PEZ Strömberg] - Func Prog Sweden +* https://youtu.be/PnHybllAxmM[Clojure Corner: Interview with Ovi Stoica] - Flexiana +* https://youtu.be/kbKNUd6k760[factorial in Clojure. Using memonize. Numeric Data Types] - Clojure Diary +* https://youtu.be/ptN53mef_IY[Autology: Writing a self-rewriting Lisp (by Dave Kimber)] - London Clojurians +* https://youtu.be/h8cdxBnW8Ic[Nathan Marz guests on Apropos Clojure 2025-05-20] - apropos clojure +* https://youtu.be/0BYnGnAPUUY[2o Encontro Presencial Clojure BR] - clojure-br + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/annually-funded-developers-update-mar./april-2025/[Annually-Funded Developers' Update: Mar./April 2025] - Kathy Davis +* https://xtdb.com/blog/building-a-bitemp-index-2-resolution[Building a Bitemporal Index (part 2): "Bitemporal Resolution" · XTDB] - James Henderson +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-2[Towards React Server Components in Clojure, Part 2] - Roman Liutikov +* https://clojure-diary.gitlab.io/2025/05/14/wrote-about-java-integration-and-private-functions-in-clojure-book.html[Wrote about Java integration, and private functions in Clojure Book] - Karthikeyan A K +* https://flexiana.com/news/2025/05/flowstorm-debugging-and-understanding-clojure-code-on-a-new-level[FlowStorm: Debugging and Understanding Clojure Code on a New Level - Flexiana] - Jakub Zika +* https://blog.fogus.me/clojure/arities-as-proto.html[Arities as pseudo-protocol] - Fogus +* https://andersmurphy.com/2025/05/20/clojure-sqlite-c-api-with-project-panama-and-coffi.html[Clojure: SQLite C API with project Panama and Coffi] - Anders Murphy +* https://www.emcken.dk/programming/2025/05/11/clojure-function-definitions/[Consistent code style for Clojure function definitions] - Jacob Emcken +* https://lambdaisland.com/blog/2025-05-13-on-interactive[On Interactive Development] - Laurence Chen + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.9] - Clojure builds as Clojure programs +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/releases/tag/0.18.0[0.18.0] - High-performance data-driven data specification library for Clojure/Script. +* https://github.com/igrishaev/whew[whew] - Try to tame CompletableFuture +* https://github.com/shipclojure/simulflow[simulflow] https://github.com/shipclojure/simulflow/releases/tag/0.1.4-alpha[0.1.4-alpha] - A Clojure library for building real-time voice-enabled AI pipelines. Simulflow handles the orchestration of speech recognition, audio processing, and AI service integration with the elegance of functional programming. +* https://github.com/behrica/scicloj.ml.smile2[scicloj.ml.smile2] - Plugin of Java Smile (> v.2.6) into metamorph.ml +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/releases/tag/v0.4.0[0.4.0] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/Ramblurr/datomic-pro-flake[datomic-pro-flake] https://github.com/Ramblurr/datomic-pro-flake/releases/tag/v0.6.0[0.6.0] - A Nix flake providing a Datomic Pro package and NixOS module +* https://github.com/IGJoshua/coffi[coffi] https://github.com/IGJoshua/coffi/blob/develop/CHANGELOG.md[1.0.615] - A Foreign Function Interface in Clojure for JDK 22+. +* https://github.com/fulcrologic/java-probe[java-probe] - Clojure functions that can extract javadoc and source in a REPL. Primarily intended as a tool for AI nREPL MCP tools. +* https://github.com/seancorfield/logging4j2[logging4j2] https://github.com/seancorfield/logging4j2/releases/tag/v1.0.2[1.0.2] - A Clojure wrapper for log4j2 +* https://github.com/clj-commons/rewrite-clj[rewrite-clj] https://github.com/clj-commons/rewrite-clj/releases/tag/v1.2.50[1.2.50] - Rewrite Clojure code and edn +* https://github.com/igrishaev/lambda[lambda] https://github.com/igrishaev/lambda/blob/master/CHANGELOG.md[0.1.6] - An AWS Lambda in a single binary file +* https://github.com/filipesilva/datomic-pro-manager[datomic-pro-manager] https://github.com/filipesilva/datomic-pro-manager/tree/v1.0.1[1.0.1] - Download, setup, and run Datomic Pro backed by SQLite in a single command. +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.7.1310[2.7.1310] - Turn Clojure data structures into SQL +* https://github.com/lread/test-doc-blocks[test-doc-blocks] https://github.com/lread/test-doc-blocks/releases/tag/v1.2.21[1.2.21] - Test AsciiDoc and CommonMark code blocks found in articles and docstrings. +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-2025.1.1.html[2025.1.1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-2025.2-eap1.html[2025.2-eap1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/steffan-westcott/clj-otel[clj-otel] https://github.com/steffan-westcott/clj-otel/blob/master/CHANGELOG.adoc[0.2.8] - An idiomatic Clojure API for adding telemetry to your libraries and applications using OpenTelemetry. +* https://github.com/metosin/oksa[oksa] https://github.com/metosin/oksa/releases/tag/1.2.0[1.2.0] - Generate GraphQL queries using Clojure data structures. +* https://repo.prod.meissa.de/meissa/c4k-forgejo[c4k-forgejo] https://repo.prod.meissa.de/meissa/c4k-forgejo/src/tag/7.0.0[7.0.0] - Provision forgejo on k8s with c4k +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.28] - Experimental ClojureScript to ES6 module compiler +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2025-05-13[2025-05-13] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/BetterThanTomorrow/calva-power-tools[calva-power-tools] https://github.com/BetterThanTomorrow/calva-power-tools/releases/tag/v0.0.8[0.0.8] - A VS Code Extension providing commands for extra powerful things in the Clojure ecosystem +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.204] - Scripting in Clojure on Node.js using SCI +* https://github.com/practicalli/clojure[clojure] https://github.com/practicalli/clojure/releases/tag/2025-05-16[2025-05-16] - Practicalli Clojure REPL Driven Development +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.38.0 ; good release example] - Overarch provides a data model for the holistic description of a software system, opening multiple use cases on the model data. Supports C4 and UML diagram generation with PlantUML. +* https://github.com/scicloj/clay[clay] https://clojars.org/org.scicloj/clay/versions/2-beta45[2-beta45] - A REPL-friendly Clojure tool for notebooks and datavis +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/releases/tag/v0.0.12[0.0.12] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used asan MCP server. +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.514[2.0.514] - Clojure & ClojureScript Interactive Programming for VS Code diff --git a/content/news/2025/05/30/deref.adoc b/content/news/2025/05/30/deref.adoc new file mode 100644 index 00000000..60afb9b0 --- /dev/null +++ b/content/news/2025/05/30/deref.adoc @@ -0,0 +1,55 @@ += Clojure Deref (May 30, 2025) +Christoph Neumann +2025-05-30 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +== Podcasts, videos, and media + +* https://youtu.be/W7CR-r8XRgE[Let CoPilot extend VS Code with Backseat Driver and Joyride] - CalvaTV +* https://youtu.be/F61YWNapxJg[Clojure MCP Demo] - Metosin +* https://youtu.be/kmW804dNqgA[Scicloj AI Meetup 7 - Can we turn CoPilot into an Interactive Programmer?] - Sci Cloj +* https://youtu.be/OINVSndi9MI[SciNoj Light #1 - 1.2: An intro to the Noj toolkit - Daniel Slutsky] - Sci Cloj +* https://youtu.be/O79Zoaw-rHg[SciNoj Light #1 - 1.3: Probability and statistics - Daniel Slutsky] - Sci Cloj +* https://youtu.be/ERvoEvNZTII[SciNoj Light #1 - 1.4: Customer churn analysis, LLMs & logic programming - siavash mohammady] - Sci Cloj +* https://youtu.be/M6ojW4LyxGU[SciNoj Light #1 - 1.5: Linear Foundations & Nonlinear Frontiers - Jelena Losic] - Sci Cloj +* https://youtu.be/NXwunJXqfZU[SciNoj Light #1 - 1.6: RAGgedy Ann's Big Adventure - Paula Gearon] - Sci Cloj +* https://youtu.be/9AUxV1e0sNk[SciNoj Light #1 - 1.7: Parliamentary Questions - RAG Evaluation - Eoin Carney] - Sci Cloj +* https://youtu.be/_9QjVjBNxjY[SciNoj Light #1 - 1.8 - Discussion: RAGs and Structured Knowledge] - Sci Cloj +* https://youtu.be/7Uc5GnYT03A[SciNoj Light #1 - 1.9: Noj Deep Dive - Harold & Daniel Slutsky] - Sci Cloj +* https://youtu.be/MfA8Tyt7Rgk[SciNoj Light #1 - 1.10: Brain data in Clojure - Lorelai Lyons] - Sci Cloj +* https://youtu.be/RXr9i-aw0lM[SciNoj Light #1 - 2.1: 1D Viscous Fluid Flow Data Analysis, Burgers’ Equation - Siyoung Byun] - Sci Cloj +* https://youtu.be/wdjtHjvtGUQ[SciNoj Light #1 - 2.2: UK Electricity Demand Time Series Forecasting - Anton Lobach] - Sci Cloj +* https://youtu.be/RrgxbCyECVw[SciNoj Light #1 - 2.3: Tropical cyclone trajectory modelling - K Ram Narayan, Naimish Mani B] - Sci Cloj +* https://youtu.be/GbqerAZmjco[SciNoj Light #1 - 2.4: Studying planning with a novel video game - Cvetomir Dimov] - Sci Cloj +* https://youtu.be/d6wWL1I2POE[SciNoj Light #1 - 2.5: Building a Data Science Ecosystem in Clojure - Kira Howe] - Sci Cloj +* https://youtu.be/3HZ5rngHzWM[SciNoj Light #1 - 2.7: The Impact of Lane Reductions - Heather Moore-Farley] - Sci Cloj + +== Blogs, articles, and projects + +* https://blog.agical.se/en/posts/a-rich-poor-man-x-s-css-hot-reload/[A rich poor man's CSS hot reload] - Peter Strömberg +* https://scicloj.github.io/scinoj-light-1/schedule.html[SciNoj Light #1] - Daniel Slutsky +* https://www.metosin.fi/blog/2025-05-27-bruce-hauman-has-done-it-again[Bruce Hauman Has Done It Again – Metosin] - Valtteri Harmainen +* https://clojurecivitas.github.io/conferences/scinoj_light_1/notes/hallway_track.html[The Hallway Track: SciNoj Light #1 Data Analysis Stories – Clojure Civitas] - Timothy Pratley +* https://www.thoughtfull.systems/notes/2025-05-30-how-to-reuse-a-macro-like-a-function/[How to reuse a macro like a function] - technosophist + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/bhauman/clojure-mcp[clojure-mcp] - Clojure MCP - REPL-Driven Development with AI Assistance +* https://github.com/clojure-emacs/inf-clojure[inf-clojure] https://github.com/clojure-emacs/inf-clojure/releases/tag/v3.3.0[3.3.0] - Basic interaction with a Clojure subprocess +* https://github.com/behrica/scicloj.ml.smiledf[scicloj.ml.smiledf] - A library to convert between Smile dataframes and tech.ml datasets +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.05.27-13.56.57[2025.05.27-13.56.57] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/borkdude/unused-deps[unused-deps] - Find unused deps in a clojure project +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/releases/tag/v0.0.13[0.0.13] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used as an MCP server. +* https://github.com/TheFakeLorLyons/brainflow-java[brainflow-java] https://github.com/TheFakeLorLyons/brainflow-java/tree/v1.0.006[1.0.006] - Containing only the java brainflow implementation so that it is not necessary to push the brainflow code directly inside the brainfloj clojure wrapper. +* https://github.com/athos/sweet-array[sweet-array] https://github.com/athos/sweet-array/releases/tag/0.3.0[0.3.0] - Array manipulation library for Clojure with "sweet" array type notation and more safety by static types +* https://github.com/igrishaev/remus[remus] https://github.com/igrishaev/remus/blob/master/CHANGELOG.md[0.2.5] - Attentive RSS/Atom feed parser for Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/releases/tag/v0.8.148[0.8.148] - Light-weight ClojureScript dialect +* https://github.com/seancorfield/build-uber-log4j2-handler[build-uber-log4j2-handler] https://github.com/seancorfield/build-uber-log4j2-handler/releases/tag/v2.24.3[2.24.3] - A conflict handler for log4j2 plugins cache files for the tools.build uber task. +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.2.1] - Machine learning functions for tech.ml.dataset and metamorph +* https://github.com/clojure-emacs/clojure-mode[clojure-mode] https://github.com/clojure-emacs/clojure-mode/releases/tag/v5.20.0[5.20.0] - Emacs support for the Clojure(Script) programming language diff --git a/content/news/2025/06/02/clojure-1-12-1.adoc b/content/news/2025/06/02/clojure-1-12-1.adoc new file mode 100644 index 00000000..4d80f1dc --- /dev/null +++ b/content/news/2025/06/02/clojure-1-12-1.adoc @@ -0,0 +1,12 @@ += Clojure 1.12.1 +Alex Miller +2025-06-02 +:jbake-type: post + +Clojure 1.12.1 is now available! Find download and usage information on the <> page. + +* https://clojure.atlassian.net/browse/CLJ-2899[CLJ-2899] - Revert change in semantics of qualified symbol in invocation position if field and method of same name +* https://clojure.atlassian.net/browse/CLJ-2898[CLJ-2898] - Objects that are both IFn and FunctionalInterface unnecessarily get converted to FI +* https://clojure.atlassian.net/browse/CLJ-2888[CLJ-2888] - gen-class - did not support new array class symbol syntax +* https://clojure.atlassian.net/browse/CLJ-2886[CLJ-2886] - add-libs - send only procurer keys to tool invocation +* https://clojure.atlassian.net/browse/CLJ-2906[CLJ-2906] - Add missing :added metadata to 1.12 functions diff --git a/content/news/2025/06/06/deref.adoc b/content/news/2025/06/06/deref.adoc new file mode 100644 index 00000000..fa0a1fa4 --- /dev/null +++ b/content/news/2025/06/06/deref.adoc @@ -0,0 +1,44 @@ += Clojure Deref (June 6, 2025) +Christoph Neumann +2025-06-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +== Podcasts, videos, and media + +* https://youtu.be/plMpFV5s8nY[Vibe Coding With Clojure-MCP: Bruce Hauman/Luke Burton/Gene Kim] - IT Revolution +* https://youtu.be/iQ22MhGSS-g[7 UIs with Replicant, Ep 6: Timer] - Replicant TV + +== Blogs, articles, and projects + +* https://building.nubank.com/clojure-developer-advocate-nubank/[Building the Future of Clojure: Welcoming Christoph Neumann as Nubank’s First Clojure Developer Advocate - Building Nubank] - Nubank Editorial +* https://cjohansen.no/keys/[On keys and their usage] - Christian Johansen +* https://magnars.com/three-tidbits/[Three Tiny Tidbits That Made Adding Municipalities Effortless] - Magnar Sveen +* https://clojurecivitas.github.io/clojure/transducers/what_if.html[What if… we were taught transducers first? – Clojure Civitas] - Sean Corfield +* https://lambdaisland.com/blog/2025-06-03-beyond-the-if-pattern[Beyond the If Pattern] - Laurence Chen +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-3[Towards React Server Components in Clojure, Part 3 | Roman Liutikov, Software Engineer] - Roman Liutikov +* https://factorhouse.io/blog/articles/beyond-reagent-with-hsx-and-rfx/[Factor House | Blog | Beyond Reagent: Migrating to React 19 with HSX and RFX] - Thomas Crowley +* https://xtdb.com/blog/building-a-bitemp-index-3-storage[Building a Bitemporal Index (part 3): Storage · XTDB] - James Henderson +* https://www.ooloi.org/home/the-musical-journey-to-understanding-transducers-building-oolois-piece-walker[The Musical Journey to Understanding Transducers: Building Ooloi's Piece-Walker] - Peter Bengtson +* https://jank-lang.org/blog/2025-06-06-next-phase-of-interop/[The next phase of jank's C++ interop] - Jeaye Wilkerson + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/clojure[clojure] https://clojure.org/news/2025/06/02/clojure-1-12-1[1.12.1] - Clojure +* https://clojure.org/reference/clojure_cli[clojure_cli] https://clojure.org/releases/tools#v1.12.1.1550[1.12.1.1550] - Clojure CLI +* https://redplanetlabs.com/download[rama] https://github.com/redplanetlabs/rama-release-notes/#110[1.1.0] - The 100x Developer Platform +* https://github.com/gersak/timing[timing] - Time computation library with CRON scheduling capability +* https://github.com/StudistCorporation/annotation-reporter[annotation-reporter] - GitHub annotation test reporter for Kaocha +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/releases/tag/v0.2.0[0.2.0] - A policy-as-code tool with which you can write security policies using Clojure. +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/releases/tag/v0.5.0[0.5.0] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.10.0] - pronounced "speckle": a TDD/BDD framework for Clojure. +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/releases/tag/v2025.06.05[2025.06.05] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/babashka/http-client[http-client] https://github.com/babashka/http-client/releases/tag/v0.4.23[0.4.23] - HTTP client for Clojure and Babashka built on java.net.http +* https://github.com/amiorin/big-container[big-container] https://github.com/amiorin/big-container/blob/main/CHANGELOG.md[0.1.45] - doom emacs done right. +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-06-03[2025-06-03] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta14] - Easy layered graphics with Hanami & Tablecloth diff --git a/content/news/2025/06/16/deref.adoc b/content/news/2025/06/16/deref.adoc new file mode 100644 index 00000000..41b3b333 --- /dev/null +++ b/content/news/2025/06/16/deref.adoc @@ -0,0 +1,62 @@ += Clojure Deref (June 16, 2025) +Christoph Neumann +2025-06-16 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +https://2025.clojure-conj.org/[Clojure/Conj 2025] will be held Nov 12-14 in Charlotte, NC. Early Bird Registration is now open. We look forward to seeing you in-person and online! + +== Podcasts, videos, and media + +* https://youtu.be/QIam96cpIoI[Dustin Getz - Electric Clojure Differential Dataflow for UI (KEYNOTE)] - LambdaConf +* https://youtu.be/2TY6cJ8YiwU[SciNoj Light #1 - 2.6: macroexpand-1 community session] - Sci Cloj +* https://youtu.be/i3x0z9mzWm0[Clojure visual-tools 34 - partial recording: nrepl-ws-server, nrepl-ws-client, Clay] - Sci Cloj +* https://youtu.be/JgksTXhSumw[Clojure Corner: Interview with Martin Kavalar] - Flexiana +* https://youtu.be/25lJNRibYv8[Simple ideas with huge impact from Clojure and Rama (by Nathan Marz)] - London Clojurians +* https://youtu.be/AGTDfXKGvNI[UI, Pure and Simple (by Christian Johansen)] - London Clojurians +* https://youtu.be/36hOSp83ozM[Scicloj AI Meetup 8: Clojure-MCP] - Sci Cloj +* https://youtu.be/kRd4JYIiWb0[Designing Clobber: A Deep Dive into a Clojure-Powered Editor for Text and Code] - phronmophobic +* https://zencastr.com/z/jXOA-uA9[defn episode 3d32130bbe3d Drew Raines] - @defn podcast +* https://youtu.be/n6ICeRyXHsI[Turning the Conference Inside Out - reflecting backward & forward on Clojure conferences and growth] - Sci Cloj +* https://youtu.be/MiIsqKfTW58[Functional Creative Coding with Patterning (by Phil Jones)] - London Clojurians +* https://www.therepl.net/episodes/56/[XTDB: A Bitemporal database in Clojure] - The REPL +* https://youtu.be/-yYJV7WEFjI[CoPilot hacked my editor] - CalvaTV + +== Blogs, articles, and projects + +* https://bytes.vadeai.com/how-one-clojure-function-destroyed-agent-framework-completely/[How One Clojure Function Destroyed Agent Framework Completely] - Pragyan Tripathi +* https://forum.defold.com/t/defold-editor-development-tips-and-tricks/80710[Defold Editor Development. Tips and Tricks] - Alexey Gulev +* https://www.wedesoft.de/software/2025/06/14/akima-splines/[Akima splines] - Jan Wedekind + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/coconutpalm/clojure-desktop-toolkit[clojure-desktop-toolkit] https://github.com/coconutpalm/clojure-desktop-toolkit/releases/tag/v0.3.1[0.3.1] - Create native state-of-the-art desktop applications in Clojure using Eclipse's SWT graphics toolkit. +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.4.0[0.4.0] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/nextdoc/ai-tools[ai-tools] https://github.com/nextdoc/ai-tools/tree/1.0[1.0] - tools that help AI development assistants do Clojure +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/releases/tag/0.19.1[0.19.1] - High-performance data-driven data specification library for Clojure/Script. +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/releases/tag/v1.7.0[1.7.0] - A standalone BDD test framework for Clojure +* https://github.com/nextjournal/markdown[markdown] https://github.com/nextjournal/markdown/blob/main/CHANGELOG.md[0.7.186] - A cross-platform clojure/script parser for Markdown +* https://github.com/seancorfield/deps-new[deps-new] https://github.com/seancorfield/deps-new/releases/tag/v0.9.0[0.9.0] - Create new projects for the Clojure CLI / deps.edn +* https://github.com/xtdb/xtdb[xtdb] https://github.com/xtdb/xtdb/releases/tag/v2.0.0[2.0.0] - An immutable SQL database for application development, time-travel reporting and data compliance. Developed by @juxt +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/releases/tag/v1.3.1048[1.3.1048] - A modern low-level Clojure wrapper for JDBC-based access to databases. +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/releases/tag/v1.12.202[1.12.202] - Native, fast starting Clojure interpreter for scripting +* https://github.com/borkdude/quickblog[quickblog] https://github.com/borkdude/quickblog/releases/tag/v0.4.7[0.4.7] - Light-weight static blog engine for Clojure and babashka +* https://github.com/NoahTheDuke/fluent-clj[fluent-clj] https://github.com/NoahTheDuke/fluent-clj/releases/tag/v0.1.0[0.1.0] - Project Fluent for Clojure/script +* https://github.com/gersak/patcho[patcho] - Patching micro lib for Clojure +* https://github.com/lsolbach/qclojure[qclojure] - A functional quantum computer programming library for Clojure with simulation backend and visualizations. +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/releases/tag/1.6.0[1.6.0] - A project to improve experience of using Clojure stdlib +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.11] - An extremely lightweight fault tolerance library for Clojure(Script) and Babashka +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/releases/tag/v0.5.26[0.5.26] - File system utility library for Clojure +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.519[2.0.519] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/pedestal/pedestal[pedestal] https://github.com/pedestal/pedestal/blob/master/CHANGELOG.md[0.8.0-beta-1] - The Pedestal Server-side Libraries +* https://github.com/cjohansen/dataspex[dataspex] https://github.com/cjohansen/dataspex/tree/v2025.06.7[2025.06.7] - See the shape of your data: point-and-click Clojure(Script) data browser +* https://github.com/BetterThanTomorrow/joyride[joyride] https://github.com/BetterThanTomorrow/joyride/releases/tag/v0.0.47[0.0.47] - Making VS Code Hackable like Emacs since 2022 +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.4.0] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/exoscale/coax[coax] https://github.com/exoscale/coax/tree/2.0.4[2.0.4] - Clojure.spec coercion library for clj(s) +* https://github.com/seancorfield/build-uber-log4j2-handler[build-uber-log4j2-handler] https://github.com/seancorfield/build-uber-log4j2-handler/releases/tag/v2.25.0[2.25.0] - A conflict handler for log4j2 plugins cache files for the tools.build uber task. +* https://github.com/seancorfield/logging4j2[logging4j2] https://github.com/seancorfield/logging4j2/releases/tag/v1.0.3[1.0.3] - A Clojure wrapper for log4j2 diff --git a/content/news/2025/06/20/deref.adoc b/content/news/2025/06/20/deref.adoc new file mode 100644 index 00000000..748a7635 --- /dev/null +++ b/content/news/2025/06/20/deref.adoc @@ -0,0 +1,36 @@ += Clojure Deref (June 20, 2025) +Christoph Neumann +2025-06-20 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +The https://2025.clojure-conj.org/[Clojure/conj] 2025 https://2025.clojure-conj.org/speakers[Call for Presentations] is open now until July 27! We are seeking proposals for both 30 minute sessions and 10 minute lightning talks. + +== Podcasts, videos, and media + +* https://youtu.be/kGOB9IPKHfo[Christoph Neumann guests on Apropos Clojure 2025-06-17] - apropos clojure +* https://youtu.be/v43Kfc7fYT0[Writing Model Content Protocol (MCP) Servers in Clojure (by Vedang Manerikar)] - London Clojurians +* https://youtu.be/v9d_1k5V8RU[Three personal software products I created with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.juxt.pro/blog/value-and-cost-of-a-test/[JUXT Blog: The Value and Cost of a Test] - James Henderson +* https://biffweb.com/p/edn-html-forms/[EDN-infused plain html forms] - Jacob O'Bryant + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/taoensso/nippy[nippy] https://github.com/taoensso/nippy/releases/tag/v3.6.0[3.6.0] - Fast serialization library for Clojure +* https://github.com/ivarref/yoltq[yoltq] https://github.com/ivarref/yoltq/releases/tag/v0.2.82[0.2.82] - An opinionated Datomic queue for building (more) reliable systems. Supports retries, backoff, ordering and more. +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/releases/tag/v0.10.46[0.10.46] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/releases/tag/v0.7.23[0.7.23] - Execute Clojure(Script) directly from browser script tags via SCI +* https://github.com/ivarref/finddep[finddep] - Find the root (top) of a given dependency in Clojure +* https://github.com/taoensso/trove[trove] - Modern logging facade for Clojure/Script +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.10] - A Clojure library exploring the application of pure reasoning algorithms. +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.203] - Native, fast starting Clojure interpreter for scripting +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/releases/tag/v0.8.149[0.8.149] - Light-weight ClojureScript dialect +* https://github.com/BetterThanTomorrow/joyride[joyride] https://github.com/BetterThanTomorrow/joyride/releases/tag/v0.0.50[0.0.50] - Making VS Code Hackable like Emacs since 2022 diff --git a/content/news/2025/06/27/deref.adoc b/content/news/2025/06/27/deref.adoc new file mode 100644 index 00000000..b792c4ce --- /dev/null +++ b/content/news/2025/06/27/deref.adoc @@ -0,0 +1,60 @@ += Clojure Deref (June 27, 2025) +Christoph Neumann +2025-06-27 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +The https://2025.clojure-conj.org/[Clojure/conj] 2025 https://2025.clojure-conj.org/speakers[Call for Presentations] is open now until July 27! We are seeking proposals for both 30 minute sessions and 10 minute lightning talks. + +== Podcasts, videos, and media + +* https://youtu.be/WUvu3IE3pj0[Parsing GraphQL with Clojure] - Clojure Diary +* https://youtu.be/9kiuwsfCDFI[Datomic at Nubank, Simplicity Scaled (by Jordan Miller)] - London Clojurians +* https://youtu.be/XOTddSn2da0[Bring your live app state inspects inside VS Code with Dataspex in Calva Power Tools] - CalvaTV +* https://youtu.be/Yb0JySPrPwc[Recognizing regular patterns in mixed type sequences using Symbolic Finite Automata (by Jim Newton)] - London Clojurians + +== Blogs, articles, and projects + +* https://x.com/dustingetz/status/1936403466722701757[Reaction to a FP evangelism talk last week by Michael Pilquist] - Dustin Getz +* https://medium.com/@_jba/notes-from-starting-a-mobile-application-from-0-in-2025-2c0f775148ac[Notes from starting a mobile application from 0 in 2025.] - Julien Bille +* https://code.thheller.com/blog/shadow-cljs/2025/06/24/what-the-heck-just-happened.html[What The Heck Just Happened?] - Thomas Heller +* https://yamlscript.org/blog/2025-06-24/how-does-ys-work/[How Does YS Work? - YS — YAML Done Wisely] - Ingy döt Net +* https://code.thheller.com/blog/shadow-cljs/2025/06/25/what-the-heck-are-you-talking-about.html[What The Heck Are You Talking About?] - Thomas Heller +* link:++https://yamlscript.org/blog/2025-06-25/ai--clojure-functions-in-yaml/++[AI + Clojure Functions in YAML - YS — YAML Done Wisely] - Ingy döt Net +* https://buttondown.com/tensegritics-curiosities/archive/accelerating-maps-with-join-with/[Accelerating maps with join-with] - Christophe Grand +* https://code.thheller.com/blog/shadow-cljs/2025/06/27/case-study-reagent-with-macro-help.html[Case Study: Reagent With Macro Help] - Thomas Heller +* link:++https://yamlscript.org/blog/2025-06-27/fun-fridays--rosetta-code/++[Fun FridaYS — Rosetta Code - YS — YAML Done Wisely] - Ingy döt Net + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/editor-code-assistant/eca[eca] - Editor Code Assistant (ECA) - AI pair programming capabilities in any editor +* https://github.com/TheFakeLorLyons/brainfloj[brainfloj] - A BrainFlow wrapper for Clojure +* https://github.com/ikappaki/scittlets[scittlets] - A repository of Scittle libraries +* https://github.com/bhauman/clojure-mcp[clojure-mcp] https://github.com/bhauman/clojure-mcp/blob/main/CHANGELOG.md[0.1.5-alpha] - Clojure MCP +* https://github.com/mtmr0x/bud[bud] - A minimalist ClojureScript DOM library with precise, signal-driven reactivity for single-page applications +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/releases/tag/v3.0.0[3.0.0] - Simple performance monitoring library for Clojure/Script +* https://github.com/danielsz/beeld[beeld] - Get the metadata associated with an image. Also contains image utilities: filesize, scale, etc. +* https://github.com/NoahTheDuke/splint[splint] https://github.com/NoahTheDuke/splint/releases/tag/v1.20.0[1.20.0] - A Clojure linter focused on style and code shape. +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/releases/tag/v1.4.31[1.4.31] - Configurable EDN/Clojure parser with location metadata +* https://github.com/s-expresso/clojobuf[clojobuf] https://github.com/s-expresso/clojobuf/blob/main/RELEASES.md[0.2.1] - A clojure(script) library that dynamically interprets protobuf files (.proto) and use the resultant schemas to encode/decode plain clojure(script) map into/from protobuf binaries. +* https://github.com/s-expresso/rubberbuf[rubberbuf] https://github.com/s-expresso/rubberbuf/blob/main/RELEASES.md[0.3.2] - A clojure(script) library to parse protobuf definition (.proto) into abstract syntax tree (AST). +* https://github.com/BetterThanTomorrow/calva-power-tools[calva-power-tools] https://github.com/BetterThanTomorrow/calva-power-tools/releases/tag/v0.0.10[0.0.10] - A VS Code Extension providing commands for extra powerful things in the Clojure ecosystem +* https://github.com/askonomm/ruuter[ruuter] 1.3.5 - A system-agnostic, zero-dependency router +* https://github.com/tamizhvendan/honeyeql[honeyeql] https://github.com/tamizhvendan/honeyeql/blob/master/CHANGELOG.md[1.0.6] - HoneyEQL is a Clojure library enables you to query database using the EDN Query Language. +* https://github.com/cjohansen/replicant[replicant] https://github.com/cjohansen/replicant/tree/v2025.06.21[2025.06.21] - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings. +* https://github.com/scicloj/scicloj.ml.xgboost[scicloj.ml.xgboost] https://github.com/scicloj/scicloj.ml.xgboost/blob/main/CHANGELOG.md[6.4.0] - A xgboost plugin for scicloj.ml +* https://github.com/lsolbach/qclojure[qclojure] https://github.com/lsolbach/qclojure/blob/main/Changelog.md[0.3.0] - A functional quantum computer programming library for Clojure with backend protocols, simulation backends and visualizations. +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/releases/tag/v0.39.0[0.39.0] - Overarch provides a data model for the holistic description of a software system, opening multiple use cases on the model data. Supports C4 and UML diagram generation with PlantUML. +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/releases/tag/v0.0.14[0.0.14] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used as an MCP server. +* https://github.com/polyfy/polylith[polylith] https://github.com/polyfy/polylith/releases/tag/v0.2.22[0.2.22] - A tool used to develop Polylith based architectures in Clojure. +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.4.1] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/clj-commons/aleph[aleph] https://github.com/clj-commons/aleph/blob/master/CHANGES.md[0.9.0] - Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/releases/tag/v1.12.204[1.12.204] - Native, fast starting Clojure interpreter for scripting +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/releases/tag/v0.3.0[0.3.0] - Run tests against common configuration file formats using Clojure! +* https://github.com/rm-hull/nvd-clojure[nvd-clojure] https://github.com/rm-hull/nvd-clojure/blob/main/CHANGELOG.md[5.1.0] - National Vulnerability Database dependency checker for Clojure projects +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/releases/tag/v0.10.47[0.10.47] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs diff --git a/content/reference/async.adoc b/content/reference/async.adoc deleted file mode 100644 index 1a8a7fbf..00000000 --- a/content/reference/async.adoc +++ /dev/null @@ -1,157 +0,0 @@ -= core.async -Alex Miller -2021-11-17 -:type: reference -:toc: macro -:icons: font -:prevpagehref: deps_and_cli -:prevpagetitle: Deps and CLI - -ifdef::env-github,env-browser[:outfilesuffix: .adoc] - -toc::[] - -The core.async library adds support for asynchronous programming using channels. - -== Channels - -Channels are queues that carry values and support multiple writers and readers. Channels are created with `https://clojure.github.io/core.async/#clojure.core.async/chan[chan]`. Values in a channel are stored in a buffer. Buffers are never unbounded and there are several provided buffer types: - -* Unbuffered - `(chan)` - no buffer is used, and a rendezvous is required to pass a value through the channel from writer to reader -* Fixed size - `(chan 10)` -* Dropping - `(chan (dropping-buffer 10))` - fixed size, and when full drop newest value -* Sliding - `(chan (sliding-buffer 10))` - fixed size, and when full drop oldest value - -Channels are first-class values that can be passed around like any other value. - -Channels may optionally be supplied with a <> and an exception handler. The transducer will be applied to values that pass through the channel. If a transducer is supplied, the channel *must* be buffered (transducers can create intermediate values that must be stored somewhere). Channel transducers must not block, whether by issuing i/o operations or by externally synchronizing, else risk impeding or deadlocking go blocks. - -The `ex-handler` is a function of one argument (a Throwable). If an exception occurs while applying the transducer, the `ex-handler` will be invoked, and any non-nil return value will be placed in the channel. If no `ex-handler` is supplied, exceptions will flow and be handled where they occur (note that this may in either the writer or reader thread depending on the operation and the state of the buffer). - -[%hardbreaks] -Creating channels: https://clojure.github.io/core.async/#clojure.core.async/chan[chan] -Buffers: https://clojure.github.io/core.async/#clojure.core.async/buffer[buffer] https://clojure.github.io/core.async/#clojure.core.async/dropping-buffer[dropping-buffer] https://clojure.github.io/core.async/#clojure.core.async/sliding-buffer[sliding-buffer] https://clojure.github.io/core.async/#clojure.core.async/unblocking-buffer%3F[unblocking-buffer?] - -==== Put and take - -Any value can be placed on a channel, except `nil`. The primary operations on channels are _put_ and _take_, which are provided in several variants: - -* Blocking: `https://clojure.github.io/core.async/#clojure.core.async/%3E%21%21[>!!]`, `https://clojure.github.io/core.async/#clojure.core.async/%3C%21%21[!]`, `https://clojure.github.io/core.async/#clojure.core.async/%3C%21[` points in the direction the value travels relative to the channel arg. For example, in `(>!! chan val)` the `>` points into the channel (_put_) and `(!!] https://clojure.github.io/core.async/#clojure.core.async/%3C%21%21[!] https://clojure.github.io/core.async/#clojure.core.async/%3C%21[!`, `> -* <> -* https://clojure.github.io/core.async[API docs] -* https://github.com/clojure/core.async[Source] diff --git a/content/reference/clojure_cli.adoc b/content/reference/clojure_cli.adoc index 75b26058..281ee014 100644 --- a/content/reference/clojure_cli.adoc +++ b/content/reference/clojure_cli.adoc @@ -26,7 +26,7 @@ Any version of the Clojure CLI can use any version of the Clojure language. Gene The CLI is invoked via either `clojure` or `clj`. In general, you can treat these interchangeably but `clj` includes `rlwrap` for extended keyboard editing, particularly useful with the REPL. This reference uses `clj` for REPL examples and `clojure` for non-REPL examples. -Each execution of the Clojure CLI runs a Clojure program by determining all paths, dependencies, and main entry point, then invoking the program on the JVM. The primary kind of execution is determined by `-X`, `-T`, and `-M` (or their absence). Configuration is defined by one or more <> files in combination with the <>. +Each execution of the Clojure CLI runs a Clojure program by determining all paths, dependencies, and main entry point, then invoking the program on the JVM. The primary kind of execution is determined by `-X`, `-T`, and `-M` (or their absence). Configuration is defined by one or more <> files in combination with the <>. @@ -60,14 +60,13 @@ exec-opts: clj-opts: <> Pass JVM option - <> Extra deps.edn data + <> Extra deps.edn data or file <> Ignore user deps.edn file <> Compute and echo classpath <> Print dependency tree <> Use this classpath, ignore deps.edn <> Force classpath computation <> Print path info - <> Print env and command parsing info <> Set specific number of download threads <> Write dep expansion trace.edn <> Print version to stdout and exit @@ -165,7 +164,7 @@ You can use the `-M` exec-opt to invoke clojure.main, which supports calling a n clojure [clj-opt*] -M[aliases] [main-opts] ---- -The -M aliases are pulled from `deps.edn` and combined to form an arg map. The arg map can modify the classpath or supply `:main-opts`, a vector of string main options. See the <> page for more information on the available arguments. +The -M aliases (if provided) are pulled from `deps.edn` and combined to form an arg map. The arg map can modify the classpath or supply `:main-opts`, a vector of string main options. See the <> page for more information on the available main-opts. Common uses: @@ -196,23 +195,23 @@ While `-A` can be used with all execution commands, it is the only exec opt that [[opt_x]] **-X[aliases]** -`-X` takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-X:test` or `-X:test:perf/benchmark`. +`-X` optionally takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-X:test` or `-X:test:perf/benchmark`. -The `-X` exec-opt indicates <>, and all arguments after `-X` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-X`. +The `-X` exec-opt indicates <>, and all arguments after `-X` are arguments to the function being executed, not the CLI. All clj-opts (`-S`, `-P`, etc) must be placed prior to the `-X` in the command line. [[opt_t]] **-Ttoolname, -T[aliases]** `-T` takes either a tool name (always symbols, not keywords) or one or more concatenated <>, which are always simple or qualified keywords, e.g. `-T:test` or `-T:test:perf/benchmark`. -The `-T` exec-opt indicates <>, and all arguments after `-T` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-T`. +The `-T` exec-opt indicates <>, and all arguments after `-T` are arguments to the tool function, not the CLI. All clj-opts (`-S`, `-P`, etc) must be placed prior to the `-T` in the command line. [[opt_m]] **-M[aliases]** -`-M` takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-M:test` or `-M:test:perf/benchmark`. +`-M` optionally takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-M:test` or `-M:test:perf/benchmark`. -The `-M` exec-opt indicates <>, and all arguments after `-M` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-M`. +The `-M` exec-opt indicates <>, and all arguments after `-M` are interpreted by clojure.main. All clj-opts (`-S`, `-P`, etc) must be placed prior to `-M` in the command line. [[opt_p]] **-P** @@ -229,7 +228,7 @@ Also see <> for more information on other ways t [[opt_sdeps]] **-Sdeps deps** -Use `-Sdeps` to supply an additional deps.edn source on the command line. This is used as the last <> in the merge. The deps data will need to be appropriately <> for the command line. +Use `-Sdeps` to supply additional deps.edn data or a path to a deps.edn file on the command line. This is used as the last <> in the merge. The deps data will need to be appropriately <> for the command line. [[opt_srepro]] **-Srepro** @@ -265,11 +264,6 @@ Print environment and path information found and used by the Clojure CLI, mostly This flag does not alter any other execution that may be specified on the command line, so it can be used to debug the location of the cache files for a particular command. -[[opt_sdescribe]] -**-Sdescribe** - -Print configuration settings as edn data and exit. This overlaps in functionality with `-Sverbose` but may be useful for programmatic use. - [[opt_sthreads]] **-Sthreads N** @@ -343,7 +337,7 @@ When multiple aliases are supplied, the keys in the aliases arg maps are merged The alias keys above are meaningful for Clojure CLI execution, but you may define aliases for any purpose. If you are creating a custom tool that needs configuration, it is a good practice to define well-known, namespaced aliases or alias-keys for use by your tool. Please refrain from adding top-level keys to the <> files - they may not always be available via programmatic tools. -Programs run by the Clojure CLI are given the "runtime basis" for the execution, including all alias data. The clojure.java.basis API being added in Clojure 1.12 can be used to retrieve alias data at runtime in the program. +Programs run by the Clojure CLI are given the <> for the execution, including all alias data. The https://clojure.github.io/clojure/#clojure.java.basis[clojure.java.basis] API added in Clojure 1.12 can be used to retrieve alias data at runtime in the program. [[namespaces]] === Namespace resolution @@ -599,7 +593,7 @@ PS D:> clj -X clojure.core/prn :val '{:s1 """nospaces""" :s2 ""has spaces""}' [[programs]] == Programs -The Clojure CLI is designed to provide access to programs (functions) in other libraries with their own independent classpath. This capability is leveraged to provide expanded functionality via the built-in `:deps` alias in the root deps.edn, which provides the https://github.com/clojure/tools.deps.cli[tools.deps.cli] (see https://clojure.github.io/tools.deps.cli[API]). +The Clojure CLI is designed to provide access to programs (functions) in other libraries with their own independent classpath. This capability is leveraged to provide expanded functionality via the built-in `:deps` alias in the root deps.edn, which provides the https://github.com/clojure/tools.deps.cli[tools.deps.cli] (see https://clojure.github.io/tools.deps.cli/[API]). [[deps_list]] === Dependency list @@ -734,7 +728,7 @@ The params that can be provided are: `find-versions` will print the git or Maven coordinates, one per line, to the console. -[[deps_install]] +[[deps_mvn_install]] === Local Maven install The `-X:deps mvn-install` program is provided with the Clojure CLI for convenience and can be executed with `-X` to install a jar into your local Maven cache. @@ -769,7 +763,7 @@ As mentioned above, edn strings must be in double quotes, and then single-quoted A pom file must be either provided explicitly, generated from :lib/:version, or found inside the .jar file (the default). -[[deps_pom]] +[[deps_mvn_pom]] === Generate Maven pom Use the following program to generate or update an existing pom.xml with the deps and paths from your project: @@ -916,7 +910,7 @@ The coordinate attributes determine which procurer is used. In general, most pro Some procurers may also look for configuration attributes at the root of the deps.edn configuration map using the the same qualifier. -[[procurer_maven]] +[[procurer_mvn]] === Maven The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default). Other JVM-based tools may also use this cache. diff --git a/content/reference/deps_edn.adoc b/content/reference/deps_edn.adoc index 2a09d248..3cb302d2 100644 --- a/content/reference/deps_edn.adoc +++ b/content/reference/deps_edn.adoc @@ -15,9 +15,9 @@ toc::[] The deps.edn file is a data file specifying all information needed to form a project classpath, including deps, paths, and external dependency repository information. The deps.edn file format is used by the https://github.com/clojure/tools.deps[tools.deps library] and the <>. -If you are building a tool that would like to leverage deps.edn, create well-known namespaced <> as a means to convey tool configuration, rather than adding new arbitrary tags elsewhere in the deps.edn data - these may not be preserved or conveyed during processing. Tools can access alias data via the basis at runtime, or programatically via tools.deps. +If you are building a tool that would like to leverage deps.edn, create well-known namespaced <> as a means to convey tool configuration, rather than adding new arbitrary tags elsewhere in the deps.edn data - these may not be preserved or conveyed during processing. Tools can access alias data via the <> at runtime, or programatically via tools.deps. -.Index of all attributes +.Index of deps.edn attributes [[index]] [subs=+macros] ---- @@ -75,7 +75,7 @@ If you are building a tool that would like to leverage deps.edn, create well-kno <> {"repo" {<> "https://..." <> {<> true <> :daily - <> true} + <> :warn} <> {#_same_as_releases}}} ;; Tool publishing @@ -140,7 +140,7 @@ Examples: [[deps_mvn]] == Maven deps -The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default or override with <>). Other JVM-based tools may also use this cache. +The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default or override with <>). Other JVM-based tools may also use this cache. Maven libraries are located in Maven repositories using "Maven coordinates", typically the groupId, artifactId, and version (sometimes also abbreivated as GAV). In deps.edn, the library name is parsed as `groupId/artifactId` and the version is taken from `:mvn/version`. Some Maven artifacts also have a "classifier", which is a variant of a particular artifact. In the Maven procurer, classifiers are included at the end of the lib name, separated by a `$` in this format: `groupId/artifactId$classifier`. @@ -209,8 +209,8 @@ The most common git url protocols are https and ssh. https repos will be accesse For more information on creating keys and using the ssh-agent to manage your ssh identities, GitHub provides excellent info: -* https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ -* https://help.github.com/articles/working-with-ssh-key-passphrases/ +* https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent +* https://docs.github.com/en/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases Other protocols (including local and file) should work but are not commonly used. @@ -375,7 +375,7 @@ The `:main-opts` are a collection of string options provided to a program starte [[procurers]] == Procurer config -[[procurers_mvn]] +[[procurer_mvn]] === Maven The Maven procurer uses the Maven resolver and Maven repository system to download artifacts. This is described further in the <> section. Some options can be configured in the deps.edn. @@ -405,11 +405,9 @@ The `:url` is a string url to the repository root. `http://` urls are not supported by default, but see <> for information on the `CLOJURE_CLI_ALLOW_HTTP_REPO` if you need this. -[[procurer_mvn_repos_releases]] -[[procurer_mvn_repos_snapshots]] ==== :releases and :snapshots -The `:releases` attribute is optional, but can be used to override the default repository configuration for release (non-snapshot artifacts): +[[procurer_mvn_repos_releases]]The `:releases` attribute is optional, but can be used to override the default repository configuration for release (non-snapshot artifacts): [source,clojure] ---- @@ -421,16 +419,13 @@ The `:releases` attribute is optional, but can be used to override the default r :checksum :fail}}}} ---- -The `:snapshots` attribute is the same as the `:releases` attribute, but applies repository policy for snapshot artifacts. +[[procurer_mvn_repos_snapshots]]The `:snapshots` attribute is the same as the `:releases` attribute, but applies repository policy for snapshot artifacts. Repository attributes: -[[procurer_mvn_repos_enabled]] -[[procurer_mvn_repos_update]] -[[procurer_mvn_repos_checksum]] -* `:enabled` is a boolean, default=true. Sometimes this is used to target a repository only for releases or snapshots. -* `:update` is a flag for how often to check the repo for updates, valid values are `:daily` (default), `:always`, `:never`, or an interval in minutes (integer). -* `:checksum` is a flag for checksum validation, one of `:warn` (default), `:fail`, `:ignore`. +* [[procurer_mvn_repos_enabled]]`:enabled` is a boolean, default=true. Sometimes this is used to target a repository only for releases or snapshots. +* [[procurer_mvn_repos_update]]`:update` is a flag for how often to check the repo for updates, valid values are `:daily` (default), `:always`, `:never`, or an interval in minutes (integer). +* [[procurer_mvn_repos_checksum]]`:checksum` is a flag for checksum validation, one of `:warn` (default), `:fail`, `:ignore`. Also see <> for additional configuration in the Clojure CLI. @@ -493,3 +488,70 @@ If your library needs preparation, add the `:deps/prep-lib` key to your `deps.ed ==== :fn `:fn` is the function to invoke with `-T` during prep + +[[basis]] +== Runtime basis + +The runtime basis is a representation of the dependency environment when the Clojure runtime starts. It includes information about the dependencies, classpath, and how the basis was created. + +The runtime basis can be accessed from within Clojure, using the https://clojure.github.io/clojure/#clojure.java.basis[clojure.java.basis] API. It includes access to both the initial basis and the current basis, which may be modified by the https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-libs[add-libs] and related functions. + +.Index of runtime basis attributes +[[basis_index]] +[subs=+macros] +---- +{;; The basis is a superset of the merged <> + ;; so may contain all of those attributes plus these: + + ;; Project paths + <> {:dir "project/dir" + + :root :standard|path|map + :user :standard|path|map + :project :standard|path|map + :extra path|map + + :aliases [:alias1 ...] + :args {arg val}} + <> {arg val} + <> {lib coord} + <> {classpath-path classpath-info} + <> [classpath-path ...]} +---- + +[[basis_config]] +=== :basis-config + +The `:basis-config` attribute contains the parameters used when the basis was created and should be sufficient to recreate the basis later. That property is in particular used by https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/sync-deps[sync-deps]. + +The `:basis-config` may have the following attributes: + +* `:dir` - absolute or relative path to the project directory (containing project deps.edn), defaults to current directory +* `:root` - root deps.edn source, one of `:standard` (read from classpath), a path, or a literal map +* `:user` - user deps.edn source, one of `:standard` (read from user config dir), a path, or a literal map +* `:project` - project deps.edn source, one of `:standard` (read from `:dir`), a path, or a literal map +* `:extra` - extra deps.edn source, either a path or a literal map +* `:aliases` - a vector of supplied alias keywords providing argmap keys +* `:args` - a map of extra argmap args, applied after alias argmaps are merged + +[[basis_argmap]] +=== :argmap + +The basis `:argmap` contains the merged argmap that was used when resolving dependencies and computing the classpath. The argmaps can be supplied either indirectly by the `:aliases` or directly via the `:args` key when creating the basis. + +See the <> for a complete list of argmap args and what they do. + +[[basis_libs]] +=== :libs + +The basis `:libs` key is a map of every dependency, both direct and transitive, included in the basis classpath. The `:libs` value is a map from lib name (qualified symbol) to lib coordinate with some additional keys. While most of the keys are non-normative, one important added key is the `:paths` vector of file paths to add to the classpath for this lib. + +[[basis_classpath]] +=== :classpath + +The `:classpath` key is a map where the keys are classpath paths (strings) and the values describe why that path is included. Most commonly this will be either a map with `:lib-name` key (for libs) or a map with `:path-key` key for source paths. + +[[basis_classpath_roots]] +=== :classpath-roots + +The `:classpath-roots` key is a vector that orders the classpath (the path strings should match the keys of the `:classpath` key). See the <> for ordering rules. diff --git a/content/reference/protocols.adoc b/content/reference/protocols.adoc index 1ea4e7a5..33695220 100644 --- a/content/reference/protocols.adoc +++ b/content/reference/protocols.adoc @@ -51,6 +51,7 @@ A protocol is a named set of named methods and their signatures, defined using h ** all are namespace-qualified by the namespace enclosing the definition * The resulting functions dispatch on the type of their first argument, and thus must have at least one argument * defprotocol is dynamic, and does not require AOT compilation +* Note: primitive type hints are not supported on protocol functions https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/defprotocol[defprotocol] will automatically generate a corresponding interface, with the same name as the protocol, e.g. given a protocol my.ns/Protocol, an interface my.ns.Protocol. The interface will have methods corresponding to the protocol functions, and the protocol will automatically work with instances of the interface. diff --git a/content/releases/devchangelog.adoc b/content/releases/devchangelog.adoc index 4fefe452..31568a9d 100644 --- a/content/releases/devchangelog.adoc +++ b/content/releases/devchangelog.adoc @@ -680,7 +680,7 @@ clj -A:clj/next - https://clojure.atlassian.net/browse/CLJ-2128[CLJ-2128] spec error during macroexpand no longer throws compiler exception with location - Updated to use spec.alpha 0.1.123 -=== https://groups.google.com/forum/#!topic/clojure/nB4qnDNGS2A[1.9.0-alpha16] (Apr 27, 2017) +=== https://groups.google.com/g/clojure/c/nB4qnDNGS2A[1.9.0-alpha16] (Apr 27, 2017) 1.9.0-alpha16 includes the following changes since 1.9.0-alpha15: diff --git a/content/releases/downloads.adoc b/content/releases/downloads.adoc index 8d93c2c6..90302079 100644 --- a/content/releases/downloads.adoc +++ b/content/releases/downloads.adoc @@ -15,7 +15,7 @@ These tools allow you to start a REPL for interactive use, download Clojure libr ==== [[stable]] -== Stable Release: 1.12.0 (Sep 5, 2024) +== Stable Release: 1.12.1 (Jun 2, 2025) Include the release in your project using the following coordinates: @@ -23,19 +23,19 @@ deps.edn coordinate: [source,clojure] ---- -org.clojure/clojure {:mvn/version "1.12.0"} +org.clojure/clojure {:mvn/version "1.12.1"} ---- Leiningen dependency: [source,clojure] ---- -[org.clojure/clojure "1.12.0"] +[org.clojure/clojure "1.12.1"] ---- === Dependencies -Clojure 1.12.0 depends on the following core libraries: +Clojure 1.12.1 depends on the following core libraries: * `org.clojure/spec.alpha {:mvn/version "0.5.238"}` (https://repo1.maven.org/maven2/org/clojure/spec.alpha/0.5.238/spec.alpha-0.5.238.jar[jar]) * `org.clojure/core.specs.alpha {:mvn/version "0.4.74"}` (https://repo1.maven.org/maven2/org/clojure/core.specs.alpha/0.4.74/core.specs.alpha-0.4.74.jar[jar]) @@ -74,7 +74,7 @@ Leiningen dependency: [org.clojure/clojure "1.12.0-rc2"] ---- -* https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.clojure%22%20AND%20a%3A%22clojure%22%20AND%20v%3A1.12.0*[Clojure 1.12.0 pre-release builds] +* https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.clojure%22%20AND%20a%3A%22clojure%22%20AND%20v%3A1.13.0*[Clojure 1.13.0 pre-release builds] * <> * Dependencies: ** `org.clojure/spec.alpha {:mvn/version "0.5.238"}` @@ -99,7 +99,7 @@ Specify the version of Clojure that you want in your deps.edn: [source,clojure] ---- {:deps - {org.clojure/clojure {:mvn/version "1.12.0"}}} + {org.clojure/clojure {:mvn/version "1.12.1"}}} ---- === Via Leiningen @@ -108,7 +108,7 @@ Modify the dependencies and repositories sections of your https://leiningen.org/ [source,clojure] ---- ; under dependencies, select the release of clojure that you want -:dependencies [[org.clojure/clojure "1.12.0"]] +:dependencies [[org.clojure/clojure "1.12.1"]] ---- == Using Clojure SNAPSHOT releases diff --git a/content/releases/downloads_older.adoc b/content/releases/downloads_older.adoc index 965d0b18..663d87fb 100644 --- a/content/releases/downloads_older.adoc +++ b/content/releases/downloads_older.adoc @@ -9,6 +9,7 @@ ifdef::env-github,env-browser[:outfilesuffix: .adoc] == Older Clojure Releases +* https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/[Clojure 1.12.1] (Jun, 2025) - https://clojure.org/news/2025/06/02/clojure-1-12-1[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/[Clojure 1.12.0] (Sep, 2024) - https://clojure.org/news/2024/09/05/clojure-1-12-0[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.11.4/[Clojure 1.11.4] (Aug, 2024) - https://clojure.org/news/2024/08/03/clojure-1-11-4[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.11.3/[Clojure 1.11.3] (Apr, 2024) - https://clojure.org/news/2024/04/24/clojure-1-11-3[release notes] diff --git a/content/releases/tools.adoc b/content/releases/tools.adoc index 3665b919..39b21f2e 100644 --- a/content/releases/tools.adoc +++ b/content/releases/tools.adoc @@ -20,7 +20,42 @@ For more information see the following docs: == Releases -Recent official releases are described here. Prereleases and older versions can be found in the https://github.com/clojure/brew-install/blob/1.11.1/CHANGELOG.md[repo changelog]. +Recent official releases are described here. Prereleases and older versions can be found in the https://github.com/clojure/brew-install/blob/1.12.1/CHANGELOG.md[repo changelog]. + +=== 1.12.1.1550 (Jun 3, 2025) [[v1.12.1.1550]] + +* `-Sdescribe` - undocumented (prefer using tools.deps APIs instead) +* `-Sverbose` - add explicit deps.edn references + +=== 1.12.1.1543 (Jun 3, 2025) [[v1.12.1.1543]] + +* Update to Clojure 1.12.1 + +=== 1.12.1.1538 (Jun 2, 2025) [[v1.12.1.1538]] + +* Update to Clojure 1.12.1 + +=== 1.12.0.1530 (Mar 5, 2025) [[v1.12.0.1530]] + +* clj -Sdeps can now take a path to an edn file instead of a literal map +* Fix computation of tool argmap when both aliases and tools are used together +* Update tools.deps to latest + +=== 1.12.0.1517 (Feb 10, 2025) [[v1.12.0.1517]] + +* During dep expansion, only consider lib to be omitted if all parent paths to root are omitted +* Memoize dep lookups during dep expansion to avoid unnecessary calls +* Update tools.deps, tools.deps.cli to latest + +=== 1.12.0.1501 (Jan 27, 2025) [[v1.12.0.1501]] + +* Fix bug with -Srepro -Spom + +=== 1.12.0.1495 (Dec 31, 2024) [[v1.12.0.1495]] + +* Echo args in -M deprecation warning for clarity +* Refactored tool classpath calculation and align on create-basis +* Update deps to latest === 1.12.0.1488 (Nov 21, 2024) [[v1.12.0.1488]]