-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More fixes for non-1 arrays #21251
More fixes for non-1 arrays #21251
Conversation
@nanosoldier |
@@ -124,7 +124,7 @@ julia> length(A) | |||
length(t::AbstractArray) = (@_inline_meta; prod(size(t))) | |||
_length(A::AbstractArray) = (@_inline_meta; prod(map(unsafe_length, indices(A)))) # circumvent missing size | |||
_length(A) = (@_inline_meta; length(A)) | |||
endof(a::AbstractArray) = (@_inline_meta; length(a)) | |||
endof(a::AbstractArray) = (@_inline_meta; last(linearindices(a))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will allow things like A[1:end]
for offset arrays, but that's not tested. Is that intended? Of course A[end, 1]
will still error with a missing size.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally we'd want A[begin:end]
but of course that would need parser support. I frankly don't remember the exact context this came up in. If nothing else, this will prevent a genuine bug once we decide to allow length
and size
again for offset arrays. (Officially we said that would happen in 0.6, but I wonder if it's still a little early. Gotta finish JuliaLang/www_old.julialang.org#498 so they get more use...)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, it's the right definition, just checking if you were willing to incrementally begin allowing end
expressions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since I think end
has an unambiguous meaning, I think it makes sense. Unless you see a problem I don't.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any backporting concern that these don't have the @inline_meta
on release-0.5 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be fine to add them, I'd think.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would rather leave them out when it comes to backporting this specific PR. Looks like they were added in #20079 which is a larger breaking PR that's not a backport candidate. But if just this piece on its own has performance advantages and doesn't break anything, someone who wants it can propose it independently against release-0.5 (or at the moment, tk/backports-0.5.2)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's fine too.
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels |
Seems like the performance worked out fine. OK to merge? |
The
endof
change is worthy of @nanosoldierrunbenchmarks(ALL, vs = :master)
.