10 KiB
10 KiB
Change Log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
0.20.0 - 2024-05-23
Added
Attribute::range,Attribute::range_qname,Attribute::range_value. Thanks to @Jayonas
Changed
Attribute::positionis deprecated now.- The
positionsbuild feature uses a bit more memory now to better preserve attribute ranges.
0.19.0 - 2023-11-18
Changed
xmlparseris no longer a dependency and its fork is used internally.- ~5% faster parsing.
- Fallback to
RcwhenArcisn't available. - Bump MSRV to 1.60
- Bump edition to 2021
Errorvariants have changed quite a lot.- XML declaration validation was simplified. We no longer check for attributes content.
Meaning that
version,encodingandstandalonecan contain any value now. But we still do check attribute names and order.
And while we did validated those attributes before, they weren't really affecting the parser in any way. Therefore the parsing behavior is mostly unchanged.
Fixed
ParsingOptions::allow_dtd = falsewould not trigger an error when an empty DTD was present.
Removed
- The
xmlparserdependency.
0.18.1 - 2023-09-30
Added
ExpandedName::from_static. Thanks to @WhyNotHugo
Fixed
- Replace
\rin CDATA as well. no_stdbuild. Thanks to @wenyuzhao
0.18.0 - 2023-02-04
Added
StringStoragethat exposes an internal string storage.- Allocated strings are stored as
Arc<str>and notStringnow. Node::text_storageNode::tail_storageAttribute::value_storageNode::range
Removed
Node::position. UseNode::rangeinstead.
Fixed
- Some methods return longer lifetimes now. Thanks to @adamreichold
- Overly verbose Debug implementations. Thanks to @adamreichold
0.17.0 - 2023-01-06
Added
- Stored namespaces are deduplicated now, which can reduce memory usage on large files up to 10%. Thanks to @adamreichold
Changed
Node::namespacesreturns an iterator and not a slice now.
Fixed
- Unclosed root element is an error now. Thanks to @adamreichold
0.16.0 - 2022-11-20
Added
positionsbuild feature.Node::positionAttribute::positionParsingOptions::nodes_limitto limit the maximum number of nodes to parse.
Changed
- Peak memory usage reduces by up to 20% depending on an input. Thanks to @adamreichold and @tomjw64.
Node::attributesreturns an iterator and not a slice now.
Removed
- 4GB input limit.
- Do not store Node and Attribute end range in the original document.
- Do not store attribute value range in the original document.
Node::range. Usepositioninstead.Attribute::range. Usepositioninstead.Attribute::value_range
0.15.1 - 2022-10-18
Fixed
- Bump
xmlparserto prevent stack overflow on some input.
0.15.0 - 2022-08-15
Changed
- Extend
Document::descendantslifetime. Thanks to @DBLouis. - Derive
EqandHashforNodeId. - Remove
pretty_assertionsdev-dependency. - MSRV is now 1.36
0.14.1 - 2021-04-01
Changed
- The
stdfeature is enabled by default now.
0.14.0 - 2020-12-27
Added
- An ability to reject XML with DTD in it.
- The library is no_std + alloc now.
ParsingOptionsDocument::parse_with_optionsError::DtdDetected
0.13.1 - 2020-12-19
Added
Debugfor all public types.
0.13.0 - 2020-06-20
Changed
- Better
ExpandedNamelifetimes. Thanks to @eduardosm.
0.12.0 - 2020-06-20
Changed
- Re-release 0.11.1, since it had a breaking change.
0.11.1 - 2020-06-19
Changed
- Extend
ExpandedNamelifetime. Thanks to @rkusa.
0.11.0 - 2020-04-19
Added
- Implement
Ord,PartialOrdandHashforNode. Thanks to @tomjw64. NodeId,Document::get_nodeandNode::id. Thanks to @tomjw64.
Changed
- The input data size is limited by 4GiB now.
Nodecan be accessed from multiple threads now.- Reduce
Nodememory usage. - Greatly optimized
Descendantsiterator. Up to 5x faster in some cases. Thanks to @tomjw64. - Heavily reduce memory usage when document has a lot of namespaces. Thanks to @tomjw64.
Removed
Node::traverse,TraverseandEdge. UseNode::descendantsinstead.
0.10.1 - 2020-03-28
Fixed
Node::prev_sibling_elementandNode::next_sibling_elementwere returning the current node.
0.10.0 - 2020-03-18
Added
Document::input_text
Changed
Ancestors,PrevSiblings,NextSiblings,FirstChildrenandLastChildrenwere replaced withAxisIter.
Fixed
- Root node range.
0.9.1 - 2020-02-09
Changed
- A better entity loop detection. A document can have an unlimited number of references at zero depth now.
0.9.0 - 2020-01-07
Changed
- Moved to Rust 2018.
xmlparserupdated.
0.8.0 - 2019-12-21
Added
Error::MalformedEntityReference
Changed
- Malformed entity reference is an error now.
- Escaped
<in attribute inside an ENTITY is an error now. xmlparserupdated with multiple fixes.
0.7.3 - 2019-11-14
Changed
- Use unconstrained lifetimes for the
attributefunctions. By myrrlyn.
0.7.2 - 2019-11-07
Changed
- Use longer lifetimes in
Document::root_element. By myrrlyn.
0.7.1 - 2019-09-14
Changed
- Update
xmlparser.
0.7.0 - 2019-08-06
Added
Node::prev_sibling_elementandNode::next_sibling_element.
Changed
- (breaking)
Node::ancestorsincludes the current node now. Attributeis cloneable now.
Fixed
- Namespaces resolving with equal URI's.
Removed
Node::resolve_tag_name_prefix.
0.6.1 - 2019-06-18
Fixed
- Namespace resolving.
0.6.0 - 2019-03-03
Added
Error::UnknownNamespace.
Fixed
- Unknown namespace prefixes will cause an error now.
0.5.0 - 2019-02-27
Added
Node::range.Node::attribute_node.Attribute::range.Attribute::value_range.
Changed
- Rename
text_pos_fromintotext_pos_at.
Removed
Node::pos. UseNode::rangeinstead.Node::node_pos. Usedoc.text_pos_at(node.range().start)instead.Node::attribute_pos.Node::attribute_value_pos.Attribute::pos. UseAttribute::rangeinstead.Attribute::value_pos. UseAttribute::value_rangeinstead.
0.4.1 - 2019-01-02
Changed
- Use longer lifetimes in return types. By tmiasko.
0.4.0 - 2018-12-13
Added
Error::pos().
0.3.0 - 2018-10-29
Changed
- Store text nodes as
&strwhen possible. On an XML with a lot of simple text can be ~2x faster. Documentno longer implementsPartialEq.
Fixed
- Entity and character references resolving inside a text.
0.2.0 - 2018-10-08
Added
Error::EntityReferenceLoop.- Nested entity references support.
Changed
Attribute::namespacewill returnOptionnow.ExpandedName::namespacewill returnOptionnow.Namespace::namewill returnOptionnow.Node::resolve_tag_name_prefixwill returnOptionnow.Node::lookup_namespace_uriacceptsOption<&str>and not&strnow.- Performance optimizations.
Removed
ExpandedName::has_namespace.ExpandedName::namespacewill returnOptionnow.Error::NestedEntityReference.