Skip to content

vim_rs 0.5.0 - reqwest 0.13, new XML stack

Latest

Choose a tag to compare

@noclue noclue released this 02 Jun 12:16

vim_rs 0.5.0

Breaking release — two significant changes to the HTTP and XML stacks. Review the migration notes below before upgrading.


Breaking changes

1. reqwest 0.13 + rustls TLS default (#39)

The reqwest dependency moves from 0.12 to 0.13. With reqwest 0.13 the default TLS backend is rustls (aws-lc-rs provider), not OpenSSL. If your binary previously pulled in openssl-sys transitively through vim_rs, it no longer does.

A new default-client Cargo feature (enabled by default) wraps the turnkey client setup. When it is on, ClientBuilder::new(server) auto-creates a reqwest::Client; insecure(true) and http_client() remain available. When it is off, ClientBuilder::new(server, client) requires you to supply your own reqwest::Client — giving you full control over the TLS provider and proxy configuration.

Migration:

# No change needed for the common case (VI/JSON, default TLS)
vim_rs = "0.5"

# Bring your own client (e.g. native-tls, or rustls with ring)
vim_rs = { version = "0.5", default-features = false }
reqwest = { version = "0.13", default-features = false, features = ["rustls-no-provider", "charset", "http2", "system-proxy"] }
rustls = { version = "0.23", default-features = false, features = ["ring"] }

See the tls_rustls_only example for a fully OpenSSL-free dependency graph.

To verify no openssl-sys is in your tree:

cargo tree -i openssl-sys   # should exit 101 with "did not match any packages"

2. Metadata-driven SOAP/XML deserialization (xml feature, #38)

The xml/de.rs driver is rewritten to follow declared API field types from the codegen registry (api_field_registry, data_type_aware) rather than guessing from the wire shape. This fixes a class of deserialization edge cases where subtypes or polymorphic fields were resolved incorrectly against the previous heuristic driver.

Support for non-vim namespaces (VSAN, PBM, etc.) remains absent in this release.


What's new

  • default-client feature: turnkey ClientBuilder without manual reqwest setup; insecure(true) and .http_client() builder helpers available when the feature is on.
  • reqwest/cookies is now enabled only with the xml feature. VI/JSON session authentication uses the vmware-api-session-id header; the cookie jar is only activated on the SOAP path.

Full changelog since 0.4.4

See CHANGELOG.md for the complete entry.

The 0.4.4 release (vcsim compatibility, CacheManager filter-change cancel, ObjectRetriever::retrieve_object, vim_macros optional-path ? marker, property-cache race fix) shipped as a patch on the 0.4.x line and is included in this release.


Crates published

Crate Version
vim_rs 0.5.0
vim_macros 0.5.0