Clojure 1.9 is now available!

(Also, I have no idea what category this applies to but it is the project I’m working on. :slight_smile: )


This is good news! Thank you.

One thing I haven’t seen discussed anywhere so far is the (new?) convention of using a separate alpha namespace to allow experimentation.

It would be interesting to read about the ideas behind this device – Clojure values backwards compatibility, great – so what is the motivation for introducing long-lived alpha namespaces where anything goes? Is there a process that defines the lifecycle of these provisional namespaces?

I see in the release notes that there were quite a few performance improvements that made the cut for v1.9, any chance there are benchmarks comparing v1.8 to v1.9? Also, I vaguely recall some talk about addressing startup time for clj…any news there?

If it’s marked as alpha, breaking changes may be introduced. In the case of spec, this allows people to use it and give feedback in the context of a major release (1.9). At some point, we’ll lock it down and remove the alpha designation. We’ve done the same on other namespaces in the past via documentation so this is just a way to make that more visible.

I don’t have any formal benchmarks for 1.8 vs 1.9. Most of the things that changed are relatively small or specific so I would not really expect anything to be dramatically different. Would be happy to hear feedback from anyone on real world times.

On startup time, clj will cache classpaths once computed, so generally you get a minimum of overhead to just running Java and started a Clojure program with the necessary jars. Startup time via clojure.main is actually a bit slower as those code paths trigger the loading of spec and the core specs right now. Comparing to something like lein repl, it will probably feel slightly faster in comparison.

Starting an AOT’ed Clojure program that doesn’t use function instrumentation can generally avoid loading either specs or the core specs and should be approximately the same startup time as 1.8.