This page describes some of the changes which should be expected
in Expat 3. These are intended as notes made by the developers as
things get thought through; these can change at any time. This is
not a projected feature list for Expat 3; to learn about the
target features, please read the Expat
Development Roadmap. The changes described here are much
more focused on the details of Expat 3, and no attempt has been made
to balance the description of small changes with major new feature
development.
This list is not complete; we'll add to this as we think of things
and have time to write about them.
- Support for XML 1.1 and the corresponding namespaces updates.
- The signature of the
XML_ParserReset() method will
grow an additional argument allowing specification of what should be
reset. See bug report 1109116: Optimize implementation of
XML_ParserReset for more information.
- All structural event callback functions will return an
XML_Status value that the parser will check. This will
allow an application to stop or suspend processing without having to
call XML_StopParser , which will therefore become obsolete.
- The memory management function signatures will gain an additional
userData-like parameter, so that memory usage can be associated
with a context, allowing usage of memory pools and tracking of memory
usage per parser. The latter could be used to prevent the so-called
"million laughs" DoS attack.
- Change how qualified names are reported. Instead of passing one
string where the name parts are separated by a special character, we
are going to use
QName structs with members for local name,
namespace URI and prefix. This will apply to element names and attribute
names passed to XML_StartElementHandler and
XML_EndElementHandler .
- We will try to add a way of setting additional encodings
by name, using the existing framework built around
XML_UnknownEncodingHandler .
- Create different link symbols for different XML_Char sizes.
This would make it possible for different shared libraries making up an
application on linux, to link against expat shared libraries that have
been compiled with different definitions for XML_Char.
|