Description
openedon Aug 10, 2014
For 0.4 several of us want to see significant improvements in arrays. I'm opening this meta-issue to help organize the effort. I'll be brief here and link out to issues/packages for more detailed explanations. Please add to these bullet points.
Underlying technologies
The first two are essential, the third is nearly essential.
- Julia native bounds checking and removal (extensible bounds checking removal #7799) (PR: RFC: Safer, extensible ﹫inbounds #8227)
- Staged functions (WIP: Staged functions #7474, splatting fixes For caching staged methods, don't restrict the number of varargs to match #7935)
- Efficient cartesian iteration
(WIP: Add Cartesian product iteration. Fixes #1917 #6437)(Efficient cartesian iteration (new version of #6437) #8432) - Eliminate the performance hit from splatting (update:
stagedfunctions
can be coaxed into doing this for you) - Even more efficient tuple storage (for implementing fixed-size arrays)
- A mutable fixed-size buffer type analogous to tuples? (for mutable fixed-size arrays; Clang.jl would probably like this too)
- Make
[a, b]
non-concatenating make [a, b] not concatenate #3737/make{a,b}
give better-typed arrays [original title: make [a,b] non-concatenating] #2488
I'm guessing the approach for implementing #7799 will also allow one to specify manual inlining (which is where the idea was originally proposed), which is the main bottleneck for #6437. So that's almost a 2-for-1 deal.
Implementation
The first two are essential.
- ArrayViews (ArrayViews (A systematic array view framework) #5556).
In my opinion, we likely just want theContiguousView
part of it. - Work in progress: https://github.com/timholy/ArrayViewsAPL.jl
- Fixed-size arrays (WIP: Add Cartesian product iteration. Fixes #1917 #6437)
- Address SubArray bounds checking (or not): bug or feature? #4044
- More diverse views permitting an
AbstractVector
index? (These would not be "strided".) - Move
Colon
translation out of the parser (RFC: Move Colon translation out of the parser #10331)
Opportunities
- negated indexing, NegatedIndex type #1032
- easier indexing for
AbstractArray
s, RFC: Give AbstractArrays smart and performant indexing behaviors for free #10525
ArrayViewsAPL is something I've not yet broadly announced. While the APL in the package's title is in reference to #5949 (for which it can be a test bed to see how we'd like it and how much would break), its real purpose is to exploit stagedfunctions for creating efficient and general view operations. Please see the README for explanations.