NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4410 most downloaded on crates.io
Plumbing crate for rxml and rxml_proc crates.
Last release 7 months ago
21 Feb 2026
Release timing varies
gaps range from 2 weeks to 1.7 years
Some releases are documented
notes for 3 of 12 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
13 releases · first in 2021
One column per quarter.
This release carries more breaking changes which do not have seamless deprecations than previous releses.
This release carries more breaking changes which do not have seamless deprecations than previous releses.
The error types were reworked completely. Aside from the obvious renaming which went down, one thing is particularly notable: The high level objects (Reader / AsyncReader) now return std::io::Error instead of directly returning rxml::Error.
Any rxml error from a reader will cause an io::Error with io::ErrorKind::InvalidData. The original error can be extracted with the corresponding functions on io::Error (most notably, io::Error::downcast) if necessary.
The rxml::error::XmlError type was flattened into rxml::Error as a follow-up to that. The writer/encoder now also uses rxml::Error instead of its own error type, simplifying the use in full-duplex applications (e.g. tokio_util codecs).
The AsyncReader was made more versatile, by loosening trait bounds and providing functions for accessing its inner state while pinned.
Support for controlling the buffering of incoming text nodes was added. The default behaviour of buffering parsed text up to the maximum token size or a delimiting syntax element (such as start of a child element) is preserved. However, users can now turn that off in order to receive text data which is parsed immediately when it is available.
Thus, this release contains once more a couple of breaking changes. We tried to introduce compatibility aliases and such in order to ease the transiti…
This release continues the path started with 0.10.0 to simplify the public API. Thus, this release contains once more a couple of breaking changes. We tried to introduce compatibility aliases and such in order to ease the transition. In case you get stuck upgrading from 0.10.0, we'd nevertheless like you to not hesitate to file an issue to get help.
Notable changes from 0.10.0:
ResolvedQName and ResolvedEvent have been re-renamed to QName and Event, respectively. As those are most often used, it makes sense to make their names short.
A new Namespace type was introduced. It contains a namespace name (i.e. a URI). Previously, that was done with RcPtr<CData>, which led to some inefficiencies around statically known namespaces, as well as nuisances around use in map types.
The Namespace type should be more usable than RcPtr<CData> throughout.
A new AttrMap type (and its generic form, XmlMap) was introduced. XmlMap allows to map a qualified name tuple (namespace uri and local name) to a generic type. It exists because using tuple keys with the standard libraries map types is quite annoying and inefficient. AttrMap is a type alias which specialises XmlMap for string values, and it is used for attributes throughout the public API now.
bytes::Buf was removed from the internal APIs and from the main parsing entrypoint (Parse::parse). A helper method for parsing Buf objects exists (Parse::parse_buf) but it now must be used explicitly. The main APIs now only offer &[u8] inputs, which is more efficient.
The string types have been moved to rxml_validation (while still being re-exported by rxml, and they will continue to be). This allows use of strongly typed validated strings in proc macros besides rxml_proc.
The CData type has been removed. The benefits it brought did not outweigh the explicit type casts and error handling required at various places in user code. The error handling for invalid data is now concentrated at serialisation time.
smartstring was removed in favour of compact_str. The feature flag has been renamed accordingly. compact_str is more efficient and has better code quality. See eb3d18b for details.
The sync feature is now deprecated, as its functionality is now enabled by default.
A minor bookkeeping mistake in the event metrics around element footers was fixed.
The incorrect InvalidUtf8Byte error emitted if an UTF-8 sequence straddled a text token boundary was fixed (same fix as in 0.10.1; see #15 on Codeberg for more details).
Some feature flags and types deprecated in 0.10.0 have been removed.
Some items which have been deprecated since 0.8 or earlier have been deleted.
This release contains a major refactor of the public API for all things
related to parsing XML. This is to make the API easier to use.
Notable changes:
Lexer has been removed from the public APINamespaceResolver has been moved from the crate root to rxml::parserPullDriver, PushDriver and AsyncDriver have been removed; there are transitional type aliases which should help the migration.EventRead and AsyncEventRead traits have been removed; they are now unnecessary.FeedParser or PushDriver, you will now need to import the rxml::Parse trait.In general, the deprecation notices should help the migration. If you don't know how to proceed the upgrade, please file an issue.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →