pub fn utf8_decode(s: &[u8], i: usize) -> (u32, usize)
UTF-8 decoding: (codepoint, index after it); an invalid / overlong / surrogate / too large sequence decodes as U+FFFD and advances one byte [src/core/str.s utf8_decode]