Skip to content

Latest commit

 

History

History
312 lines (253 loc) · 10.1 KB

CHANGELOG.md

File metadata and controls

312 lines (253 loc) · 10.1 KB

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.

0.20.0 - 2024-05-23

Added

  • Attribute::range, Attribute::range_qname, Attribute::range_value. Thanks to @Jayonas

Changed

  • Attribute::position is deprecated now.
  • The positions build feature uses a bit more memory now to better preserve attribute ranges.

0.19.0 - 2023-11-18

Changed

  • xmlparser is no longer a dependency and its fork is used internally.
  • ~5% faster parsing.
  • Fallback to Rc when Arc isn't available.
  • Bump MSRV to 1.60
  • Bump edition to 2021
  • Error variants have changed quite a lot.
  • XML declaration validation was simplified. We no longer check for attributes content. Meaning that version, encoding and standalone can 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 = false would not trigger an error when an empty DTD was present.

Removed

  • The xmlparser dependency.

0.18.1 - 2023-09-30

Added

Fixed

  • Replace \r in CDATA as well.
  • no_std build. Thanks to @wenyuzhao

0.18.0 - 2023-02-04

Added

  • StringStorage that exposes an internal string storage.
  • Allocated strings are stored as Arc<str> and not String now.
  • Node::text_storage
  • Node::tail_storage
  • Attribute::value_storage
  • Node::range

Removed

  • Node::position. Use Node::range instead.

Fixed

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::namespaces returns an iterator and not a slice now.

Fixed

0.16.0 - 2022-11-20

Added

  • positions build feature.
  • Node::position
  • Attribute::position
  • ParsingOptions::nodes_limit to 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::attributes returns 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. Use position instead.
  • Attribute::range. Use position instead.
  • Attribute::value_range

0.15.1 - 2022-10-18

Fixed

  • Bump xmlparser to prevent stack overflow on some input.

0.15.0 - 2022-08-15

Changed

  • Extend Document::descendants lifetime. Thanks to @DBLouis.
  • Derive Eq and Hash for NodeId.
  • Remove pretty_assertions dev-dependency.
  • MSRV is now 1.36

0.14.1 - 2021-04-01

Changed

  • The std feature 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.
  • ParsingOptions
  • Document::parse_with_options
  • Error::DtdDetected

0.13.1 - 2020-12-19

Added

  • Debug for all public types.

0.13.0 - 2020-06-20

Changed

  • Better ExpandedName lifetimes. 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 ExpandedName lifetime. Thanks to @rkusa.

0.11.0 - 2020-04-19

Added

  • Implement Ord, PartialOrd and Hash for Node. Thanks to @tomjw64.
  • NodeId, Document::get_node and Node::id. Thanks to @tomjw64.

Changed

  • The input data size is limited by 4GiB now.
  • Node can be accessed from multiple threads now.
  • Reduce Node memory usage.
  • Greatly optimized Descendants iterator. 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, Traverse and Edge. Use Node::descendants instead.

0.10.1 - 2020-03-28

Fixed

  • Node::prev_sibling_element and Node::next_sibling_element were returning the current node.

0.10.0 - 2020-03-18

Added

  • Document::input_text

Changed

  • Ancestors, PrevSiblings, NextSiblings, FirstChildren and LastChildren were replaced with AxisIter.

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.
  • xmlparser updated.

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.
  • xmlparser updated with multiple fixes.

0.7.3 - 2019-11-14

Changed

  • Use unconstrained lifetimes for the attribute functions. 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_element and Node::next_sibling_element.

Changed

  • (breaking) Node::ancestors includes the current node now.
  • Attribute is 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_from into text_pos_at.

Removed

  • Node::pos. Use Node::range instead.
  • Node::node_pos. Use doc.text_pos_at(node.range().start) instead.
  • Node::attribute_pos.
  • Node::attribute_value_pos.
  • Attribute::pos. Use Attribute::range instead.
  • Attribute::value_pos. Use Attribute::value_range instead.

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 &str when possible. On an XML with a lot of simple text can be ~2x faster.
  • Document no longer implements PartialEq.

Fixed

  • Entity and character references resolving inside a text.

0.2.0 - 2018-10-08

Added

  • Error::EntityReferenceLoop.
  • Nested entity references support.

Changed

  • Attribute::namespace will return Option now.
  • ExpandedName::namespace will return Option now.
  • Namespace::name will return Option now.
  • Node::resolve_tag_name_prefix will return Option now.
  • Node::lookup_namespace_uri accepts Option<&str> and not &str now.
  • Performance optimizations.

Removed

  • ExpandedName::has_namespace. ExpandedName::namespace will return Option now.
  • Error::NestedEntityReference.