clojure-dev

Issues: https://clojure.atlassian.net/browse/CLJ | Guide: https://insideclojure.org/2015/05/01/contributing-clojure/
seancorfield 2020-02-19T04:17:30.009800Z

@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?

seancorfield 2020-02-19T04:18:35.010200Z

(everyone else is welcome to pile in with pros/cons on that!)

alexmiller 2020-02-19T04:35:31.010600Z

It’s just work I have no reason to do

alexmiller 2020-02-19T04:36:11.011700Z

Because the commit stuff requires some manual steps, it’s much easier to screw up if you don’t do it all the time

alexmiller 2020-02-19T04:37:09.012500Z

For stuff I’m not touching all the time it just doesn’t seem worth the effort

seancorfield 2020-02-19T04:52:31.013100Z

Fair enough. So there's no objection to switching tools.cli etc to MAJOR.MINOR.COMMITS if I want?

alexmiller 2020-02-19T05:02:59.013300Z

Not at all

seancorfield 2020-02-19T05:28:07.014700Z

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...

seancorfield 2020-02-19T06:39:03.015200Z

org.clojure/java.data {:mvn/version "1.0.64"} is headed to Maven Central...

alexmiller 2020-02-19T13:41:02.015700Z

So the parent pom thing may have effects you don’t realize

alexmiller 2020-02-19T13:41:50.016300Z

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

alexmiller 2020-02-19T13:47:11.019100Z

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)

alexmiller 2020-02-19T13:48:47.020200Z

But you may see differences in build or test matrix results on build box

seancorfield 2020-02-19T18:05:07.021Z

Good to know. What does parent 0.3.0 bring in?

seancorfield 2020-02-19T18:07:35.021600Z

(core.cache and core.memoize are both supposed to be compatible back to Clojure 1.6.0)

seancorfield 2020-02-19T18:09:18.022100Z

Officially they are only backward compatible to 1.7.0 but I test them manually against 1.6.0

alexmiller 2020-02-19T18:19:39.022300Z

0.3.0 and 1.0.0 are the same

alexmiller 2020-02-19T18:20:06.022800Z

note that the default Clojure version does not in any way prevent it from being used with Clojure 1.6.0

alexmiller 2020-02-19T18:21:10.023500Z

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

alexmiller 2020-02-19T18:21:41.023800Z

lmk if what I just said does not make sense so I can clarify

dpsutton 2020-02-19T18:22:02.024300Z

which affects the bytecode version in the production artifact?

seancorfield 2020-02-19T18:22:06.024500Z

Haha... I wasn't confused before but I am now! 🙂

alexmiller 2020-02-19T18:22:11.024600Z

there is no bytecode in the artifact

alexmiller 2020-02-19T18:22:24.024900Z

by default all contrib libs are source jars

alexmiller 2020-02-19T18:22:36.025400Z

so starting over...

dpsutton 2020-02-19T18:22:37.025500Z

oh of course. whoops 🙂

alexmiller 2020-02-19T18:22:51.025900Z

the parent pom includes a property clojure.version

alexmiller 2020-02-19T18:23:07.026300Z

that property is used to bring in a dependency on Clojure

alexmiller 2020-02-19T18:23:37.026800Z

so basically contrib libs get that by default by using the build.pom parent pom

alexmiller 2020-02-19T18:24:43.028Z

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

alexmiller 2020-02-19T18:25:53.029300Z

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)

alexmiller 2020-02-19T18:27:13.030700Z

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)

alexmiller 2020-02-19T18:27:35.031200Z

that's all happy, assuming core.cache is api-compatible with Clojure 1.6.0

alexmiller 2020-02-19T18:28:08.031800Z

so far, I have been conservative in making this update only on projects that already require at least Clojure 1.8.0

alexmiller 2020-02-19T18:28:29.032100Z

https://github.com/clojure/build.ci/blob/master/ci_data.clj is the main matrix test data file

seancorfield 2020-02-19T18:30:15.034Z

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.

alexmiller 2020-02-19T18:31:06.034900Z

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

alexmiller 2020-02-19T18:31:43.035600Z

(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)

alexmiller 2020-02-19T18:32:53.036100Z

fyi, <=1.7 usage in 2020 clojure survey was at 1.4%

alexmiller 2020-02-19T18:33:07.036300Z

clojure 1.8 was down to 10%

1👀