Skip to content

Releases: KWARC/rust-libxml

Full libxml2 coverage via bindgen

23 Jul 17:39
Compare
Choose a tag to compare

[0.2.1] 2018-23-07

Added

  • Node::set_node_rc_guard which allows customizing the reference-count mutability threshold for Nodes.
  • serialization tests for Document
  • (crate internal) full set of libxml2 bindings as produced via bindgen (see #39)
  • (crate internal) using libxml2's type language in the wrapper Rust modules
  • (crate internal) setup bindings for reuse in higher-level crates, such as libxslt

Changed

  • NodeType::from_c_int renamed to NodeType::from_int, now accepting a u32 argument

Removed

  • Removed dependence on custom C code; also removed gcc from build dependencies

Safe API via Rc<RefCell<T>

19 Jul 20:18
Compare
Choose a tag to compare

This release adds fundamental breaking changes to the API. The API continues to be considered unstable until the 1.0.0 release.

Added

  • dup and dup_from methods for deeply duplicating a libxml2 document
  • is_unlinked for quick check if a Node has been unlinked from a parent

Changed

  • safe API for Nodes and Documents, with automatic pointer bookkeeping and memory deallocation, by @triptec
    • Nodes are now bookkept by their owning document
    • libxml2 low-level memory deallocation is postponed until the Document is dropped, with the exception of unlinked nodes, who are deallocated on drop.
    • Document::get_root_element now has an option type, and returns None for an empty Document
    • Node::mock now takes owner Document as argument
    • proofed tests with valgrind and removed all obvious memory leaks
  • All node operations that modify a Node now both require a &mut Node argument and return a Result type.
    • Full list of changed signatures in Node: remove_attribute, remove_property, set_name, set_content, set_property, set_property_ns, set_attribute, set_attribute_ns, remove_attribute, set_namespace, recursively_remove_namespaces, append_text
  • Tree transforming operations that use operate on &mut self, and no longer return a Node if the return value is identical to the argument.
    • Changed signatures: add_child, add_prev_sibling, add_next_sibling
  • Result types should always be checked for errors, as mutability conflicts are reported during runtime.

Removed

  • global module, which attempted to manage global libxml state for threaded workflows. May be readed after the API stabilizes

Less leaky, more control

13 Jan 00:35
Compare
Choose a tag to compare

This is a minor enhancement release allowing for better control over freeing nodes and namespaces, and avoiding some leaky strings.

We welcome Andreas to the crate's core developer team!

The repository is now en route to a new approach for the core data structures which will allow us to auto-free the various data structures on Drop - we expect that to land as a 0.2 release.

First public-facing release

09 Nov 23:50
c90e6b1
Compare
Choose a tag to compare

Pushing up release to a 0.1.0, as contributor interest is starting to pick up, and the 0.0. versions were getting a bit silly/wrong.

We have a basic working setup for several existing libxml workflows now (which have been ported to Rust), and a logical next step would be to grow the coverage and test suite of this wrapper to a more general-purpose state.

That will continue as has in the past - proportional to community interest - so feel free to step up and offer help/suggestions!

Minor stability and xpath improvements

01 Jul 21:47
Compare
Choose a tag to compare

[0.0.5] 2016-07-01

Thanks to @grray for most of these improvements!

Changed

  • Switched to using the more permissive MIT license, consistent with libxml2 licensing
  • Fixed segfault issues with xpath contexts

Added

  • Can now evaluate string(/foo//@bar) type XPath expressions, and use their result via .to_string()

Minor API additions, mostly node handling

26 Apr 00:37
Compare
Choose a tag to compare

See CHANGELOG for details

First creates.io release

24 Feb 20:30
Compare
Choose a tag to compare
0.0.3

v0.3, officially packaged on crates.io