Clojure 1.12.0-beta1
Clojure 1.12.0-beta1 is now available! Find download and usage information on the Downloads page. Changes in 1.12 features: CLJ-2853 Reflection error incorrectly reported target object type, not qualifying class CLJ-2859 Expand scope of FI adapting to include Supplier (and other 0 arg FI) CLJ-2858 Fix encoding of FnInvoker method for prim-returning FIs with arity > 2 CLJ-2864 Stop using truthy return logic in FI adapters CLJ-2863 Reflective FI dynamic proxy should use runtime classloader CLJ-2770 invoke-tool - remove external process name parameter (this is a runtime property) Enhancements: CLJ-2645 PrintWriter-on now supports auto-flush, and prepl uses it for the err stream CLJ-2698 defprotocol - ignore unused primitive return type hints CLJ-1385 transient - include usage model from reference docs

Clojure 1.12.0-beta1 has been released, offering a range of improvements and bug fixes that enhance the functionality and stability of the language. Developers can now access the new version through the Downloads page, where detailed installation instructions and usage information are available. This beta release includes several key features and enhancements that address common issues and expand the capabilities of Clojure.
One of the significant changes in Clojure 1.12.0-beta1 is the correction of reflection errors. Previously, the language incorrectly reported the target object type instead of the qualifying class. This has been fixed in CLJ-2853, ensuring that reflection errors now provide more accurate information to developers.
Another notable improvement is the expansion of the scope of Function Interceptors (FI) adapting to include Supplier and other zero-argument FIs. This change, documented in CLJ-2859, broadens the applicability of FI adapters, making them more versatile and useful in a wider range of scenarios.
CLJ-2858 addresses an issue with the encoding of FnInvoker methods for prim-returning FIs with an arity greater than 2. This fix ensures that the encoding is now handled correctly, preventing potential compatibility problems and improving overall performance.
In addition, Clojure 1.12.0-beta1 introduces a change in the behavior of FI adapters. Previously, they relied on truthy return logic, but this has been deprecated in CLJ-2864. The new version now adopts a more robust approach, enhancing the reliability and predictability of FI adapters.
Furthermore, CLJ-2863 ensures that reflective FI dynamic proxies use the runtime classloader. This modification improves the flexibility and compatibility of dynamic proxies, allowing them to adapt better to different runtime environments.
The beta release also includes a change to the invoke-tool command. In CLJ-2770, the external process name parameter has been removed, as it is now a runtime property. This simplification streamlines the command's usage and reduces the need for manual configuration.
On the enhancements front, CLJ-2645 introduces support for auto-flush in PrintWriter-on, which is now used by prepl for the err stream. This improvement makes error handling more efficient and user-friendly, as it automatically flushes the stream when necessary.
CLJ-2698 addresses an issue with defprotocol by ignoring unused primitive return type hints. This change ensures that the function signature remains clean and uncluttered, making the code more readable and maintainable.
Lastly, CLJ-1385 updates the transient function by including the usage model from the reference documentation. This addition provides clearer guidance on how to use transient effectively, reducing the learning curve for new users and improving overall understanding of the feature.
In summary, Clojure 1.12.0-beta1 represents a significant step forward for the language, with numerous bug fixes and enhancements that address common pain points and expand the functionality of Clojure. By leveraging these improvements, developers can build more robust and efficient applications in Clojure.










