# What are the current plans regarding a new LTS Julia version?

**URL:** <https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501>\
**Category:** Internals & Design\
**Created:** [June 23, 2021, 1:36pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501 "2021-06-23T13:36:08Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 23, 2021, 1:36pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/1 "2021-06-23T13:36:08Z")

</div>

Sorry if this has already been answered somewhere: there are so many really cool substantial changes/improvements in v1.7, and it looks like quite a few of them will be hard or impossible to cover via Compat.jl. So it may be hard to take full advantage of v1.7 in code that’s also compatible with v1.6 (correct?). In view of this, what are the current plans regarding a new LTS Julia version?

---

<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 23, 2021, 1:39pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/2 "2021-06-23T13:39:09Z")

</div>

Which features specifically?

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [June 23, 2021, 2:02pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/3 "2021-06-23T14:02:01Z")

</div>

multi dimensional array could be annoying to process with `@compat` macro

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 23, 2021, 3:47pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/4 "2021-06-23T15:47:48Z")

</div>

> Which features specifically?

I could see `(; a, b) = x` becoming very popular. Also, future parallel applications (that rely on on the fact that tasks now have separate RNGs) may find it hard to support v1.6 without extra effort. And I guess the `@atomic` macro probably can’t be made available on v1.6 via Compat. Also, I heard Diffractor will require v1.7 (and so certain packages may want/need to depend on it at some point)? And there’s the new “Manifest.toml” format, of course.

I certainly won’t presume to say v1.6 should not become the new LTS. I just had the impression that v1.7 was a “big” release (with a beta and everything), so I was just curious what the current thinking of the dev team is, here.

---

<div class="post-metadata">

**Author:** ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)\
**Post date:** [June 23, 2021, 3:59pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/5 "2021-06-23T15:59:57Z")

</div>

> [@oschulz](#):
>
> And there’s the new “Manifest.toml” format, of course.

The plan is to backport support for that to 1.6.

There has certainly been a lot of discussion about whether we really want 1.6 to be the LTS and note that a final decision on this has not yet been made (Although it seems fairly likely at this point). The problem is that we will (hopefully) never stop putting cool new features into releases, but at some point you just have to bite the bullet and declare an LTS, because we would really like to stop having to support 1.0 for much longer. If we waited until 1.7, there would likely just be similar calls for 1.8 to be the LTS instead.

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [June 23, 2021, 4:08pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/6 "2021-06-23T16:08:25Z")

</div>

Will the ability to do `x.b .= y` when `:b` is not a property of `x` be backported to 1.6?

---

<div class="post-metadata">

**Author:** ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)\
**Post date:** [June 23, 2021, 4:09pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/7 "2021-06-23T16:09:37Z")

</div>

No, new features are generally not backported.

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [June 23, 2021, 4:14pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/8 "2021-06-23T16:14:19Z")

</div>

Sounds good. DataFrames users might use this feature pretty frequently in the future (or they might not). I don’t know how much consideration should be given to that when considering the choice of LTS.

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 23, 2021, 5:13pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/9 "2021-06-23T17:13:17Z")

</div>

> [@Julia v1.7.0-beta2 is now available](https://discourse.julialang.org/t/julia-v1-7-0-beta2-is-now-available/63408/17):
>
> > [@oschulz](#):
> >
> > And there’s the new “Manifest.toml” format, of course.
> 
> The plan is to backport support for that to 1.6.
> 
> […]

Thanks, @simeonschaub !

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [June 24, 2021, 3:11pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/10 "2021-06-24T15:11:02Z")

</div>

> [@simeonschaub](#):
>
> If we waited until 1.7, there would likely just be similar calls for 1.8 to be the LTS instead.

It seems obvious 1.7 to me should be the next LTS, as I thought it would. We’ve waited this long, and I believe there’s consensus by now that 1.6 is a good release, so why not go with that?

So what are the pros and cons for 1.6 vs 1.7 (or later) for LTS?

It seems you could backport all of 1.7+ good features to 1.6 (you technically can for each individual one, but there are reasons you don’t want to).

I’ll first highlight some pros of Julia 1.7, from NEWS (now in HISTORY on master):

- “The default random number generator has changed, so all random numbers will be different (even with the same seed) unless an explicit RNG object is used.” While people shouldn’t be relying on the exact numbers, it seems if might be confusing for some users to get a different stream for current and LTS. I’m not sure this affects package authors much, more what people read into the LTS term.
- Additional functions can be handled with Compat.jl, but I’m not sure it can handle new syntax, and 1.7 has an interesting “New language features” section, e.g. “Repeated semicolons” feature, and “backslash ( `\` ) before a newline”. It seems annoying to be restricted to older syntax.
- “`macroexpand` , `@macroexpand` , and `@macroexpand1` no longer wrap errors in a `LoadError` . To reduce breakage, `@test_throws` has been modified so that many affected tests will still pass ([#38379](https://github.com/JuliaLang/julia/issues/38379)).” That’s the first time I see “break[age]” ever in NEWS. I don’t make my own macros, and not up-to-speed on that feature, but I see it’s implemented with e.g. C code, so again I’m not sure Compat.jl can support it.
- “Use [Libblastrampoline](https://github.com/staticfloat/libblastrampoline/) to pick a BLAS and LAPACK at runtime.” A very important feature going forward, would it be bad to not have in LTS? Or was this it the other way?

I could go through all of NEWS, and I guess everything counts as a pro, Julia is continually improving. So what are the potential cons for 1.7? Anything obvious to see (there)?

- “The `RepString` type has been moved to the [LegacyStrings.jl package](https://github.com/JuliaArchive/LegacyStrings.jl).” This isn’t a big deal as few using, but it seems strange to support it in LTS, if 1.6 chosen, but not in 1.7+.
- The middle dot `·` ( `\cdotp` U+00b7) and the Greek interpunct `·` (U+0387) are now treated as equivalent to the dot operator `⋅` ( `\cdot` U+22c5) (#25157).
- The minus sign `−` ( `\minus` U+2212) is now treated as equivalent to the hyphen-minus sign `-` (U+002d) ([#40948](https://github.com/JuliaLang/julia/issues/40948)).

I’m not sure that new syntax will be hugely popular, but I would hate to be staring at code that looks identical (for dot, or very similar for minus), working in current Julia, and be confused why not working the same in 1.6 LTS. Maybe the error messages will be helpful and make obvious, but still I think bad for at least newbies.

> [@Julia v1.7.0-beta2 is now available](https://discourse.julialang.org/t/julia-v1-7-0-beta2-is-now-available/63408/25):
>
> Hope `Cxx` will support it!

Yes, I also hope 1.7 will support, as this seems like a very important package, and as far as I know the only package no longer supported by current Julia, nor LTS (i.e. 1.0.x), only supported by 1.3. I’m not up-to-peed on what broke it in 1.4, but if it can be fixed in 1.7, but not 1.6, then that’s an excellent reason for 1.7 to be LTS.

Some minor:

> <https://github.com/JuliaLang/julia/pull/38574>
>
> Closes #36618, using the new \`utf8proc\_islower\` and \`utf8proc\_isupper\` functions… from utf8proc 2.6 (which we upgraded to in #38551).
> 
> Technically breaking, but I'm not sure who would be relying on the slight differences between the old behavior and the Unicode standard definitions?

> “Technically breaking”

You see that term occasionally, while never in NEWS. That’s not something to worry about for 1.7, but does it mean we wouldn’t want to backport to 1.6?

What I know of not mentioned in NEWS, lots of speedup in floating-point code (e.g. 50%), thanks to Oscar, and such aren’t mentioned as a constant factor. But there’s also fix for quadratic behavior regarding to memory allocations. It’s not mentioned in NEWS, I think because it’s a rare edge case. But I would want to avoid those in LTS too.

If we choose 1.7 and regret it, we could always add 1.6 as LTS (doubling backport effort), but if 1.6 is chosen then we can’t simply chose 1.7 and drop 1.6 as LTS, then it would be a short-term support version… However, the length/meaning of LTS has never been defined.

If 1.6 is chosen as LTS, what can we backport, or more importantly what CAN’t we backport from 1.7+? Anything obvious, good-to-have, feature?

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [June 24, 2021, 3:32pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/11 "2021-06-24T15:32:54Z")

</div>

Features aren’t backported. Full stop. The new manifest version is on the edge of being overly feature-y, but it fixes a major workflow issue.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [June 24, 2021, 4:00pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/12 "2021-06-24T16:00:23Z")

</div>

> [@Palli](#):
>
> “The default random number generator has changed, so all random numbers will be different (even with the same seed) unless an explicit RNG object is used.” While people shouldn’t be relying on the exact numbers, it seems if might be confusing for some users to get a different stream for current and LTS. I’m not sure this affects package authors much, more what people read into the LTS term.

The stream of random numbers in some cases already changed a few times:

```julia
% julia-13 -E 'using Random; Random.seed!(1); rand((1,2,3,4,5))'
2
% julia-14 -E 'using Random; Random.seed!(1); rand((1,2,3,4,5))'
3
% julia-15 -E 'using Random; Random.seed!(1); rand((1,2,3,4,5))'
2
% julia -E 'using Random; Random.seed!(1); rand((1,2,3,4,5))' # Julia v1.6
4
% julia-master -E 'using Random; Random.seed!(1); rand((1,2,3,4,5))'
1

```

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [June 24, 2021, 4:02pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/13 "2021-06-24T16:02:55Z")

</div>

In fact, the stream of random numbers is [documented to be able to change between any two versions](https://docs.julialang.org/en/v1/stdlib/Random/). That’s a good thing - noone should rely on randomness (use property based testing or some other method to ensure your code is correct, rather than comparing with some “golden numbers”).

---

<div class="post-metadata">

**Author:** ![jlperla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlperla/32/34332_2.png) [@jlperla](https://discourse.julialang.org/u/jlperla)\
**Post date:** [June 24, 2021, 5:10pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/14 "2021-06-24T17:10:43Z")

</div>

Since AD is so important for the future of Julia, I would strongly support picking whatever version for LTS that will enable the Diffractor-and-cousins. If those will require features in 1.7, then I think it is better to wait.

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [June 24, 2021, 5:25pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/15 "2021-06-24T17:25:50Z")

</div>

> [@jlperla](#):
>
> Since AD is so important for the future of Julia, I would strongly support picking whatever version for LTS that will enable the Diffractor-and-cousins.

The better question is how important AD is for the risk-averse users who prefer the stability of an LTS release over new features in new minor releases. I’m kinda doubtful that cutting edge AD technology is in focus for that user group.

---

<div class="post-metadata">

**Author:** ![jlperla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlperla/32/34332_2.png) [@jlperla](https://discourse.julialang.org/u/jlperla)\
**Post date:** [June 24, 2021, 5:33pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/16 "2021-06-24T17:33:12Z")

</div>

> [@GunnarFarneback](#):
>
> The better question is how important AD is for the risk-averse users who prefer the stability of an LTS release over new features in new minor releases.

Maybe you are right, but is it worth waiting for the 1.7 beta to mature for the risk-averse users? The issue may be that a whole bunch of packages start lower-bounding at 1.7 because they want AD to work, at which point the LTS isn’t especially useful.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [June 24, 2021, 6:42pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/17 "2021-06-24T18:42:34Z")

</div>

LTS is only for those who wants to keep stuff that is already working working, it’s certainly not for those who wants anything new, like new features.

---

<div class="post-metadata">

**Author:** ![jlperla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlperla/32/34332_2.png) [@jlperla](https://discourse.julialang.org/u/jlperla)\
**Post date:** [June 24, 2021, 6:51pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/18 "2021-06-24T18:51:23Z")

</div>

For sure. But if there are compelling reasons that a bunch of crucial packages will lowerbound to 1.7 because it is the only way they can be AD-compatible, then that is a problem. It might make a bunch of people stuck with old versions of packages and unable to upgrade a year from now.

…of course, if Julia 1.7 is not strictly required for the fancy replacements for Zygote, then this may be a moot point.

---

<div class="post-metadata">

**Author:** ![TheLateKronos](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thelatekronos/32/12824_2.png) [@TheLateKronos](https://discourse.julialang.org/u/TheLateKronos)\
**Post date:** [June 24, 2021, 7:02pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/19 "2021-06-24T19:02:50Z")

</div>

> [@StefanKarpinski](#):
>
> Which features specifically?

I persoally inted to use the revamped version of `range`, and am a little sad that that code will not work in the LTS version.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [June 24, 2021, 7:21pm UTC](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501/20 "2021-06-24T19:21:58Z")

</div>

I’d think that at least some of the changes to `range` should be able to be provided to older versions via [Compat.jl](https://github.com/JuliaLang/Compat.jl).

[Next page](https://discourse.julialang.org/t/what-are-the-current-plans-regarding-a-new-lts-julia-version/63501.md?page=2)
