Skip to content

Commit 9502705

Browse files
committed
add dev changelog
1 parent 51df0d4 commit 9502705

2 files changed

Lines changed: 290 additions & 0 deletions

File tree

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
= Dev Changelog
2+
Alex Miller
3+
2017-04-28
4+
:jbake-type: page
5+
:toc: macro
6+
:icons: font
7+
8+
ifdef::env-github,env-browser[:outfilesuffix: .adoc]
9+
10+
The official https://github.com/clojure/clojure/blob/master/changes.md[changelog] tracks deltas between major stable versions. This page gathers the interim dev release announcements during development.
11+
12+
== Release 1.9
13+
14+
=== https://groups.google.com/forum/#!topic/clojure/nB4qnDNGS2A[1.9.0-alpha16] (Apr 27, 2017)
15+
16+
1.9.0-alpha16 includes the following changes since 1.9.0-alpha15:
17+
18+
- The namespaces clojure.spec, clojure.spec.gen, clojure.spec.test have been moved to the external library spec.alpha which Clojure includes via dependency
19+
- These namespaces have been changed and now have an appended ".alpha": clojure.spec.alpha, clojure.spec.gen.alpha, clojure.spec.test.alpha
20+
- All keyword constants in clojure.spec (like :clojure.spec/invalid) follow the same namespace change (now :clojure.spec.alpha/invalid)
21+
- spec-related system properties related to assertions did NOT change
22+
23+
- The specs for clojure.core itself in namespace clojure.core.specs have been moved to the external library core.specs.alpha which Clojure now depends on
24+
- The clojure.core.specs namespace has changed to clojure.core.specs.alpha. All qualified spec names in that namespace follow the same namespace change (most people were not using these directly)
25+
26+
In most cases, you should be able to update your usage of Clojure 1.9.0-alphaX to Clojure 1.9.0-alpha16 by:
27+
28+
1. Updating your Clojure dependency to [org.clojure/clojure "1.9.0-alpha16"] - this will automatically pull in the 2 additional downstream libraries
29+
2. Changing your namespace declarations in namespaces that declare or use specs to:
30+
31+
[source,clojure]
32+
----
33+
(:require [clojure.spec.alpha :as s]
34+
[clojure.spec.gen.alpha :as gen]
35+
[clojure.spec.test.alpha :as stest])
36+
----
37+
38+
Also see the prior announcement related to these changes:
39+
https://groups.google.com/d/msg/clojure/10dbF7w2IQo/ec37TzP5AQAJ
40+
41+
=== https://groups.google.com/d/msg/clojure/7ZqGTjJoQEQ/RkUYCCbeAwAJ[1.9.0-alpha15] (Mar 14, 2017)
42+
43+
1.9.0-alpha15 includes the following changes since 1.9.0-alpha14:
44+
45+
- https://dev.clojure.org/jira/browse/CLJ-1793[CLJ-1793] - reducer instances hold onto the head of seqs (also applies to a broader set of head-holding cases)
46+
- https://dev.clojure.org/jira/browse/CLJ-2043[CLJ-2043] - s/form of conformer is broken
47+
- https://dev.clojure.org/jira/browse/CLJ-2035[CLJ-2035] - s/form of collection specs are broken
48+
- https://dev.clojure.org/jira/browse/CLJ-2100[CLJ-2100] - s/form of s/nilable should include the original spec, not the resolved spec
49+
50+
Specs:
51+
52+
- https://dev.clojure.org/jira/browse/CLJ-2062[CLJ-2062] - added specs for `import` and `refer-clojure`
53+
- https://dev.clojure.org/jira/browse/CLJ-2114[CLJ-2114] - ::defn-args spec incorrectly parses map body as a prepost rather than function body
54+
- https://dev.clojure.org/jira/browse/CLJ-2055[CLJ-2055] - binding-form spec parses symbol-only maps incorrectly
55+
56+
Infrastructure:
57+
58+
- https://dev.clojure.org/jira/browse/CLJ-2113[CLJ-2113] - Clojure maven build updated
59+
60+
=== https://groups.google.com/d/msg/clojure/w-1h7_xO2R0/Lp_ks-BSAQAJ[1.9.0-alpha14] (Oct 28, 2016)
61+
62+
1.9.0-alpha14 includes the following changes since 1.9.0-alpha13:
63+
64+
- NEW `into` now has a 0-arity (returns []) and 1-arity (returns the coll you pass)
65+
- NEW `halt-when` is a transducer that ends transduction when pred is satisfied. It takes an optional fn that will be invoked with the completed result so far and the input that triggered the predicate.
66+
- https://dev.clojure.org/jira/browse/CLJ-2042[CLJ-2042] - clojure.spec/form of clojure.spec/? now resolves pred
67+
- https://dev.clojure.org/jira/browse/CLJ-2024[CLJ-2024] - clojure.spec.test/check now fully resolves aliased fspecs
68+
- https://dev.clojure.org/jira/browse/CLJ-2032[CLJ-2032] - fixed confusing error if fspec is missing :args spec
69+
- https://dev.clojure.org/jira/browse/CLJ-2027[CLJ-2027] - fixed 1.9 regression with printing of `bean` instances
70+
- https://dev.clojure.org/jira/browse/CLJ-1790[CLJ-1790] - fixed error extending protocols to Java arrays
71+
- https://dev.clojure.org/jira/browse/CLJ-1242[CLJ-1242] - = on sorted sets or maps with incompatible comparators now returns false rather than throws
72+
73+
=== https://groups.google.com/d/msg/clojure/QWPUWG9BwbE/9a7ymJb9AQAJ[1.9.0-alpha13] (Sept 26, 2016)
74+
75+
1.9.0-alpha13 includes the following changes since 1.9.0-alpha12:
76+
77+
- s/conform of nilable was always returning the passed value, not the conformed value
78+
- s/nilable now creates a generator that returns nil 10% of the time (instead of 50% of the time)
79+
- s/nilable now delays realizing the predicate spec until first use (better for creating recursive specs)
80+
- clojure.spec.gen now provides a dynload version of clojure.test.check.generators/frequency
81+
82+
=== https://groups.google.com/d/msg/clojure/lQ5beZB6QYE/ZLSPo023CgAJ[1.9.0-alpha12] (Sept 7, 2016)
83+
84+
1.9.0-alpha12 includes the following changes since 1.9.0-alpha11:
85+
86+
- spec performance has been improved for many use cases
87+
- spec explain printer is now pluggable via the dynamic var clojure.spec/*explain-out*
88+
which should be a function that takes an explain-data and prints to *out*
89+
- when a macro spec fails during macroexpand, throw ex-info with explain-data payload
90+
rather than IllegalArgumentException
91+
- pprint prints maps with namespace literal syntax when *print-namespace-maps* is true
92+
- https://dev.clojure.org/jira/browse/CLJ-1988[CLJ-1988] - coll-of, every extended to conform sequences properly
93+
- https://dev.clojure.org/jira/browse/CLJ-2004[CLJ-2004] - multi-spec form was missing retag
94+
- https://dev.clojure.org/jira/browse/CLJ-2006[CLJ-2006] - fix old function name in docstring
95+
- https://dev.clojure.org/jira/browse/CLJ-2008[CLJ-2008] - omit macros from checkable-syms
96+
- https://dev.clojure.org/jira/browse/CLJ-2012[CLJ-2012] - fix ns spec on gen-class signatures to allow class names
97+
- https://dev.clojure.org/jira/browse/CLJ-1224[CLJ-1224] - record instances now cache hasheq and hashCode like maps
98+
- https://dev.clojure.org/jira/browse/CLJ-1673[CLJ-1673] - clojure.repl/dir-fn now works on namespace aliases
99+
100+
=== https://groups.google.com/d/msg/clojure/_slHTn-Ej1Y/M_IVRODtCQAJ[1.9.0-alpha11] (Aug 19, 2016)
101+
102+
1.9.0-alpha11 includes the following changes since 1.9.0-alpha10:
103+
104+
Clojure now has specs for the following clojure.core macros: let, if-let, when-let, defn, defn-, fn, and ns. Because macro specs are checked during macroexpansion invalid syntax in these macros will now fail at compile time whereas some errors were caught at runtime and some were not caught at all.
105+
106+
- https://dev.clojure.org/jira/browse/CLJ-1914[CLJ-1914] - Fixed race condition in concurrent range realization
107+
- https://dev.clojure.org/jira/browse/CLJ-1870[CLJ-1870] - Fixed reloading a defmulti removes metadata on the var
108+
- https://dev.clojure.org/jira/browse/CLJ-1744[CLJ-1744] - Clear unused locals, which can prevent memory leaks in some cases
109+
- https://dev.clojure.org/jira/browse/CLJ-1423[CLJ-1423] - Allow vars to be invoked with infinite arglists (also, faster)
110+
- https://dev.clojure.org/jira/browse/CLJ-1993[CLJ-1993] - Added *print-namespace-maps* dynamic var that controls whether to use namespace map syntax for maps with keys from the same namespace. The default is false, but standard REPL bindings set this to true.
111+
- https://dev.clojure.org/jira/browse/CLJ-1985[CLJ-1985] - Fixed with-gen of conformer losing unform fn
112+
- Fixed clojure.spec.test/check to skip spec'ed macros
113+
- Fixed regression from 1.9.0-alpha8 where type hints within destructuring were lost
114+
- Fixed clojure.spec/merge docstring to note merge doesn't flow conformed values
115+
- Fixed regex ops to use gen overrides if they are used
116+
117+
=== https://groups.google.com/d/msg/clojure/MrwAx8DCjK8/rQSq8U5qCAAJ[1.9.0-alpha10] (Jul 11, 2016)
118+
119+
1.9.0-alpha10 includes the following changes since 1.9.0-alpha9:
120+
121+
- NEW clojure.core/any? - a predicate that matches anything. any? has built-in gen support. The :clojure.spec/any spec has been removed. Additionally, gen support has been added for some?.
122+
123+
- keys* will now gen
124+
125+
- gen overrides (see c.s/gen, c.s./exercise, c.s.t/check, c.s.t/instrument) now expect no-arg functions that return gens, rather than gens
126+
127+
- https://dev.clojure.org/jira/browse/CLJ-1977[CLJ-1977] - fix regression from alpha9 in data conversion of Throwable when stack trace is empty
128+
129+
=== https://groups.google.com/d/msg/clojure/M-zC83YJl10/-zN-b2ekBgAJ[1.9.0-alpha9] (Jul 5, 2016)
130+
131+
1.9.0-alpha9 includes the following changes since 1.9.0-alpha8:
132+
133+
- NEW clojure.spec/assert - a facility for adding spec assertions to your code. See the docs for *compile-asserts* and assert for more details.
134+
135+
- clojure.spec/merge - now merges rather than flows in conform/unform
136+
137+
- clojure.spec.test/instrument now reports the caller that caused an :args spec failure and ignores spec'ed macros
138+
139+
- clojure.spec.test - `test`, `test-fn`, `testable-syms` renamed to `check`, `check-fn`, and `checkable-syms` to better reflect their purpose. Additionally, some of the return value structure of `check` has been further improved.
140+
141+
- clojure.core/Throwable->map formerly returned StackTraceElements which were later handled by the printer. Now the StackTraceElements are converted to data such that the return value is pure Clojure data, as intended.
142+
143+
=== https://groups.google.com/d/msg/clojure/vF3RuDWuX8I/pvn4IUuUAwAJ[1.9.0-alpha8] (Jun 28, 16)
144+
145+
1.9.0-alpha8 includes the following changes since 1.9.0-alpha7:
146+
147+
The collection spec support has been greatly enhanced, with new controls for conforming, generation, counts, distinct elements and collection kinds. See the docs for every, every-kv, coll-of and map-of for details.
148+
149+
instrumenting and testing has been streamlined and made more composable, with powerful new features for spec and gen overrides, stubbing, and mocking. See the docs for these functions in clojure.spec.test: instrument, test, enumerate-ns and summarize-results.
150+
151+
Namespaced keyword reader format, printing and destructuring have been enhanced for lifting namespaces up for keys, supporting more succinct use of fully-qualified keywords. Updated docs will be added to clojure.org soon.
152+
153+
Many utilities have been added, for keys spec merging, fn exercising, Java 1.8 timestamps, bounded-count and more.
154+
155+
Changelog:
156+
157+
clojure.spec:
158+
159+
- [changed] map-of - now conforms all values and optionally all keys, has additional kind, count, gen options
160+
- [changed] coll-of - now conforms all elements, has additional kind, count, gen options. No longer takes init-coll param.
161+
- [added] every - validates a collection by sampling, with many additional options
162+
- [added] every-kv - validates a map by sampling, with many additional options
163+
- [added] merge
164+
- [changed] gen overrides can now be specified by either name or path
165+
- [changed] fspec generator - creates a function that generates return values according to the :ret spec and ignores :fn spec
166+
- [added] explain-out - produces an explain output string from an explain-data result
167+
- [changed] explain-data - output is now a vector of problems with a :path element, not a map keyed by path
168+
- [added] get-spec - for looking up a spec in the registry by keyword or symbol
169+
- [removed] fn-spec - see get-spec
170+
- [added] exercise-fn - given a spec'ed function, returns generated args and the return value
171+
- All instrument functions moved to clojure.spec.test
172+
173+
clojure.spec.test:
174+
175+
- [changed] instrument - previously took a var, now takes either a symbol, namespace symbol, or a collection of symbols or namespaces, plus many new options for stubbing or mocking. Check the docstring for more info.
176+
- [removed] instrument-ns - see instrument
177+
- [removed] instrument-all - see instrument
178+
- [changed] unstrument - previously took a var, now takes a symbol, namespace symbol, or collection of symbol or namespaces
179+
- [removed] unstrument-ns - see unstrument
180+
- [removed] unstrument-all - see unstrument
181+
- [added] instrumentable-syms - syms that can be instrumented
182+
- [added] with-instrument-disabled - disable instrument's checking of calls within a scope
183+
- [changed] check-var renamed to test and has a different signature, check docs
184+
- [changed] run-tests - see test
185+
- [changed] run-all-tests - see test
186+
- [changed] check-fn - renamed to test-fn
187+
- [added] abbrev-result - returns a briefer description of a test
188+
- [added] summarize-result - returns a summary of many tests
189+
- [added] testable-syms - syms that can be tested
190+
- [added] enumerate-namespace - provides symbols for vars in namespaces
191+
192+
clojure.core:
193+
194+
- [changed] - inst-ms now works with java.time.Instant instances when Clojure is used with Java 8
195+
- [added] bounded-count - if coll is counted? returns its count, else counts at most first n elements of coll using its seq
196+
197+
=== https://groups.google.com/d/msg/clojure/3wmGJ5B4b6c/YgCJCtN8CQAJ[1.9.0-alpha7] (Jun 15, 2016)
198+
199+
1.9.0-alpha7 includes the following changes since 1.9.0-alpha6 (all BREAKING vs alpha5/6):
200+
201+
clojure.core:
202+
- long? => int? - now checks for all Java fixed precision integer types (byte,short,integer,long)
203+
- pos-long? => pos-int?
204+
- neg-long? => neg-int?
205+
- nat-long? => nat-int?
206+
207+
clojure.spec:
208+
- long-in-range? => int-in-range?
209+
- long-in => int-in
210+
211+
If you are interested in checking specifically for long?, please use #(instance? Long %).
212+
213+
Sorry for the switcheroo and welcome to alphatown!
214+
215+
=== https://groups.google.com/d/msg/clojure/JIgmEFhAlq8/6UXO_rUpCQAJ[1.9.0-alpha6] (Jun 14, 2016)
216+
217+
1.9.0-alpha6 includes the following changes since 1.9.0-alpha5:
218+
219+
- & regex op now fails fast when regex passes but preds do not
220+
- returns from alt/or are now map entries (supporting key/val) rather than 2-element vector
221+
- [BREAKING] fn-specs was renamed to fn-spec and returns either the registered fspec or nil
222+
- fspec now accepts ifn?, not fn?
223+
- fspec impl supports keyword lookup of its :args, :ret, and :fn specs
224+
- fix fspec describe which was missing keys and improve describe of :args/ret/fn specs
225+
- instrument now checks *only* the :args spec of a var - use the clojure.spec.test functions to test :ret and :fn specs
226+
- Added generator support for bytes? and uri? which were accidentally left out in alpha5
227+
228+
=== https://groups.google.com/d/msg/clojure/D_s9Drua6D4/CTWk12cXDQAJ[1.9.0-alpha5] (Jun 7, 2016)
229+
230+
1.9.0-alpha5 includes the following changes since 1.9.0-alpha4:
231+
232+
Fixes:
233+
- doc was printing "Spec" when none existed
234+
- fix ? explain
235+
236+
New predicates in core (all also now have built-in generator support in spec):
237+
- seqable?
238+
- boolean?
239+
- long?, pos-long?, neg-long?, nat-long?
240+
- double?, bigdec?
241+
- ident?, simple-ident?, qualified-ident?
242+
- simple-symbol?, qualified-symbol?
243+
- simple-keyword?, qualified-keyword?
244+
- bytes? (for byte[])
245+
- indexed?
246+
- inst? (and new inst-ms)
247+
- uuid?
248+
- uri?
249+
250+
New in spec:
251+
- unform - given a spec and a conformed value, returns the unconformed value
252+
- New preds: long-in-range?, inst-in-range?
253+
- New specs (with gen support): long-in, inst-in, double-in
254+
255+
=== https://groups.google.com/d/msg/clojure/TR-qUFVJwj0/aZspfZ3XBAAJ[1.9.0-alpha4] (May 31, 2016)
256+
257+
1.9.0-alpha4 includes the following changes since 1.9.0-alpha3:
258+
259+
- fix describe empty cat
260+
- improve update-in perf
261+
- optimize seq (&) destructuring
262+
263+
=== https://groups.google.com/d/msg/clojure/WxT9kPIwlYI/r5PJpAP_CwAJ[1.9.0-alpha3] (May 26, 2016)
264+
265+
1.9.0-alpha3 includes the following changes since 1.9.0-alpha2:
266+
267+
- Macro fdef specs should no longer spec the implicit &form or &env [BREAKING CHANGE]
268+
- multi-spec includes dispatch values in path
269+
- multi-spec no longer requires special default method
270+
- fix for rep* bug
271+
- added explain-str (explain that returns a string)
272+
- improved s/+ explain
273+
- explain output tweaked
274+
- fix test reporting
275+
276+
=== https://groups.google.com/d/msg/clojure/ZBD5-Nhruc4/dntP8iQDAwAJ[1.9.0-alpha2] (May 25, 2016)
277+
278+
1.9.0-alpha2 includes the following changes since 1.9.0-alpha1:
279+
280+
- Better describe for s/+
281+
- Capture *recursion-limit* on gen call
282+
- explain-data now contains :in key for the input path
283+
- https://dev.clojure.org/jira/browse/CLJ-1931[CLJ-1931] - with-gen throws AbstractMethodError
284+
285+
=== https://groups.google.com/d/msg/clojure/7jbL34IjNzw/dejSpHefAwAJ[1.9.0-alpha1] (May 24, 2016)
286+
287+
1.9.0-alpha1 includes the first release of clojure.spec.
288+
289+
A usage guide for spec is now available: https://clojure.org/guides/spec.

content/community/downloads.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ ifdef::env-github,env-browser[:outfilesuffix: .adoc]
1717

1818
* https://repo1.maven.org/maven2/org/clojure/clojure/1.9.0-alpha16/clojure-1.9.0-alpha16.zip[Clojure 1.9.0-alpha16]
1919
* https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.clojure%22%20AND%20a%3A%22clojure%22%20AND%20v%3A1.9.0*[Clojure 1.9 pre-release builds]
20+
* <<devchangelog#,Dev changelog>>
2021
* Requirements: Java 1.6, 1.7, or 1.8
2122

2223
== Clojure Source

0 commit comments

Comments
 (0)