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

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.