There was also this paper: “You can have it all: abstraction and good cache performance” https://dl.acm.org/doi/10.1145/3133850.3133861… which talks abstracting over struct of arrays (SoA) vs array of structs (AoS) representations.
There was also a follow up paper by the same group which seemed interesting: “Reshape your layouts, not your programs: A safe language extension for better cache locality”
I've also wondered if somehow you could levitate data descriptions, and then map those to low level memory layouts - thinking of how Rust has different optimizations packing structs and tagged unions, for example. Would be cool if the user could have control over that.
Nice, thanks! More looking for inspiration than anything. And yeah, I think I remember this paper - it had really cool diagrams! Thanks for the reminder!