Releases: ironthree/dxr
Release 0.6.3
Release 0.6.3
This release contains a fix for a compilation failure when using the derive macros for TryToValue
and TryFromValue
and a custom Result
type is in scope.
The oldest supported Rust version was bumped to 1.70.0 to match crate dependencies.
Thanks to @pendulum-project, @elementary, @tweedegolf, @Conan-Kudo, @sdroege, @Best-HeyGman, and a mystery sponsor for supporting my work.
Release 0.6.2
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
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
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
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
andTryToValue
forCow<'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
thedxr
crate.
Thanks to @pendulum-project, @tweedegolf, @Conan-Kudo, @elementary, @quot, and a mystery sponsor for supporting my work.
Release 0.6.0-beta.1
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
anddxr_server
crates that can fail now return concrete
error types instead of a genericanyhow::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 bychrono::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 ownedString
instead of a&str
slice and immediately converting to an ownedString
internally.
Added:
TryFromValue
andTryToValue
are now implemented forArc<T>
andRc<T>
for all
inner typesT
which already implement these traits.- Support and helper functionality for the
system.multicall
extension was implemented
in bothdxr_client
anddxr_server
and can be enabled with themulticall
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
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
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
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
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.