BREAKING: `ItemEncoder::object()` renamed to `.object_bytes()` ADDED: `ItemEncoder::object()` taking an `ItemObjectEncodable` ADDED: `ItemEncoder::text_sofar()` BREAKING: `AuthCertUnverified::verify_self_signed()` renamed to `.verify()` ADDED: `SpFingerprint`, `Fingerprint`, `Base64Fingerprint` `LongIdent` impl `From` BREAKING: `Microdesc::ed25519_id` is now stored as a `Ed25519IdentityLine` BREAKING: `Microdesc::family_ids` is now stored as a `RelayFamilyIds` BREAKING: `Microdesc::ntor_onion_key` is now stored as a `Curve25519Public` BREAKING: `PortRange`'s fields are private now ADDED: `types::ContactInfo` ADDED: `types::B64` implements `Deref`, `DerefMut`, various `AsRef`/`AsMut` ADDED: `types::FixedB64` ADDED: `types::B64`'s field is now `pub` BREAKING: Removed `types::B64::into_array`; use methods on `Vec` and slice instead ADDED: `types::B16`, `types::B16U` ADDED: `types::Curve25519Public` impls `Deref`, `DerefMut`, `AsRef`, `AsMut` ADDED: `types::Iso8601TimeSp`, `Iso8601TimeSp` impl `AsRef`, `AsMut` ADDED: `types::SpFingerprint`, `Fingerprint`, `Base64Fingerprint`, `LongIdent`, impl `Hash`, `AsRef`, `AsMut` ADDED: `#[deftly(netdoc(skip))]` supported in `ItemValueParseable` and `ItemValueEncodable` derives ADDED: `types::Hostname`, `types::InternetHost` BREAKING: `types::Nickname`, `FromStr` error type is now `InvalidNickname` BREAKING: `DirSource`: several field types changed; new `hostname` field ADDED: Encoding traits implemented for `Arc` BREAKING: `netstatus::Preamble.consensus_method` and `.published` are now 1-element tuples. ADDED: `ItemValueEncodable` impl for `ConsensusMethods` ADDED: `doc::netstatus::Lifetime` fields are `pub`, and added `LifetimeConstructor` ADDED: `NetdocEncodableFields` impl for `doc::netstatus::Lifetime` ADDED: `ItemValueEncodable` impl for `NetParams` ADDED: `ItemValueEncodable` impl for `tor_protover::Protocols` ADDED: `NetdocEncodableFields` impl for `ProtoStatuses` BREAKING: `VoteRepr` relay flags handling marker type renamed to `NoImplicitRepr` ADDED: `doc::netstatus::PreambleConstructor` ADDED: `NetdocEncodableFields` impl for `doc::netstatus::Preamble` ADDED: `DocRelayFlags::new_empty_unknown_discarded()` convenience constructor BREAKING: `doc::netstatus::Preamble`, added `known_flags` ADDED: `NumericBoolean` type ADDED: `routerdesc::OverloadGeneral` type ADDED: `routerdesc::OverloadGeneralVersion` type ADDED: Implement `Eq` for `Nickname` ADDED: `routerdesc::RouterDescIntroItem` type ADDED: `routerdesc::ExtraInfoDigests` type ADDED: `RelayFamilyIds::sort()` method ADDED: `RelayFamilyIds::dedup()` method ADDED: Implement `PartialEq` and `Eq` for `AddrPolicy` ADDED: Implement `PartialEq` and `Eq` for `AddrPolicyRule` ADDED: Implement `NormalItemArgument` for `AddrPortPattern` ADDED: Implement `NetdocParseableFields` for `AddrPolicy` ADDED: `SpFingerprint` type ADDED: Implement `ItemArgumentParseable` for `RelayPlatform` ADDED: `RouterHashAccu` type ADDED: `RouterDescSignature` type ADDED: `RouterSigEd25519` type ADDED: `RouterDescSignatures` type ADDED: Implement `ItemArgument` for `tor_llcrypto::pk::ed25519::Signature` ADDED: Implement conversions from `tor_checkable` errors to `VerifyFailed` ADDED: `RetainedOrderVec` ADDED: `EmbeddedCert` ADDED: `DirSource` implements `ItemValueParseable` and `ItemValueEncodable` and has a `Constructor` BREAKING: `ConsensusVoterInfo` renamed to `ConsensusAuthorityEntry` BREAKING: `ConsensusVoterInfo`; several field types changed ADDED: `ConsensusVoterInfo`: `ItemValueParseable`, `ItemValueEncodable`, `Constructor` ADDED: `VoteAuthorityEntry`, `VoteAuthoritySection` ADDED: `SupersededAuthorityKey`, `ConsensusAuthoritySection` BREAKING: `NormalItemArgument` no longer has `FromStr` and `Display` as supertraits BREAKING: `Unknown::as_ref` signature changed; `only_known` may be needed too now. ADDED: `Unknown::only_known` ADDED: `Unknown` is now an exhaustive enum. ADDED: `KeywordOrString`