Defect
- [CLJ-700] - contains? broken for transient collections
- [CLJ-1029] - ns defmacro allows arbitrary execution of clojure.core fns
- [CLJ-1074] - Read/print round-trip for +/-Infinity and NaN
- [CLJ-1242] - = on sorted collections with different key types incorrectly throws
- [CLJ-1358] - doc macro does not expand special cases properly
- [CLJ-1371] - divide(Object, Object) with (NaN, 0) does not return NaN
- [CLJ-1398] - Update URLs in javadoc.clj
- [CLJ-1423] - Applying a var to an infinite arglist consumes all available memory
- [CLJ-1630] - Destructuring allows multiple &-params
- [CLJ-1705] - vector-of throws NullPointerException if given unrecognized type
- [CLJ-1714] - Some static initialisers still run at compile time if used in type hints
- [CLJ-1744] - Unused destructured local not cleared, causes memory leak
- [CLJ-1790] - Error extending protocols to Java arrays
- [CLJ-1793] - Reducer instances hold onto the head of seqs
- [CLJ-1841] - core/bean iterator is broken
- [CLJ-1860] - 0.0 and -0.0 compare equal but have different hash values
- [CLJ-1870] - Reloading a defmulti nukes metadata on the var
- [CLJ-1887] - clojure.core.Vec does not fully implement clojure.lang.IPersistentVector
- [CLJ-1914] - Range realization has a race during concurrent execution
- [CLJ-1934] - (s/cat) with nonconforming data causes infinite loop in explain-data
- [CLJ-1935] - clojure.spec/multi-spec ignores the multimethod hierarchy
- [CLJ-1962] - fn-spec only works with a fully ns-qualified quoted symbol
- [CLJ-1970] - instrumented macros never conform valid forms
- [CLJ-1977] - Printing a Throwable throws if Throwable has no cause / stacktrace
- [CLJ-1981] - `spec/merge` does not flow conformed values across preds per docstring
- [CLJ-1985] - with-gen of conformer loses unform fn
- [CLJ-1988] - collection specs conform to reversed list when used on a sequence
- [CLJ-2004] - s/multi-spec doesn't include :retag in `s/form`
- [CLJ-2006] - clojure.spec/fdef mentions nonexistent clojure.spec.test/run-tests
- [CLJ-2008] - clojure.spec.test/check without args tests fns from clojure.core, erroring out with #:clojure.spec{:failure :no-fn}
- [CLJ-2012] - ns spec breaks gen-class forms that use strings as class names
- [CLJ-2024] - Check should specize function specs before checking
- [CLJ-2027] - bean printing regression from namespace map printing
- [CLJ-2032] - Confusing error conforming fspec with missing arg spec
- [CLJ-2035] - Bad s/form for collection specs
- [CLJ-2042] - s/form of s/? does not resolve pred
- [CLJ-2043] - s/form of conformer is broken
- [CLJ-2048] - java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.StackTraceElement
- [CLJ-2051] - Typo in clojure.instant/validated docstring
- [CLJ-2055] - binding-form spec parses symbol-only maps incorrectly
- [CLJ-2057] - Function spec missing :ret can yield wrong answer for valid?
- [CLJ-2059] - explain-data problems don't provide resolved symbols under :pred
- [CLJ-2076] - s/coll-of and s/map-of do not unform their elements
- [CLJ-2077] - Clojure can't be loaded from the boot classpath under java 9
- [CLJ-2091] - clojure.lang.APersistentVector#hashCode is not thread-safe
- [CLJ-2098] - autodoc fails to load clojure/spec.clj
- [CLJ-2100] - s/nilable form should include the original spec, not the resolved spec
- [CLJ-2103] - s/coll-of and s/every gen is very slow if :kind specified without :into
- [CLJ-2114] - ::defn-args spec incorrectly parses map body as a prepost rather than function body
- [CLJ-2128] - spec error during macroexpand no longer throws compiler exception with location
- [CLJ-2141] - New qualified-* predicates can return true, nil, and false
- [CLJ-2142] - Namespace map syntax prevents duplicate key check
- [CLJ-2156] - Document char[] input support in clojure.java.io/copy
- [CLJ-2161] - clojure.spec.alpha fails to reload
- [CLJ-2170] - Several top-level forms have improperly-located docstrings
- [CLJ-2171] - Default explain printer prints root val and spec
- [CLJ-2175] - Some collection specs have inconsistent forms of :pred in their explain data
- [CLJ-2204] - Clojure classes can be used to craft a serialized object that runs arbitrary code on deserialization
- [CLJ-2210] - back referential expressions can cause exponential compilation times
- [CLJ-2219] - Spec for ns :require clause incorrectly allows nested prefix lists
- [CLJ-2220] - Spec for ns :use clause incorrectly allows nested prefix lists
- [CLJ-2239] - Link to Google Guava API broken in clojure.java.javadoc/*remote-javadocs*
- [CLJ-2247] - {min,max}-key return first match in >= 1.9.0-alpha20, used to return the last one
- [CLJ-2259] - Remove unnecessary bigdec?
Enhancement
- [CLJ-99] - max-key and min-key evaluate k multiple times for arguments
- [CLJ-401] - Add seqable? predicate
- [CLJ-1149] - Unhelpful error message from :use (and use function) when arguments are malformed
- [CLJ-1159] - Improve docstring of clojure.java.io/delete-file to be clearer about intent of silently arg
- [CLJ-1224] - Records do not cache hash like normal maps
- [CLJ-1298] - Add more type predicate fns to core
- [CLJ-1309] - Bindings after :as in list destructuring should throw error
- [CLJ-1314] - Correct placement of doc string for function bubble-max-key
- [CLJ-1544] - If you AOT protocol call sites, then you will also need to AOT the protocol itself
- [CLJ-1673] - Improve clojure.repl/dir-fn to work on namespace aliases in addition to canonical namespaces.
- [CLJ-1719] - Add clojure.core/boolean? predicate
- [CLJ-1826] - drop-last docstring refers to 'coll' but args refer to 's'
- [CLJ-1837] - Improve wording of index-of and last-index-of doc strings
- [CLJ-1859] - Update parameter name to reflect docstring
- [CLJ-1873] - Docstrings for require and *data-readers* do not mention cljc files
- [CLJ-1901] - amap calls `alength` at every iteration step
- [CLJ-1910] - Namespaced maps
- [CLJ-1917] - internal-reduce extended on StringSeq calls `.length` on every iteration step
- [CLJ-1918] - Document await that it will never return if shutdown-agents was called
- [CLJ-1919] - Destructuring support for namespaced keys and syms
- [CLJ-1932] - Add clojure.spec/explain-str to return explain output as a string
- [CLJ-1937] - spec/fn-specs should behave the same as s/spec w.r.t not-found
- [CLJ-1957] - Add gen support for bytes?
- [CLJ-1958] - Add uri? generator
- [CLJ-1967] - Enhanced namespaced map pprint support
- [CLJ-1993] - Print flag to suppress namespace map syntax
- [CLJ-2028] - Docstring error in clojure.core/filter, remove, and take-while
- [CLJ-2039] - typo in deftype doc string
- [CLJ-2061] - Better error message when exercise-fn called on fn without :args spec
- [CLJ-2062] - Spec import and refer-clojure macros
- [CLJ-2063] - Show longest path explain error first
- [CLJ-2070] - Faster clojure.core/delay implementation
- [CLJ-2085] - Add additional info to explain-data to help explain printers
- [CLJ-2104] - Typo in pprint docstring
- [CLJ-2108] - Loading core specs affects startup time
- [CLJ-2113] - Update Clojure maven for latest on CI server
- [CLJ-2132] - Maven pom requires artifact signing to install locally
- [CLJ-2153] - Documentation for int-in and int-in-range? does not mention that they're limited to fixed precision integers
- [CLJ-2184] - propagate metadata in doto forms
- [CLJ-2188] - clojure.core/slurp does not mark its return type as String
- [CLJ-2216] - Change *explain-out* to return string, instead of printing output
- [CLJ-2254] - Add system property to disable spec macro instrumentation
- [CLJ-2276] - Add build for standalone jar
Feature
- [CLJ-1454] - Add swap-vals! and reset-vals! (swap! and reset! that return [old new])
Edit/Copy Release Notes
The text area below allows the project release notes to be edited and copied to another document.