# Roadmap to 1.10?

**URL:** https://clojureverse.org/t/roadmap-to-1-10/1581
**Category:** Watercooler
**Created:** [February 11, 2018, 2:31pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581 "2018-02-11T14:31:02Z")
**Posts on this page:** 19
**Page:** 1

<div class="post-metadata">

### Author: ![l3nz](https://clojureverse.org/user_avatar/clojureverse.org/l3nz/32/713_2.png) [@l3nz](https://clojureverse.org/u/l3nz)
#### Post date: [February 11, 2018, 2:31pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/1 "2018-02-11T14:31:02Z")

</div>

I noticed that there are a few 1.10 alphas out: [https://clojure.org/community/devchangelog](https://clojure.org/community/devchangelog)

Anybody knows what is the roadmap to 1.10 - what is the focus of the new version?

---

<div class="post-metadata">

### Author: ![plexus](https://clojureverse.org/user_avatar/clojureverse.org/plexus/32/6_2.png) [@plexus](https://clojureverse.org/u/plexus)
#### Post date: [February 11, 2018, 2:51pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/2 "2018-02-11T14:51:18Z")

</div>

Clojure does not have a public roadmap. You’ll hear about it when it’s there.

This is different than a lot of other open source languages, and it’s something many of us regret, but it’s a deliberate choice by the authors not to run Clojure as a community project, and that’s a choice we have to respect.

---

<div class="post-metadata">

### Author: ![l3nz](https://clojureverse.org/user_avatar/clojureverse.org/l3nz/32/713_2.png) [@l3nz](https://clojureverse.org/u/l3nz)
#### Post date: [February 11, 2018, 4:22pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/3 "2018-02-11T16:22:31Z")

</div>

Ok - but maybe there is informal hearsay. Nobody else is just curious?

---

<div class="post-metadata">

### Author: ![plexus](https://clojureverse.org/user_avatar/clojureverse.org/plexus/32/6_2.png) [@plexus](https://clojureverse.org/u/plexus)
#### Post date: [February 12, 2018, 1:36am UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/4 "2018-02-12T01:36:38Z")

</div>

I’ve heard it said that even people pretty close to Rich only find out about new stuff after the fact. The best you can do is watch the repo, keep an eye on the mailing list, or maybe talk to Cognitect people in person when you get the chance.

And speculate. Nothing wrong with that 🙂

How about we turn this into some release notes fanfic? What would clojure 1.10 look like in your wildest dreams?

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [February 12, 2018, 4:33am UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/5 "2018-02-12T04:33:40Z")

</div>

If there are any themes or big features coming, this page tends to list them: [https://dev.clojure.org/display/design/Release.Next+Planning](https://dev.clojure.org/display/design/Release.Next+Planning)

But there’s nothing there right now so, as @plexus says, we’re currently in for whatever Rich has in mind.

The structured prepl is interesting. Given the deps and CLI stuff in 1.9, I think we’re leading up to some sort of debugging or testing tooling bump “out-of-the-box” but I can’t currently imagine what that’s going to look like.

We’ve run alphas and betas in production ever since 1.3.0 back in 2011 so, as far as I’m concerned, Clojure just goes through a continual and very careful series of enhancements. The “releases” have never been important to us since we’ve been leveraging those new features since they first appeared in an alpha.

We haven’t yet figured out how to leverage prepl so we haven’t jumped to an alpha yet for 1.10.0 but we’ll probably do that as a matter of course anyway soon regardless.

---

<div class="post-metadata">

### Author: ![jballanc](https://clojureverse.org/user_avatar/clojureverse.org/jballanc/32/61_2.png) [@jballanc](https://clojureverse.org/u/jballanc)
#### Post date: [February 12, 2018, 2:34pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/6 "2018-02-12T14:34:31Z")

</div>

I have no special knowledge or inside information, but (in the spirit of wild speculation), I think that if you look back at the feature list for the last few releases, we seem to be entering a new era of Clojure development focused around tooling.

Clojure took until around v1.4 or v1.5 to simply stabilize as a language and platform. Then, starting with v1.5 and the introduction of Reducers, followed by Transducers in v1.6, Rich seemed to shift his focus to interesting language-level inventions he could introduce that would be unique (or mostly unique) to Clojure. Finally, with the socket REPL, spec, `clj`, and now the pREPL, we seem to be getting features that should help out tool makers.

It is a bit of a shame that the development process is not more open, given that there already exists quite the tool ecosystem for Clojure, and I’m sure many of the authors of these packages would gladly provide feedback and/or suggestions but, as @plexus correctly states, this is the deal with ~~the devil~~ Rich that we have made in exchange for, arguably, one of the nicest, most productive languages currently available.

---

<div class="post-metadata">

### Author: ![alexmiller](https://clojureverse.org/user_avatar/clojureverse.org/alexmiller/32/4805_2.png) [@alexmiller](https://clojureverse.org/u/alexmiller)
#### Post date: [February 14, 2018, 9:56pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/7 "2018-02-14T21:56:37Z")

</div>

We don’t have a roadmap yet for 1.10. Current things that we are working on are:

1. a new tool from Rich that is driving the prepl work in 1.10 (coming soon I hope!)
2. a spec update for more programmable friendly specs. Ideally I’m hoping that in the 1.10 timeframe we will drive spec through to “final” and undo that bit of alpha-ness. Probably more work on core specs too.
3. more work on tools.deps.alpha and the clojure tools (clj). In particular, I’m hoping to push through Windows support and some of the Maven and git authentication additions that have been proposed to increase its reach and utility. Hoping to get this out of alpha nearish term too - the apis have largely settled down at this point.
4. a project I’m working on related to startup time

Notably, 1-3 are not dependent on a Clojure 1.10 final release and all of these are all likely to be available for use within the next few months. So “1.10.0” might be a ways out but we will be delivering new stuff regularly.

---

<div class="post-metadata">

### Author: ![alexmiller](https://clojureverse.org/user_avatar/clojureverse.org/alexmiller/32/4805_2.png) [@alexmiller](https://clojureverse.org/u/alexmiller)
#### Post date: [February 14, 2018, 10:29pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/8 "2018-02-14T22:29:33Z")

</div>

I think rather than focus on features, it’s more helpful to focus on problems to understand Clojure’s trajectory (I will undoubtedly use more and poorer words than Rich would for all of these):

- Composable, reusable data transformation - reducers, transducers, core.async
- Automatic parallelism - fork/join parallel stuff, reducers
- Portability - reader conditionals, cljc
- REPL tooling - socket repl, Throwable-\>map, clj, prepl
- Agile Clojure program building - core relying on libs, tools.deps.alpha, clj, git deps
- Describable data - data readers, edn, transit, spec, namespace map syntax, namespace map destructuring
- “Language of the system” - core.async, transit, var serialization
- Performance - reducibles, direct linking, lazy vars (future)
- Getting started - spec (incomplete), clj, git deps, clojure.org site, api doc infrastructure

These are all big arcs that cross many releases. Attention may phase in and out on any one of these at a time but they are all problems of enduring interest. Many of these only lightly touch “the core language” or even the core library, and that’s by intent. In the words of Rich, Clojure is a small language and intends to remain so. If you want to envision where Clojure is going, think about new steps on those arcs, which are largely not “new language” and may not even be “in Clojure” but around it in libs.

We’d love to hear feedback on the tooling stuff. I have taken and acted on a lot of feedback already for clj and plenty of stuff is queued up.

---

<div class="post-metadata">

### Author: ![mkvlr](https://clojureverse.org/user_avatar/clojureverse.org/mkvlr/32/1795_2.png) [@mkvlr](https://clojureverse.org/u/mkvlr)
#### Post date: [February 20, 2018, 8:22pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/9 "2018-02-20T20:22:00Z")

</div>

Regarding feedback on the tooling I think it’s a great step forward. We have a fairly complex setup (here’s @plexus [describing some of our issues we ran into](https://v2.clojureverse.org/t/migrating-from-boot-back-to-leiningen/837)).

It now looks like we’ll be able to migrate to tools.deps, [test-runner](https://github.com/cognitect-labs/test-runner), cljs.main and [pack](https://github.com/juxt/pack.alpha). We’ll keep a project.clj around to install datomic using lein until there’s a built-in solution for authentication (see [TDEPS-9](https://dev.clojure.org/jira/browse/TDEPS-9)) but I think it’s looking very promising. Will keep you posted about our progress. Thanks a lot for your great work on it @alexmiller!

---

<div class="post-metadata">

### Author: ![Daniel\_Fitzpatrick](https://clojureverse.org/user_avatar/clojureverse.org/daniel_fitzpatrick/32/2501_2.png) [@Daniel\_Fitzpatrick](https://clojureverse.org/u/Daniel_Fitzpatrick)
#### Post date: [February 21, 2018, 3:48am UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/10 "2018-02-21T03:48:27Z")

</div>

> a project I’m working on related to startup time

Are you at liberty to provide details? Just to satisfy my burning curiosity.

---

<div class="post-metadata">

### Author: ![ericnormand](https://clojureverse.org/user_avatar/clojureverse.org/ericnormand/32/1099_2.png) [@ericnormand](https://clojureverse.org/u/ericnormand)
#### Post date: [February 21, 2018, 3:26pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/11 "2018-02-21T15:26:02Z")

</div>

Well, @alexmiller may not answer directly, but we can speculate. There’s a whole document written on the topic: [https://dev.clojure.org/display/design/Improving+Clojure+Start+Time](https://dev.clojure.org/display/design/Improving+Clojure+Start+Time) There are references to patches and branches that are already in the repo or on jira.

A big win would be lazy-loading vars (in the fastload branch). In a “real world” application, they’ve measured 17% improvements in startup times, just by avoiding work until later.

---

<div class="post-metadata">

### Author: ![alexmiller](https://clojureverse.org/user_avatar/clojureverse.org/alexmiller/32/4805_2.png) [@alexmiller](https://clojureverse.org/u/alexmiller)
#### Post date: [February 22, 2018, 8:31pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/12 "2018-02-22T20:31:33Z")

</div>

The tradeoffs with lazy vars are 1) they only really help you when you have AOT compiled and that does not cover typical dev usage and 2) they make all subsequent use of a var slower (as you have added a guard to every invocation). So, while lazy vars are potentially useful for reducing production startup times they also make production usage slightly slower. It’s unclear whether this combination of tradeoffs actually affects the cases people care about (in the current state - invokedynamic could potentially eliminate #2).

---

<div class="post-metadata">

### Author: ![eggsyntax](https://clojureverse.org/user_avatar/clojureverse.org/eggsyntax/32/598_2.png) [@eggsyntax](https://clojureverse.org/u/eggsyntax)
#### Post date: [March 2, 2018, 11:24pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/13 "2018-03-02T23:24:42Z")

</div>

Thanks for the info, Alex! One question – once spec is final (for some value of “final”) will `clojure.spec` remain a fully separate library that has to be added as a dependency, or will it become more closely integrated into the standard library like eg `clojure.core.async`? I have vague memories that the intention was closer integration, back when spec was first separated out, but that might have changed, or I might be completely misremembering 🙂

---

<div class="post-metadata">

### Author: ![alexmiller](https://clojureverse.org/user_avatar/clojureverse.org/alexmiller/32/4805_2.png) [@alexmiller](https://clojureverse.org/u/alexmiller)
#### Post date: [March 3, 2018, 2:46pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/14 "2018-03-03T14:46:20Z")

</div>

Undetermined yet, but I think the most likely thing that will happen when spec is final is that it will continue to be a separate library depended on but not included in the main clojure artifact.

core.async is a different case in that it depends on clojure, whereas clojure depends on spec.alpha.

---

<div class="post-metadata">

### Author: ![eggsyntax](https://clojureverse.org/user_avatar/clojureverse.org/eggsyntax/32/598_2.png) [@eggsyntax](https://clojureverse.org/u/eggsyntax)
#### Post date: [March 3, 2018, 5:54pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/15 "2018-03-03T17:54:39Z")

</div>

Thanks, Alex! Makes sense.

In case I haven’t said it before, your patient willingness to help people understand Clojure-related issues with clear, insightful answers is an **enormous** gift to the community, and I find I have reason to be grateful for it pretty frequently. Thank you so much for the work you do! (and that’s not even _mentioning_ the work you do on the language itself – I have no idea how you manage to do it all).

---

<div class="post-metadata">

### Author: ![Ian\_Davies](https://clojureverse.org/letter_avatar_proxy/v4/letter/i/6bbea6/32.png) [@Ian\_Davies](https://clojureverse.org/u/Ian_Davies)
#### Post date: [April 3, 2018, 5:14pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/16 "2018-04-03T17:14:30Z")

</div>

hey @alexmiller ,  
would you be able to elaborate on what you mean by “windows support”?

---

<div class="post-metadata">

### Author: ![alexmiller](https://clojureverse.org/user_avatar/clojureverse.org/alexmiller/32/4805_2.png) [@alexmiller](https://clojureverse.org/u/alexmiller)
#### Post date: [April 3, 2018, 6:12pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/17 "2018-04-03T18:12:29Z")

</div>

Yeah, just powershell port of clj for Windows (almost done!).

---

<div class="post-metadata">

### Author: ![alanmarazzi](https://clojureverse.org/user_avatar/clojureverse.org/alanmarazzi/32/1094_2.png) [@alanmarazzi](https://clojureverse.org/u/alanmarazzi)
#### Post date: [April 4, 2018, 7:15am UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/18 "2018-04-04T07:15:16Z")

</div>

I’m very happy to see that auto concurrency and parallelism are a concern, I use Clojure mostly for intensive data processing tasks and the fact I’m able to easily (at least it is much easier to me than in other languages) parallelize most of the work is one of the major killer features.

---

<div class="post-metadata">

### Author: ![system](https://clojureverse.org/uploads/default/original/2X/5/51079bf9e4b7d9466242c06cf1e43b9f8bd6da14.png) [@system](https://clojureverse.org/u/system)
#### Post date: [October 5, 2018, 12:50pm UTC](https://clojureverse.org/t/roadmap-to-1-10/1581/19 "2018-10-05T12:50:36Z")

</div>


