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. Logo