Even back in the day, I regarded unsafe functions such as strcpy() as nothing more than courtesies by the stdlib providers. I assumed it was up to me to write my own libraries for strings, linked lists, concurrency and so on precisely because they weren't reentrant or memory-safe.
Fast forward to today. Has anything changed? If I decide to use C89 or C11 for a project, aren't I still responsible for my own string allocation/comparison duties, etc.? Aren't I just going to roll my own string structure type with its own size_t length value along with a terminating 0 byte for compat and invent or find a Unicode library?
In other words, are all these complaints people have just nature of C, or is there something about C development that's changed fundamentally in the last couple of decades?
[0]: https://github.com/git/git/blob/master/banned.h