Consider maybe string store u8 string adding c_stru8 method and keeping both and deprecating c_str. More compact for most cases at the cost that indexing much more expensive. Then when enuf time gone by can lose c_str and switch it’s meaning to return u8. Then derprecate c_stru8.
THEN - CAN have backend string which stores in wchar_t or whatever too (for fast indexing). But change so only PROMISED (forever) one is utf8.