Clojure 1.12.0
संगतता
Java 8 - संगतता समाप्ति की सूचना
- Clojure 1.12 Java 8 bytecode बनाता है, लेकिन यह Java 8 का उपयोग करने वाली आखिरी रिलीज़ है.
- इसके बाद की रिलीज़ नए Java LTS रिलीज़ पर जाएंगी.
Java 21 - user code में virtual thread pinning
- JDK 21 में virtual threads का उपयोग करना चाहने वाले Clojure users के लिए, 1.12 में
lazy-seq और delay अब synchronized blocks की जगह locks का उपयोग करते हैं.
सुरक्षा
- CVE-2024-22871 सुरक्षा कमजोरी को ठीक किया गया.
Serialization
- Clojure data types Java serialization interface को implement करते हैं.
- 1.11.0 में दो classes के serialization identifiers बदल गए थे, लेकिन 1.11.1 में इसे वापस कर दिया गया.
- 1.12.0 में बाकी classes के लिए यह काम पूरा किया गया.
Dependencies
spec.alpha dependency को 0.5.238 पर update किया गया.
core.specs.alpha dependency को 0.4.74 पर update किया गया.
फीचर्स
लाइब्रेरी को इंटरैक्टिव तरीके से जोड़ना
- JVM को restart किए बिना libraries जोड़ने के लिए नए functions दिए गए हैं.
add-lib, add-libs, sync-deps functions जोड़े गए हैं.
external processes शुरू करना और नियंत्रित करना
- नया namespace
clojure.java.process जोड़ा गया.
start और exec functions से external processes को नियंत्रित किया जा सकता है.
method values
- Java methods को higher-order functions के रूप में इस्तेमाल करने की सुविधा जोड़ी गई.
- compiler अपने आप wrapper functions बनाता है.
qualified methods
Classname/method, Classname/.method, Classname/new syntax का उपयोग करके qualified methods को values के रूप में इस्तेमाल किया जा सकता है.
:param-tags metadata
- qualified methods पर :param-tags metadata देकर overloaded methods को resolve किया जा सकता है.
array class syntax
- array classes को दर्शाने के लिए syntax जोड़ा गया. उदाहरण:
String/2 2-dimensional string array को दर्शाता है.
functional interfaces
- Java functional interfaces को Clojure functions में बदलकर इस्तेमाल किया जा सकता है.
Java Supplier interoperability
IDeref implementations अब सीधे Supplier interface को implement करती हैं.
stream support
stream-seq!, stream-reduce!, stream-transduce!, stream-into! functions के साथ streams को Clojure शैली में प्रोसेस किया जा सकता है.
PersistentVector का Spliterable implementation
PersistentVector अब parallel processing को support करने वाला custom spliterator प्रदान करता है.
अधिक कुशल drop और partition
drop, nthrest, nthnext functions की performance बेहतर हुई है.
- नए functions
partitionv, partitionv-all, splitv-at जोड़े गए हैं.
Var intern policy
- namespace में var intern करते समय stable references बनाए जाते हैं.
- 1.11.0 में आई समस्या को ठीक किया गया.
GN⁺ का सारांश
- Clojure 1.12.0, Java 8 का उपयोग करने वाली आखिरी रिलीज़ है, और इसके बाद की रिलीज़ नए Java LTS रिलीज़ पर जाएंगी.
- नए फीचर्स में libraries को इंटरैक्टिव तरीके से जोड़ना, external process control, और method values का उपयोग शामिल है.
- Java के साथ interoperability में बड़ा सुधार हुआ है, और अधिक कुशल drop तथा partition फीचर्स जोड़े गए हैं.
- यह Clojure users के लिए उपयोगी अपडेट है, जो development productivity बढ़ा सकता है.
1 टिप्पणियां
Hacker News की राय
add-libsफीचर सबसे ज़्यादा पसंद हैspec2का इंतज़ार है, लेकिन फिलहाल Malli इस्तेमाल कर रहा/रही हूँadd-libsऔरsync-depsफीचर बहुत उपयोगी हैंspecकी स्थिति को लेकर जिज्ञासा जताई है