We are moving spec out of the Clojure repo/artifact and into a library to make it easier to evolve spec independently from Clojure. While we consider spec to be an essential part of Clojure 1.9, there are a number of design concerns to resolve before it can be finalized. This allows us to move towards a production Clojure release (1.9) that depends on an alpha version of spec. Users can also pick up newer versions of the spec alpha library as desired. Additionally, this is a first step towards increased support for leveraging dependencies within Clojure.
We will be creating two new contrib libraries that will contain the following (renamed) namespaces:
org.clojure/spec.alpha
clojure.spec.alpha (previously clojure.spec)
clojure.spec.gen.alpha (previously clojure.spec.gen)
clojure.spec.test.alpha (previously clojure.spec.test)
org.clojure/core.specs.alpha
clojure.core.specs.alpha (previously clojure.core.specs)
In most cases, we expect that users have aliased their reference to the spec namespaces and updating to the changed namespaces will only require a single change at the point of the require.
How will ClojureScript's spec implementation change?
ClojureScript will also change namespace names to match Clojure. Eventually, the ClojureScript implementation may move out of ClojureScript and into the spec.alpha library - this is still under discussion.
Why do the libraries and namespaces end in alpha?
The "alpha" indicates that the spec API and implementation is still subject to change.
What will happen when the spec api is no longer considered alpha?
At that point we expect to release a non-alpha version of the spec library (with non-alpha namespaces). Users may immediately begin to use that version of spec along with whatever version of Clojure it depends on. Clojure itself will depend on it at some later point. Timing of all these actions is TBD.
Will the library support Clojure 1.8 or older versions?
No. spec uses new functions in Clojure 1.9 and it has never been a goal to provide spec for older versions. Rather, we are trying to accelerate the release of a stable Clojure 1.9 so that users can migrate forward to a stable production release with access to an alpha version of spec, and access to ongoing updated versions as they become available.
Thanks for the update, this seems like a good decision allowing things to evolve more quickly.Does that also mean that there are no breaking changes intended to current non .alpha namespaces/APIs?
Whilst this is rather disruptive for current users of clojure.spec, I understand and appreciate the goal.
I hope that the new org.clojure/spec.alpha will be made available for a few days ahead of actually removing it from Clojure 1.9 so that those of us already using it and doing multi-version against master-SNAPSHOT will have a few days to update our code rather than just see our dev builds break and get blocked while we’re forced to make this code change?
Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
Doesn't this mean that Clojure and spec will be mutually dependent, i.e. a dependency cycle?
Is that likely to cause problems for any tooling?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/10dbF7w2IQo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+unsubscribe@googlegroups.com.
I switched the World Singles’ codebase over to using org.clojure/spec.alpha today with no problems. Since we always `:require .. :as` it was an easy global find’n’replace (well, three of them – one for each namespace change needed). We’re also explicitly depending on the 0.1.94 release (so our build system will automatically track when a new version appears and flag that for us).
What would be the use case for users to explicitly depend on core.specs.alpha given that is only used internally by Clojure?
Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood
On 4/26/17, 6:02 PM, "Alex Miller" <clo...@googlegroups.com on behalf of al...@puredanger.com> wrote:
I guess I should say again that no one needs to depend directly on these - Clojure will include them via dependency. At some point there will may be a newer version of these libs you wish to use than the one included by Clojure and only in that case would you need to include it directly.
On Wed, Apr 26, 2017 at 7:54 PM, Alex Miller <al...@puredanger.com> wrote:
[org.clojure/spec.alpha "0.1.94"]
[org.clojure/core.specs.alpha "0.1.10"]
are available now.
On Wednesday, April 26, 2017 at 1:28:05 PM UTC-5, Sean Corfield wrote:Whilst this is rather disruptive for current users of clojure.spec, I understand and appreciate the goal.
I hope that the new org.clojure/spec.alpha will be made available for a few days ahead of actually removing it from Clojure 1.9 so that those of us already using it and doing multi-version against master-SNAPSHOT will have a few days to update our code rather than just see our dev builds break and get blocked while we’re forced to make this code change?
Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/10dbF7w2IQo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
What problems would it pose if the alpha status would be reflected in the version number of org.clojure/spec,just like it is the case with org.clojure/clojure rightnow, which is 1.9.0-alpha15?
I've seen the Spec-ulation Keynote from Rich and this step feels like an experimentto try out the idea of encoding the api version of a library in the name of the library.Is that correct?
The error you are seeing with doc is a known issue due to spec.alpha not being aot compiled. A newer version (0.1.108) of spec.alpha is available that fixes the issue. Note that this kind of update is exactly why the jars are split - you can update the libs more frequently than the Clojure version.
On May 3, 2017, at 7:37 PM, Alex Miller <al...@puredanger.com> wrote:A newer version (0.1.108) of spec.alpha is available that fixes the issue. Note that this kind of update is exactly why the jars are split - you can update the libs more frequently than the Clojure version.