This week we released Clojure 1.12.0-alpha8 which is a minor update, mainly to revert CLJ-1162 which caused problems for some cases where a type implemented both IDeref and Future. This release also contains an updated fix for CLJ-2783 which we reverted in alpha7 and caused problems with (at least) instaparse. The change for CLJ-2568 is one of the highest questions in Ask Clojure - we thought it was ready for alpha6 but it caused a test failure in our test suite when direct linking was turned off and we wanted to understand that better before we released. In light of several regression failures seen in alpha6, we’ve created a new regression test suite that checks a lot of community projects and will be using this more proactively in the future to reduce this kind of churn.

In new work, we’ve been reconsidering the design work on array class symbols, qualified methods, and method values based on some of the things we saw from the community. With array class symbols, we in particular saw both questions and concerns that indicated we had at least one invalid assumption baked into the design. The array class symbol design was based on an assumption that Foo* names were invalid class names, which is true in Java, but not on the JVM (or in Clojure via deftype)! This drove us way back to the beginning of the design process and I think we will end up changing this syntax, more on that to come.

There was a lot of feedback on qualified methods and method values with respect to the relationship of these features to reflection. Using reflection is valuable, especially in the context of exploratory programming at the REPL. This has caused us to re-think some of our approach here, design work still ongoing, but I expect there will be some changes in this area.