- CLJ-2031 clojure.walk/postwalk does not preserve MapEntry type objects
- CLJ-2349 Report correct line number for uncaught ExceptionInfo in clojure.test
- CLJ-1764 partition-by runs infinite loop when one element of infinite partition is accessed
- CLJ-1832 unchecked-* functions have different behavior on primitive longs vs boxed Longs
PersistentHashMap leaks memory when keys are removed with
- CLJ-1587 PersistentArrayMap’s assoc doesn’t respect HASHTABLE_THRESHOLD
- CLJ-2050 Remove redundant key comparisons in HashCollisionNode
- CLJ-2089 Sorted colls with default comparator don’t check that first element is Comparable
- CLJ-2297 PersistentHashMap leaks memory when keys are removed with
- CLJ-908 Make default-data-reader-fn set!-able in REPL, similar to data-readers.
- CLJ-783 Make clojure.inspector/inspect-tree work on sets.
- CLJ-896 Make browse-url aware of xdg-open.
- CLJ-1160 Fix clojure.core.reducers/mapcat does not stop on reduced? values.
- CLJ-1121 -> and ->> have been rewritten to work with a broader set of macros.
- CLJ-1105 clojure.walk now supports records.
- CLJ-949 Removed all unnecessary cases of sneakyThrow.
- CLJ-1238 Allow EdnReader to read foo// (matches LispReader behavior).
- CLJ-1264 Remove uses of _ as a var in the Java code (causes warning in Java 8).
- CLJ-394 Add record? predicate.
- CLJ-1200 ArraySeq dead code cleanup, ArraySeq_short support added.
- CLJ-1331 Primitive vectors should implement hasheq and use new hash algorithm
- CLJ-1354 Make APersistentVector.SubVector public so other collections can access
- CLJ-1353 Make awt run headless during the build process
- CLJ-1279 Report correct arity count for function arity errors inside macros
- CLJ-2386 Omit ex-info construction frames
- CLJ-2394 Warn in pst that stack trace for syntax error failed before execution
- CLJ-2396 Omit :in clauses when printing spec function errors if using default explain printer
- CLJ-1797 Mention cljc in error when require fails
- CLJ-1130 Improve error message when unable to match static method
Clojure APIs that pass work off to other threads (e.g. send, send-off, pmap, future) now convey the dynamic bindings of the calling thread:
(def ^:dynamic *num* 1) (binding [*num* 2] (future (println *num*))) ;; prints "2", not "1"
You can hint different arities separately:
(defn hinted (^String ) (^Integer [a]) (^java.util.List [a & args]))
🚀 This is preferred over hinting the function name. Hinting the function name is still allowed for backward compatibility, but will likely be deprecated in a future release.