i was happily chugging along fixing bugs, making Crucible better, having a great time, and i have now encountered An Issue™️
- MSVC has had broken
char8_tliteral support for a while now, and i don't know when they're going to fix it - so okay, i switched to my
Stringtype to usecharinternally. woops, that can be signed! and it's ✨implementation-defined✨ whether it is or not! - if
charis signed, as it happens to be on my particular version of macOS, then myconstexprUTF8 validator doesn't work, because it was written forchar8_t, which is always unsigned. and even if i switched it to work with a signed code unit type (ew), there are also platforms wherecharis unsigned! - guess what! the only ways to convert
char[]tounsigned char[]are runtime-only! this super sucks because i need something that will work in aconstexprcontext - so now
charis broken on one platform andchar8_tis broken on a different platform - oh and irrelevant at this point but
char[]tounsigned char[]conversion at compile time has also been broken on MSVC for a couple years lol
i think the only clean way to solve this is to go into my UTF8 validation code and add static_cast<unsigned char>(code_unit) everywhere that i have a code unit; these should optimize out on all relevant architectures, but ooooohhhhhhh i'm gettin' peeved by C++ againnnnnnn grrrrrrrrrrr

eggbug enjoyer