I agree about strings. There are basically two strings we use: the string builder and the "string data" which is any sort of slice of bytes that can be interpreted as a string. But starting from there are a lot of different ways one can name and implement them. I'm doing some experiments and before those are finished I don't have a strong opinion.
One thing to note though is that C3 does not have RAII or move semantics and so the C++ std::string or similar isn't even an option.