# List of most desired features for Julia v1.x

**URL:** <https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481>\
**Category:** Community\
**Tags:** gripes, suggestions\
**Created:** [June 27, 2017, 3:27am UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481 "2017-06-27T03:27:19Z")\
**Posts on this page:** 20\
**Page:** 6

<div class="post-metadata">

**Author:** ![ggggggggg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ggggggggg/32/265_2.png) [@ggggggggg](https://discourse.julialang.org/u/ggggggggg)\
**Post date:** [June 30, 2017, 7:58pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/104 "2017-06-30T19:58:49Z")

</div>

> [@ChrisRackauckas](#):
>
> Though it would be interesting to have a v0.7 “stable update phase”, with a long (3-6 months?) “let’s get together and update the ecosystem and get rid of everything which isn’t working” time. Essentially: “Julia 1.0 is already complete. It is exactly v0.7 but without the depwarns. However, given the significance of this number, we are giving the ecosystem an extended time to catch up with the changes, and cleaning up the packages which do not”. That’s something I could get around.

This seems like a good idea. Rust is doing something they call the [Libz Blitz](https://blog.rust-lang.org/2017/05/05/libz-blitz.html), which sounds like a formalized version of what you suggest, except they are doing it at their version 1.17.

---

<div class="post-metadata">

**Author:** ![adamslc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adamslc/32/3452_2.png) [@adamslc](https://discourse.julialang.org/u/adamslc)\
**Post date:** [June 30, 2017, 8:29pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/105 "2017-06-30T20:29:45Z")

</div>

> [@ggggggggg](#):
>
> Rust is doing something they call the [Libz Blitz](https://blog.rust-lang.org/2017/05/05/libz-blitz.html)

That is a great link! I think that the Julia package ecosystem could really benefit from some similarly focused attention. Unfortunately, I’m worried that the folks at Julia Computing feel so much pressure to release 1.0 that they aren’t going to be willing to take this sort of extended pause. Hopefully I’m wrong…

---

<div class="post-metadata">

**Author:** ![drinkwell](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/drinkwell/32/4212_2.png) [@drinkwell](https://discourse.julialang.org/u/drinkwell)\
**Post date:** [June 30, 2017, 8:39pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/106 "2017-06-30T20:39:21Z")

</div>

Type annotations for value type parameters.

This may be something that’s already possible and I’ve just not found it, but it bothers me that I can write Array{Int, 1} and Array{1, Int} and not get an error (admittedly, it errors when you try and call a constructor) . Similarly when I’m creating types I’d like to be able to constrain parameters to be either a DataType or a specific isbits type if it’s a value type. I think it would be helpful from a bug reduction/self documenting code point of view.

(Hopefully I’ve used the correct terminology here and this makes sense)

---

<div class="post-metadata">

**Author:** ![jeff.bezanson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeff.bezanson/32/48_2.png) [@jeff.bezanson](https://discourse.julialang.org/u/jeff.bezanson)\
**Post date:** [June 30, 2017, 8:44pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/107 "2017-06-30T20:44:10Z")

</div>

This is a great thread, thank you all. If I squint I can see pretty good consensus around what the biggest issues are, and the list doesn’t seem too horribly long.

As for the timing of 1.0, we have to strike a balance. With a later (and hopefully better) release, julia would be easier to adopt, but we would run lower on resources and possibly miss opportunities in the meantime. In particular, we can’t schedule 1.0 to land on the day we run out of money, so we have much less time to work on it than one might think.

I see the point about tension between semantic versioning (which demands stability) and public perception (which demands cool features). If we’re strict about prioritizing breaking changes, perhaps we can release a 1.0-beta fairly early, giving ourselves more time to work on the debugger and packages before 1.0-final.

---

<div class="post-metadata">

**Author:** ![gabrielgellner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gabrielgellner/32/75_2.png) [@gabrielgellner](https://discourse.julialang.org/u/gabrielgellner)\
**Post date:** [June 30, 2017, 10:57pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/108 "2017-06-30T22:57:28Z")

</div>

Wow that rust initiative is my dream. Everything so so nicely laid out. Will be interesting to see if they can pull this off.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [June 30, 2017, 11:34pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/109 "2017-06-30T23:34:05Z")

</div>

There is a work in progress Logging Julep:

[https://github.com/JuliaLang/Juleps/pull/30](https://github.com/JuliaLang/Juleps/pull/30)

Please contribute with feedback and use cases.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 1, 2017, 7:34pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/110 "2017-07-01T19:34:49Z")

</div>

I would add to what Jeff said that there’s a significant bottleneck that prevents releasing all of the things in perfect shape at the same time: a lot of the same people do the critical work on Julia itself as well as the packages that people are miffed about the up-to-dateness of. If we had human cloning technology, we would have used it on Keno by now 😬. Ditto for Jeff, Jameson and many other spectacular folks who already do more than seems possible for a single person. To improve this situation, the best approach is to increase the number of people who can work on Julia and important packages. If you’re not an industrial foundation that can directly fund development like the Sloan and Moore foundations, then the best thing you can do to reduce the bottleneck is likely to become one of those people yourself.

Since we cannot implement all of the things at once, the strategy that we’re taking is to stabilize the core language first, then turn our attentions to important packages, tooling, and compiler improvements that we can make without breaking things for people. Since the core language will be stable, we will have a solid foundation to build on. If we had unlimited resources, sure, we would release Julia 1.0 and all of the packages and tooling one could possibly want in perfect shape. But our resources are far from unlimited, so we’re taking the same strategy that Rust, Go, Clojure, Swift, and every other new programming language I can think of has taken: stabilize the core language, then once that’s done, turn your attention to important libraries and tools. That’s exactly what the Rust “Libz Blitz” linked to here is about. Rust is just a couple of years ahead of us: they released their 1.0 version a couple years ago; since then, they’ve spent a few years working on tooling; now they’re turning their attention to the package and library ecosystem.

---

<div class="post-metadata">

**Author:** ![nowozin](https://avatars.discourse-cdn.com/v4/letter/n/94ad74/32.png) [@nowozin](https://discourse.julialang.org/u/nowozin)\
**Post date:** [July 1, 2017, 8:41pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/111 "2017-07-01T20:41:37Z")

</div>

My wishlist for 1.0 only has one item:

1. Faster interactive use in the REPL. Python is a slow language that feels fast in the REPL, Julia is a fast language that feels slow in the REPL. Package load times and function compilation times mean that a simple command line program.jl takes 11 seconds until it displays a DocOpt.jl help message (in 0.6.0 on a 64 core machine). To me this is the single most important pain point in everyday Julia use. I am sure there are substantial technical challenges but in many cases during development I would happily give up JIT-compiled performance and settle with a simple and slow interpreter if this would mean that I can run things as interactive as in Python.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 1, 2017, 11:18pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/112 "2017-07-01T23:18:25Z")

</div>

I don’t disagree that faster load and compile times are extremely important, but they are exactly the kind of thing that is _not_ crucial for 1.0 – optimizations and compile time improvements can be done any time. The 1.0 release is about stabilizing APIs and the standard library. The 1.1 release can make as many performance improvements as we can manage – no one will complain about their code doing the same thing only faster. The promise of 1.0 is that you can write code knowing that it will continue to work and that the language will only get faster and better while your code continues to work.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 1, 2017, 11:34pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/113 "2017-07-01T23:34:13Z")

</div>

> [@StefanKarpinski](#):
>
> I don’t disagree that faster load and compile times are extremely important, but they are exactly the kind of thing that is not crucial for 1.0 – optimizations and compile time improvements can be done any time. The 1.0 release is about stabilizing APIs and the standard library. The 1.1 release can make as many performance improvements as we can manage. The promise of 1.0 is that you can write code, safe in the knowledge that it will continue to work and that the language will only get faster and better while your code continues to work.

As stated above, I like this idea a lot since maintaining large amounts of code through breaking releases is cumbersome. However, how do you plan on managing expectations with the 1.0 release? I think it’s fair to say that, from this thread, it’s clear that even informed Julia users seem to have higher expectations. I can see this having a rough “launch day” from outsiders who think v1.0 means Julia has a debugger with jetpacks on it, static compilation with a fancy GUI, and every library is bug-free. Of course you can’t handle it all, but is there a good way for us to help make sure people understand what 1.0 will and will not be? For example, a Julialang blog post?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 1, 2017, 11:38pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/114 "2017-07-01T23:38:56Z")

</div>

Yes, there will definitely be a blog post to accompany Julia 1.0 which will explain to anyone reading it what the release means and what the future holds (stabilization and improvements to tooling, libraries and the compiler).

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 1, 2017, 11:46pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/115 "2017-07-01T23:46:59Z")

</div>

I’m wondering if a post should come sooner, basically saying “this is what’s in store and how we’re looking at 1.0”. Sharing your JuliaCon roadmap talk is probably the same thing though.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 1, 2017, 11:48pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/116 "2017-07-01T23:48:39Z")

</div>

I think it’s sufficient to make sure that the blog post is ready when the release is and make the blog post be _the_ release announcement instead of having multiple things that end up getting posted on HN/Reddit in bits and pieces.

---

<div class="post-metadata">

**Author:** ![peter.derijk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/peter.derijk/32/8770_2.png) [@peter.derijk](https://discourse.julialang.org/u/peter.derijk)\
**Post date:** [July 2, 2017, 10:19am UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/117 "2017-07-02T10:19:06Z")

</div>

> [@ChrisRackauckas](#):
>
> 1.0 will only be a PR disaster if we, the Julia community, talk about 1.0 as some holy grail that fixes everything. We were told what 1.0 means, and so we should start correcting our own use of the term. The release should just clearly say “this is a breaking change, which for now breaks the debugger and … and …, but it’s the last breaking change for awhile: now let’s go fix things”.

Experience tells that how a community talks about a 1.0 release (or a 4.0 for example) and how it should be interpreted does not change the way the general public sees it. (For those that do not get the reference, the too early 4.0 release of KDE was a PR disaster and broke much of its momentum)

> [@ChrisRackauckas](#):
>
> Though it would be interesting to have a v0.7 “stable update phase”, with a long (3-6 months?) “let’s get together and update the ecosystem and get rid of everything which isn’t working” time. Essentially: “Julia 1.0 is already complete. It is exactly v0.7 but without the depwarns. However, given the significance of this number, we are giving the ecosystem an extended time to catch up with the changes, and cleaning up the packages which do not”. That’s something I could get around.

This approach would be the wisest. A 1.0 release with too many problems (in the basic ecosystem) will get a lot of critisism and people trying and leaving regardless of how it is explained …

---

<div class="post-metadata">

**Author:** ![LewisHein](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lewishein/32/5690_2.png) [@LewisHein](https://discourse.julialang.org/u/LewisHein)\
**Post date:** [July 2, 2017, 10:49am UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/118 "2017-07-02T10:49:45Z")

</div>

+1 on the 0.7 stable update phase.

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [July 2, 2017, 11:51am UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/119 "2017-07-02T11:51:01Z")

</div>

I am fully with Stefan here. 1.0 should focus on stabilizing the core. All the remarks about that we want to have a nice experience for all the people using Julia for the first time with 1.0 are valid and we should ensure that all packages are fully ported once 1.0 is announced. Lets do this by a long beta phase (3 month) where we Julians are all using 1.0 beta as if it has been released.

I thing important for 1.0 is Pkg3 and a mechanism for “default packages”. We have seen various peaces moving out of base which is really good. For nice “first time experience” it would be helpful though, to pull some packages in for the binaries that are downloaded.

---

<div class="post-metadata">

**Author:** ![nowozin](https://avatars.discourse-cdn.com/v4/letter/n/94ad74/32.png) [@nowozin](https://discourse.julialang.org/u/nowozin)\
**Post date:** [July 2, 2017, 8:56pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/120 "2017-07-02T20:56:48Z")

</div>

Stefan, thanks for clarifying, it makes perfect sense to focus on API and library stability first.

In the 1.0 release announcement, perhaps you could add a mini-roadmap that mentions the main high-level future improvements planned for 1.1 so at least everyone knows the Julia developer team is aware of remaining limitations and plans to address them.

In any case, thanks for all your work, I am a happy 0.6.0 user 🙂

---

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [July 2, 2017, 9:51pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/121 "2017-07-02T21:51:41Z")

</div>

PR events, press reviews, etc. are ephemeral. Backward compatibility is forever.

---

<div class="post-metadata">

**Author:** ![adamslc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adamslc/32/3452_2.png) [@adamslc](https://discourse.julialang.org/u/adamslc)\
**Post date:** [July 2, 2017, 10:15pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/122 "2017-07-02T22:15:01Z")

</div>

Well, until 2.0 that is…

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [July 2, 2017, 10:47pm UTC](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/123 "2017-07-02T22:47:46Z")

</div>

Yeah. But for whom?

[Previous page](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481.md?page=5)

[Next page](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481.md?page=7)
