Julia: 0.6.3 doesn't like Tuple{Int} anymore for overloads

Created on 1 Jun 2018  Â·  12Comments  Â·  Source: JuliaLang/julia

Julia 0.6.2

julia> test(::M) where M <: Tuple{2} = nothing
julia> test(::M) where M <: Tuple{3} = nothing

Julia 0.6.3

julia> test(::M) where M <: Tuple{2} = nothing
julia> test(::M) where M <: Tuple{3} = nothing
ERROR: TypeError: UnionAll: expected Type, got Int64
regression

Most helpful comment

I have to agree with @oschulz here. We have seen it regularly during the transition from 0.1 to 0.6 that package ecosystem got unstable when a new Julia release is close. For those doing serious work with Julia this is not satisfying.

In this particular case there are two quick possibilities:

  • withdraw 0.6.3 and change the link on the website to 0.6.2
  • make a quick 0.6.4

But letting a broken 0.6.3 be the latest "stable" release is the worst option.

All 12 comments

Same error for 0.7.0-alpha.0

@SimonDanisch: Despite the fact that behavior changed, does it actually make sense what you defined. What is Tuple{3}?
Isn't what you want this

julia> test(::M) where M <: NTuple{2,T} where T = nothing
julia> test(::M) where M <: NTuple{3,T} where T = nothing

Or am I on a completely wrong track here?

Well, it's just a minimal working example ;) The original bug is more of that nature (using StaticArrays).

I see

Sure, this can't be the (new) expected behaviour?

I did a bisect from v0.6.2 -- v0.6.3. Commit 7a836d157f introduced the behavior.

Thanks for the bisect, very helpful!

Can we get 0.6.4 or have the binaries of 0.6.2 on the julia page to download again? This problem crops up in more places, and some people installed 0.6.3 without being able to go back to 0.6.2....
cc: @ararslan

The 0.6.2 binaries are still available, they just aren't linked on the page. You can copy the 0.6.3 links and replace 3 with 2 and it should work fine.

I might do a 0.6.4 depending on the timeline for 0.7.

I'd be very much in favor of a quick 0.6.4, too. Otherwise, we may have to implement workarounds in packages. I know 0.7 is close (and I look forward to it very much), but, the ecosystem is, IMHO, far from ready for 0.7 - so it'll be a few months before it can be used productively. Besides, this issue is kinda serious, and it would be a shame to have it in the last 0.6 version. :-)

I have to agree with @oschulz here. We have seen it regularly during the transition from 0.1 to 0.6 that package ecosystem got unstable when a new Julia release is close. For those doing serious work with Julia this is not satisfying.

In this particular case there are two quick possibilities:

  • withdraw 0.6.3 and change the link on the website to 0.6.2
  • make a quick 0.6.4

But letting a broken 0.6.3 be the latest "stable" release is the worst option.

Was this page helpful?
0 / 5 - 0 ratings