On October 6, the release of Clojure 1.10.0-beta1 was announced. With this release, Clojure 1.10 will now be considered feature complete and only critical bug fixes will be addressed.
Clojure errors can occur in five distinct phases, which include read, macroexpand, compile, eval, and print. Clojure and the REPL can now identify these phases in the exception and/or the message.
The read/macroexpand/compile phases produce a CompilerException and indicate the location in the caller source code where the problem occurred. CompilerException now implements IExceptionInfo and ex-data reports exception data including the optional keys:
Also, clojure.main now contains a new function called ex-str that can be used by external tools to get a repl message for a CompilerException to match the clojure.main repl behavior.
tap, a shared and globally accessible system, is used for distributing a series of informational or diagnostic values to a set of handler functions. It acts as a better debug prn and can also be used for facilities like logging.
A new function, read+string is added that not only mimics read, but also captures the string that is read. It then returns both the read value and the (whitespace-trimmed) read string.
This is a new stream-based REPL with a structured output. These are the new functions that are added in clojure.core.server:
prepl is now alpha and subject to change.
Clojure 1.10 now requires Java 8 or above. The following are few of the updates related to this change and Java compatibility fixes for Java 8, 9, 10, and 11:
To increase the portability of the error-handling code, the following functions have been added:
To know more about the changes in Clojure 1.10, check out its GitHub repository.
Vue.js 3.0 is ditching JavaScript for TypeScript. What else is new?
Java 11 is here with TLS 1.3, Unicode 11, and more updates
Rust 2018 RC1 now released with Raw identifiers, better path clarity, and other changes