Well, it's not like that any more. There are portable ways to work with threads, there are multiple XML libraries, some of which do not read the whole document in memory, and all implementations support UTF-8.
These things happened because some people decided to improve CL (both implementations and libraries) instead of using something else.