Greatly simplifies the overall interface when it comes to compiling shaders. Also allows getting rid of a std::string overload of the same name. Now std::string and const char* both go through the same function.
"Cache data" can be used to assist a driver with creating pipelines by using previously-compiled shader ISA.