Make libxml2 thread-safe
Code which relies on mutable global state
This is unsafe when used with threads. Even in complex, single-threaded applications, this can require careful cleanup which many users probably get wrong.
External entity loader
We desperately need an alternative that can be set per parser context. See #718.
I/O callbacks
Should probably be deprecated.
Custom encoding handlers and aliases
Parser context should support encoding hooks. See #708.
ThrDef
default values for thread-local storage
Should probably be deprecated.
Code which relies on thread-local-storage
Unfortunately, the experiments with compiler TLS didn't turn out very well.
Parser options
The "new" API has an "options" argument. The old globals are already marked as deprecated.
Output options
Should be moved to the "xmlsave" API. The globals should be deprecated.
Generic/structured error function
There's already the undocumented ctxt->sax->serror
for parser context. This needs a better API. Other modules should provide local error handlers. Low-level code should ideally return meaningful error codes. Mostly fixed as part of #506.
xmlParserInputBufferCreateFilename
hook
The This is a more thread-safe alternative to set the external entity loader. Only used by PHP, ModSecurity and Armagetron Advanced. Should eventually be deprecated.
xmlOutputBufferCreateFilename
hook
The Only used by PHP. I'm not sure why a global setting is needed here. xmlSaveToIO
should offer enough control when serializing.
Node registration callbacks
Only used by Pacemaker and XMLStarlet. Should be deprecated.
Last error
Things like this should probably be OK with proper TLS support.