clojure 2025-11-24

how does one discover the latest version of a package that does not seem to be hosted on clojars? I just had the need to declare a dep org.dhatim/fastexcel-reader (see https://clojurians.slack.com/archives/C0BQDEJ8M/p1763993922002779?thread_ts=1763973165.289119&cid=C0BQDEJ8M for the context).. and I was not able to get any search results for fastexcel at http://clojars.org

steps i did: 1. google maven search 2. first link 3. put in package name fastexcel-reader 4. first result was the org.dhatim group 5. see list of results. most recent is 0.19.0

I see; and I think i am getting a little bit more aware of things now. So fastexcel isn't at clojars because it's not clojure; and java I would need to search http://mvnrepository.com instead. Is that right?

by convention, clojure artifacts are hosted on clojars and java artifacts on maven. But jars are just java archives and are just zip files. So you could find examples that don’t follow this. Also Clojure (the actual language) jars are hosted on maven i believe

For general deps update you can use https://github.com/liquidz/antq That way you mostly don't have to know where to look

If the library is included in the project dependencies, then antq will report if there is a newer version. https://github.com/liquidz/antq?tab=readme-ov-file (snap) I use antq as a local Makefile task and run a https://practical.li/engineering-playbook/continuous-integration/github/workflows/practicalli/#mkdocs-publisher via a CI workflow. I use an alias called search/outdated to my clojure config to create the task https://github.com/practicalli/clojure-cli-config/blob/main/deps.edn#L293-L311

The Clojure CLI can find versions for you:

clojure -X:deps find-versions :lib org.dhatim/fastexcel-reader
Downloading: org/dhatim/fastexcel-reader/maven-metadata.xml from central
{:mvn/version "0.16.6"}
{:mvn/version "0.17.0"}
{:mvn/version "0.18.0"}
{:mvn/version "0.18.1"}
{:mvn/version "0.18.2"}
{:mvn/version "0.18.3"}
{:mvn/version "0.18.4"}
{:mvn/version "0.19.0"}

☝️ 1
1
1

(it searches both Maven Central and Clojars by default)

See https://corfield.org/blog/2025/08/08/deps/ for more "built-in" :deps stuff.

πŸ™ 1

thank you, everybody!! I came in with what I thought would be a simple answer to a simple question... but came away with so much more helpful knowledge!

Is there a way to avoid repetition when using extend-protocol and the implementations are identical between multiple types? Example from https://github.com/weavejester/compojure/blob/22c56a627522f3343026c3a773630713e1e00eae/src/compojure/response.clj#L67-L73. Or is this what Alex was talking about when he says "https://clojure.atlassian.net/browse/CLJ-2756" the problem?

You can use extend - it expects maps as input. Check out its docstring. As a reference, see how it's used in .

Alex Miller (Clojure team) 2025-11-24T23:27:10.943289Z

yeah, that jira is not pointed at the problem you're alluding to

Alex Miller (Clojure team) 2025-11-24T23:29:26.400149Z

the problem you have is one of duplication, which can be solved in a data-oriented way with extend (although most people find extend to feel pretty low-level) or by writing a macro to reuse the same impl for many types, either by expanding to extend-protocol or to the extend form, depending whether data or syntax are your preferred source

πŸ‘ 1

Thanks, Eugene and Alex. You've given me a good direction to explore.