You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/news/2024/04/19/deref.adoc
+6-4Lines changed: 6 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -9,11 +9,13 @@ Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure
9
9
10
10
== From the core
11
11
12
-
We have three big chunks of work remaining for 1.12. The first one, reworking the symbolic array type representation is complete, is captured in https://clojure.atlassian.net/browse/CLJ-2807[CLJ-2807]. That will rollback the previous implementation added in alpha6 and replace it with a new representation. Array symbols will have the syntax `ComponentType/dimension`, eg `String/1` or `long/2`. More to say on that when we release.
12
+
We have three big chunks of work remaining for 1.12. The first one, reworking the symbolic array type representation is complete and captured in https://clojure.atlassian.net/browse/CLJ-2807[CLJ-2807]. That will roll back the previous implementation added in alpha6 and replace it with a new representation. Array symbols will have the syntax `ComponentType/dimension`, eg `String/1` or `long/2`. More to say on that when we release.
13
13
14
-
The second piece is reworking the method valueand param-tags implementation. The big picture is that param-tags must resolve to a single method, and that qualified methods will otherwise support reflective invocation. Additionally, we're going to alter the syntax of qualified instance methods to make them distinct with Classname/.method (vs Classname/method for static). There are existing cases in the JDK (Double.isNaN()) that have both static and instance methods that overlap in effective arity (instance methods take the instance object as first "arg") - method values have no way to differentiate between these and that was causing a lot of pain in the implementation. This work is nearing completion.
14
+
The second piece is reworking the method value, qualified methods, and param-tags implementation. The big picture is that qualified methods withparam-tags must resolve to a single method (no change there), and that qualified methods without param-tags will otherwise support fully reflective invocation (as method values, in all arities).
15
15
16
-
The final piece is functional interface conversion. We've been working through some of the implementation details and figuring out some of the gnarly bits of optimizing method values passed as FIs (avoiding intermediate thunks or converters). This piece is also getting close. At an interim point this week I ran some wide regression testing and found a few interesting cases, some were actual bugs I found in the wild, some were things I was able to smooth over in the implementation. Integrating all of the things above cleanly has been quite challenging, but we are getting close.
16
+
Additionally, we're going to alter the syntax of qualified instance methods (Classname/.method) to make them distinct from static methods (Classname/method, as always), and constructors will continue to be Classname/new. There are existing cases in the JDK (Double.isNaN() for example) that have both static and instance methods that overlap in effective arity (instance methods take the instance object as first "arg"). Method values without param-tags have no way to differentiate between these and that was causing a lot of pain in the implementation. This work is nearing completion.
17
+
18
+
The final piece is functional interface conversion. While the hard parts are mostly done, there are some gnarly bits in optimizing method values passed as FIs (avoiding intermediate thunks or converters) but also getting close on this. At an interim point this week I ran some wide regression testing against community projects and found a few interesting cases, some were actual latent bugs, some drove some refinments. This is critical work in making this a clean release that does not break existing code, but it takes time.
17
19
18
20
Have been working on Clojure/Conj stuff too, hoping to get info about CFP, tickets, and sponsorship out in the next month.
19
21
@@ -60,4 +62,4 @@ New releases and tools this week:
60
62
* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.3.190] - Native, fast starting Clojure interpreter for scripting
61
63
* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.5] - A simple, fast and versatile Datalog database
62
64
* https://github.com/babashka/http-client[http-client] https://github.com/babashka/http-client/blob/main/CHANGELOG.md[0.4.18] - HTTP client for Clojure and Babashka built on java.net.http
63
-
* https://github.com/babashka/instaparse-bb[instaparse-bb] https://github.com/babashka/instaparse-bb/blob/main/CHANGELOG.md[0.0.4] - Use instaparse from babashka
65
+
* https://github.com/babashka/instaparse-bb[instaparse-bb] https://github.com/babashka/instaparse-bb/blob/main/CHANGELOG.md[0.0.4] - Use instaparse from babashka
0 commit comments