Let's Fix OpenGL
Optimizing data structures in high-level programs: new directions for extensible compilers based on staging