-
Couldn't load subscription status.
- Fork 6
Static fixes #45
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
base: master
Are you sure you want to change the base?
Static fixes #45
Conversation
This extends the `Static` definitions by specializing specifically on array types.
This extends the `Static` definitions by specializing specifically on array types.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #45 +/- ##
=======================================
Coverage 88.45% 88.46%
=======================================
Files 11 11
Lines 1317 1318 +1
=======================================
+ Hits 1165 1166 +1
Misses 152 152 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@devmotion, this unifies static_first, static_step, and static_last with the definitions in Static. I'm not seeing any warnings in the LoopVectorization tests now. |
| @inline Static.static_first(x::AbstractArray) = Static.maybe_static(known_first, first, x) | ||
| @inline Static.static_last(x::AbstractArray) = Static.maybe_static(known_last, last, x) | ||
| @inline Static.static_step(x::AbstractArray) = Static.maybe_static(known_step, step, x) |
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 is type piracy - neither method nor argument is owned by StaticArrayInterface. I think this is not a good fix.
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.
Good point. Why does it exist in Array interface at all? It's a static thing?
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 is type piracy - neither method nor argument is owned by StaticArrayInterface. I think this is not a good fix.
True but the alternative may be more involved.
Good point. Why does it exist in Array interface at all? It's a static thing?
The alternative solution is to move these known_... methods to Static. I'm fine with doing this but it might take some extra finesse. I'll try moving them to Static.
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.
Maybe it's possible to remove these definitions here completely and just use the Static versions?
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.
After refamiliarizing myself with this code I think we have a couple options:
- Accept that
StaticArrayInterfaceis the sole package that gets to do this type piracy because it is specifically for arrays - Move all the
known_<...>methods toStaticand haveStaticdepend onArrayInterface. We originally wantedStaticto be a fairly light dependency, so moving all static related things there wasn't the go to. However, that may not be realistic since Base Julia would ultimately need to change first. - Move
known_<...>methods toArrayInterfacesince those methods don't requireStaticInt. Then definestatic_<...>methods inStatic. Basically, same approach as 2 but different execution. This would take a lot more work to disentangle things but could prepare us to eventually not be so dependent onStatic. I'm not sure how we can completely remove it as a dependency, but if invalidations aren't every going to get fixed I'm not sure we have a choice.
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.
What are the packages using this?
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.
When searching for static_first on JuliaHub, it seems only Static.jl uses Static.static_first but all other packages use StaticArrayInterface.static_first: https://juliahub.com/ui/Search?q=static_first&type=code
Maybe the Static methods should just not be exported?
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.
When searching for
static_firston JuliaHub, it seems only Static.jl usesStatic.static_firstbut all other packages useStaticArrayInterface.static_first: https://juliahub.com/ui/Search?q=static_first&type=codeMaybe the Static methods should just not be exported?
I'd be fine with that or do we want to push for static stuff to be in Static.jl?
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.
Either export or move to Static.jl, but I don't think anyone actually cares or uses this.
No description provided.