Skip to content

v0.2.0

Latest

Choose a tag to compare

@ricktaylor ricktaylor released this 14 Jul 15:53
· 484 commits to main since this release
v0.2.0

Hardy v0.2.0

The first coordinated release since v0.1.0. This release reworks the public APIs of the core protocol stack, adds BPSec key management to the server, and switches stock deployments to persistent storage.

Highlights

  • BPSec key configuration — hardy-bpa-server now supports a JWK key store with EID-pattern key bindings and role-gated key release (source / verifier / acceptor), wired through the new KeyProvider resolution in hardy-bpa.
  • Persistent storage by default — a stock bpa-server with no storage: section now uses SQLite metadata + local-disk bundle storage instead of ephemeral in-memory storage; explicit type: memory retains the old behaviour, and a build with the persistent backends compiled out now refuses to start rather than silently falling back.
  • BPSec interoperability fix (RFC 9173 §3.8.1) — signing a primary block that carries a CRC now removes the CRC before computing the IPPT, matching what conformant verifiers compute; previous releases produced non-interoperable primary-block signatures in this case.
  • Strict canonical-form parsing — hardy-bpv7 scalar decoders now enforce RFC 9171 shortest-form encodings and valid hop limits; some bundles that previously parsed are now rejected or rewritten per the RFC 9171 rewriting rules.
  • Routing rework — a dedicated routing table with fine-grained route actions, and explicit gRPC server lifecycle control via the new GrpcServer in hardy-proto.
  • Reliability fixes — an unsound mixed-direction in-place bundle edit in the Editor; Editor::remove_integrity leaving a dangling BIB reference; the TCPCLv4 connection-pool forward-retry loop is now bounded so a flapping peer cannot wedge a forward.
  • Interoperability — revalidated at 0% loss against dtn7-rs, HDTN, DTNME, ud3tn, ION, ESA BP and NASA cFS.
  • MSRV raised to Rust 1.95 across the workspace.

Breaking changes

All five core crates change their public APIs: hardy-cbor 2.0.0, hardy-async 0.2.0, hardy-bpv7 0.6.0, hardy-bpa 0.2.0 and hardy-proto 0.2.0. Because the other published crates expose core types in their own public APIs, the breakage cascades and every published crate takes a compatibility bump. Each crate's CHANGELOG carries the details:

Crate Version Changelog
hardy-cbor 2.0.0 CHANGELOG
hardy-async 0.2.0 CHANGELOG
hardy-otel 0.2.0 CHANGELOG
hardy-bpv7 0.6.0 CHANGELOG
hardy-eid-patterns 0.4.0 CHANGELOG
hardy-bpa 0.2.0 CHANGELOG
hardy-proto 0.2.0 CHANGELOG
hardy-localdisk-storage 0.6.0 CHANGELOG
hardy-sqlite-storage 0.6.0 CHANGELOG
hardy-postgres-storage 0.2.0 CHANGELOG
hardy-s3-storage 0.2.0 CHANGELOG
hardy-tcpclv4 0.4.0 CHANGELOG
hardy-ipn-legacy-filter 0.2.0 CHANGELOG
hardy-echo-service 0.2.0 CHANGELOG
hardy-file-cla 0.2.0 CHANGELOG

Binaries (distributed as OCI images, not published to crates.io): hardy-bpa-server 0.2.0, hardy-tcpclv4-server 0.2.0, hardy-tvr, hardy-tools — changelogs alongside each crate in the repository.

Artefacts

  • Container images tagged 0.2.0 on ghcr.io: hardy-bpa-server, hardy-tcpclv4-server, hardy-tvr, hardy-tools.
  • All published crates updated on crates.io.

Full changelog: v0.1.0...v0.2.0