@alexmiller Q re: the 1.0.x versions we're moving to -- I see some repos are MAJOR.MINOR.COMMITS and some are MAJOR.MINOR.PATCH. That seems a bit inconsistent. Is there are reason not to move everything to the commit-based versioning?
(everyone else is welcome to pile in with pros/cons on that!)
It’s just work I have no reason to do
Because the commit stuff requires some manual steps, it’s much easier to screw up if you don’t do it all the time
For stuff I’m not touching all the time it just doesn’t seem worth the effort
Fair enough. So there's no objection to switching tools.cli
etc to MAJOR.MINOR.COMMITS if I want?
Not at all
I bumped the deps in deps.edn
in core.cache
and core.memoize
to match pom.xml
🙂 Just done the same with tools.cli
and closed out one of the issues there. I also realized the parent pom has gone to 1.0.0 ("of course") so I updated all of those too...
org.clojure/java.data {:mvn/version "1.0.64"}
is headed to Maven Central...
So the parent pom thing may have effects you don’t realize
It changes the default Clojure version for one thing to 1.8.0. I have only been selectively updating projects to it that already had that as the minimum
Also it changes aot compilation from Java 1.6 to 1.8 - this is mostly done just to find compilation issues, not for aot release except for a couple of projects aot’ed for cljs (data.json and ...something, can’t remember the other one)
But you may see differences in build or test matrix results on build box
Good to know. What does parent 0.3.0 bring in?
(core.cache and core.memoize are both supposed to be compatible back to Clojure 1.6.0)
Officially they are only backward compatible to 1.7.0 but I test them manually against 1.6.0
0.3.0 and 1.0.0 are the same
note that the default Clojure version does not in any way prevent it from being used with Clojure 1.6.0
it affects the Clojure version used to run the release build on the build box (the test matrix is still controlled by the http://build.ci project
lmk if what I just said does not make sense so I can clarify
which affects the bytecode version in the production artifact?
Haha... I wasn't confused before but I am now! 🙂
there is no bytecode in the artifact
by default all contrib libs are source jars
so starting over...
oh of course. whoops 🙂
the parent pom includes a property clojure.version
that property is used to bring in a dependency on Clojure
so basically contrib libs get that by default by using the build.pom parent pom
and when you run the job on the build box, that's what the tests will be run against, and what the declared dependency will be in the published pom
the http://build.ci project defines test matrix data for what releasees to test, and that generates the test matrix job on the build box, which can potentially test both lower and higher versions than the default (it's controlled, again, by changing the value of that clojure.version property)
so core.cache (using a parent pom 0.3.0/1.0.0) will depend on clojure version 1.8.0 in its published pom. a user of core.cache could declare its own dependency on clojure though at 1.6.0 and either Maven or clj is going to prefer that one (as it's a top-level dependency)
that's all happy, assuming core.cache is api-compatible with Clojure 1.6.0
so far, I have been conservative in making this update only on projects that already require at least Clojure 1.8.0
https://github.com/clojure/build.ci/blob/master/ci_data.clj is the main matrix test data file
Thanks. I'm all clear now. May be time to drop 1.6/1.7 support in those then anyway. Will check with Fogus about it.
you'll note that the matrix tests are currently for 1.7+ (that was another bump I made this week) - keeping this tight is somewhat important as the total "build all" = libs jdks clojure versions, and every build has both runtime and disk space impacts
(we were real low on disk space last fall so I did a lot of cleanup. increasing the disk was going to be kind of traumatic apparently)
fyi, <=1.7 usage in 2020 clojure survey was at 1.4%
clojure 1.8 was down to 10%