Skip to content

Releases: ironthree/dxr

Release 0.6.2

28 Jan 00:20
574eacf
Compare
Choose a tag to compare

This release introduces support for serializing / deserializing XML-RPC structs that have members with names that are reserved keywords in Rust (using the standard raw identifier syntax).

The oldest supported Rust version was bumped to 1.67.0 to match the time crate.


Thanks to @pendulum-project, @elementary, @tweedegolf, @Conan-Kudo, @sdroege, @quot, and a mystery sponsor for supporting my work.

Release 0.6.1

15 Nov 20:01
02eae68
Compare
Choose a tag to compare

This release slightly improves interoperability with other XML-RPC implementations. Some implementations line-wrap base64-encoded strings in the <base64> type, which is now supported. Previous releases of dxr rejected base64 values that included any whitespace.


Thanks to @pendulum-project, @elementary, @tweedegolf, @Conan-Kudo, @sdroege, @quot, and a mystery sponsor for supporting my work.

Release 0.6.0

28 Jul 14:20
f585ebe
Compare
Choose a tag to compare

This release includes changes from v0.6.0-beta.1 and v0.6.0-beta.2.

Internal changes:

This version introduces new helper functions for serializing and deserializing XML in an effort
to produce consistent output that is compatible with the widest range of other XML-RPC
implementations (some of which don't support self-closing XML tags).

Notably, quick-xml versions before 0.27 produced self-closing tags only in some circumstances
(like <nil/> values), but not others (like empty string values:
<value><string></string></value>). Versions 0.27 and newer fixed this issue by consistently
writing self-closing tags. Version 0.30 added a custom deserializer setting to expand these tags
instead of writing self-closing tags, which is what the newly introduced helper function uses.

Updated:

  • quick-xml dependency was updated from v0.25 to v0.30.

Thanks to @pendulum-project, @tweedegolf, @Conan-Kudo, @elementary, @quot, and a mystery sponsor for supporting my work.

Release 0.6.0-beta.2

16 Jul 19:09
dc490a3
Compare
Choose a tag to compare
Release 0.6.0-beta.2 Pre-release
Pre-release

Changed:

  • A custom PartialEq implementation for <struct> was added, which now properly
    ignores the order of struct members.
  • The number of closures was reduced by replacing with plain functions, where possible.
  • The implementation of TryFromValue and TryToValue for Cow<'a, T> was fixed for
    T = str, which previously was not covered.

Internal changes:

  • The script for generating the test coverage report now also runs the example binaries.
  • The test suite is now much more comprehensive, resulting in >95% test coverage for
    the dxr crate.

Thanks to @pendulum-project, @tweedegolf, @Conan-Kudo, @elementary, @quot, and a mystery sponsor for supporting my work.

Release 0.6.0-beta.1

11 Jul 18:29
be50662
Compare
Choose a tag to compare
Release 0.6.0-beta.1 Pre-release
Pre-release

The relationship between the crates in this project has been simplified. The top-level
meta-crate was removed, and the axum support was merged into the dxr_server crate
and hidden behind a feature flag. Additionally, the dxr_client and dxr_server crates
have been refactored to support different HTTP libraries (though only reqwest and
axum are currently supported).

Changed:

  • Functions in the dxr_client and dxr_server crates that can fail now return concrete
    error types instead of a generic anyhow::Error.
  • Initialization of servers in dxr_server was refactored to avoid calling APIs that
    can panic (@bahlo).
  • The dateTime.iso8601 XML-RPC type is now represented by chrono::NaiveDateTime
    to better match semantics of XML-RPC, where this type is explicitly timezone-unaware.
  • The Value::string() constructor for <string> values now takes an owned String
    instead of a &str slice and immediately converting to an owned String internally.

Added:

  • TryFromValue and TryToValue are now implemented for Arc<T> and Rc<T> for all
    inner types T which already implement these traits.
  • Support and helper functionality for the system.multicall extension was implemented
    in both dxr_client and dxr_server and can be enabled with the multicall feature.

Fixed:

  • XML-RPC values without an explicit type are now correctly deserialized as strings (@bahlo).

Updated:

  • axum dependency was updated from v0.5 to v0.6.
  • base64 dependency was updated from v0.13 to v0.21.
  • quick-xml dependency was updated from v0.25 to v0.26.
  • syn dependency was updated from v1 to v2.

Thanks to @pendulum-project, @tweedegolf, @Conan-Kudo, @elementary, @quot, and a mystery sponsor for supporting my work.

0.5.4

30 Apr 20:40
b03764a
Compare
Choose a tag to compare

This release includes a fix for string-typed values, which were previously accidentally escaped (and unescaped) twice, resulting in XML that wasn't compatible with other XML-RPC implementations.


Thanks to @tweedegolf, @Conan-Kudo, @elementary, @quot, and a mystery sponsor for supporting my work.

0.5.3

11 Mar 11:53
75a0352
Compare
Choose a tag to compare

This release adds feature flags for selecting a non-default TLS backend for reqwest in dxr_client. There should be no change to the default behaviour (the default-tls feature of reqwest). To use a different TLS backend (i.e. rustls), use dxr with default-features = false and enable the client-rustls-tls feature.


Development of this version was supported by @quot, @amz-x, and another private sponsor.

0.5.2

01 Feb 22:46
dae424c
Compare
Choose a tag to compare

This is a small release that brings only internal clean-ups with no user-facing code changes. Documentation as rendered on https://docs.rs/dxr should be slightly improved.

0.5.1

23 Nov 11:10
e6ee9e7
Compare
Choose a tag to compare

Changed:

The Call.as_xml_rpc method is now pub instead of only pub(crate). This makes implementing third-party clients based on dxr (i.e. clients not based on reqwest) easier, and is a first step towards making the client functionality modular, similar to the server support.

0.5.0

16 Oct 21:18
7147b9b
Compare
Choose a tag to compare

Changed:

All public traits were renamed to match Rust conventions for conversions ("try" prefix for fallible conversions, "to" for conversions that don't take ownership):

  • FromParams was renamed to TryFromParams
  • FromDXR was renamed to TryFromValue
  • ToParams was renamed to TryToParams
  • ToDXR was renamed to TryToValue

This change only affects code which referenced these traits directly, or via derive macros.

Updated dependencies:

The quick-xml dependency was updated from 0.23 to the latest version, 0.25, resulting in two user-visible changes in dxr:

The fallible Value::string_escape constructor was removed and replaced by an infallible Value::string constructor, following API changes of quick_xml::escape::escape with version 0.24 and later.

The Minimum Supported Rust Version (MSRV) was bumped from 1.60.0 to 1.61.0 (caused by the update to quick-xml version >= 0.24.0, though it might be possible to revert to 1.60.0 again with a future version of quick-xml, since this MSRV bump seems to have been unintentional).