clojars

2025-03-11T14:07:24.994929Z

Rust's http://crates.io has the concept of yanking a fundamentally broken or unusable crate (see https://doc.rust-lang.org/cargo/commands/cargo-yank.html). is that possible in clojars? i accidentally released a version of a library yesterday that is straight up missing files and is unusable as is, so marking it as "do not use" would be nice.

Kirill Chernyshov 2025-03-12T09:07:36.637569Z

@tcrawley fyi, projects do support version ranges following, for example, means "the most recent but not 1.12.0"

~ took 33s
❯ clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "(,1.12.0),(1.12.0,)"}}}'
Clojure 1.12.0-rc2
user=>
https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html

2
2025-03-12T12:37:05.752719Z

Yes indeed! Though it is generally not a recommended practice, so I didn't mention it.

oyakushev 2025-03-11T14:10:43.179349Z

Just release a good version with a higher number and mark the botched release as such in the changelog. It doesn't have to be more complicated.

2025-03-11T14:15:13.922939Z

okay

2025-03-11T14:52:27.183869Z

We don't have plans to add a way to yank releases, since we can't enforce that it is only for broken releases or ones containing credentials/private code. Projects don't have a way to specify version ranges, just specific versions, so yanking a prior version will break the build of any project that depends on that version. So @alexyakushev's suggestion is the correct approach.

👍 1
seancorfield 2025-03-11T16:05:31.458369Z

When I've released broken versions in the past, I tend to: a) note in the CHANGELOG that version is broken b) delete the release from GitHub so folks can't find it in GitHub Releases c) but leave the tag in place (and, obvs, leave the version up on Clojars)

👍 1