Version NEXT:
Version 0.12.1, release 2025-11-02:
- Changes:
- Make serde deserialization actually validate the
NodePart,DomainPartandResourcePart, it was previously completely unsound, creating these types without validating their invariants. - The 'quote' feature now uses
jid::Jidinstead of::jid::Jidto stop requiring importing the module as a dependency of the project. Thejidmodule just needs to be made available, for example:use foo::jid; - Bump minidom to 0.18
- Make serde deserialization actually validate the
Version 0.12.0, release 2025-01-25:
- Breaking:
- domainparts are now checked much more in-depth, using the idna crate for
domains and
Ipv*Addrchecks for IP domainparts. This removes some prior errors which are now covered byError::Idna:Error::DomainEmptyandError::DomainTooLong
- domainparts are now checked much more in-depth, using the idna crate for
domains and
- Additions:
- xso::FromXmlText and xso::AsXmlText are now implemented for NodePart, DomainPart, and ResourcePart (!485)
- serde::Serialize and serde::Deserialize are now derived for NodePart, DomainPart, and ResourcePart when serde feature flag is enabled (!499)
- This crate is now entirely
no_std, with no remaining dependency on std! - When using the crate from a cloned git repository, the minidom dependency is now relative too, which simplifies working on a different project while making modifications to this workspace.
- Make Debug more readable, just
Jid("foo@bar/baz")instead of exposing the internally-cached position of the '@' and '/' signs.
Version 0.11.1, release 2024-07-23:
- Breaking:
- Move InnerJid into Jid and reformulate BareJid and FullJid in terms of Jid.
- With the addition of
str-like types forDomainPart,NodePartandResourcePart, the functions onJid,BareJidandFullJidwhich return the respective types have been changed to return references instead. UseToOwned::to_ownedto obtain a copy or.as_str()to obtain a plainstrreference. - The
node_str,domain_strandresource_strfunctions returning str references have been removed from the JID types. Use.as_str()or.map(|x| x.as_str())on the correspondingnode/domain/resourcefunctions instead.
- Additions:
- Add optional quote support. Implement quote::ToTokens for Jid, FullJid and BareJid.
str-like reference types have been added forDomainPart,NodePartandResourcePart, calledDomainRef,NodeRefandResourceRefrespectively.- Convenience methods to combine
DomainPartandNodePartto aBareJidhave been added, includingimpl From<DomainPart> for BareJidandimpl From<DomainPart> for Jid, both of which are (unlike::from_parts) copy-free. as_strmethods have been added on all Jid types.- Derive PartialOrd/Ord for Jid types.
- Implement
Borrow<Jid>onFullJidandBareJid. - Make the crate no_std
- Update to edition 2021.
- Use debug_tuple instead of string formatting to get standard-like output.
- Improve perfs of comparison operators (#123)
- Add more test cases
- Fix clippy lints, cargo doc, and other warnings
Version 0.11.0, release 2024-07-23 [YANKED]
Version 0.10.0, release 2023-08-17:
- Breaking
- serde: Jid is now using untagged enum representation (#66)
- JidParseError has been renamed Error
- Jid::new, FullJid::new, and BareJid::new now take a single stringy argument and return a Result ; to build JIDs from separate parts, use the from_parts() method instead (#204)
- Additions
- Parsing invalid JIDs with stringprep feature no longer results in panic, returning Error with NodePrep, NamePrep or ResourcePrep variant instead (#84)
- Parsing already-normalized JIDs with stringprep is much faster, about 20 times.
- JID parts are now typed as NodePart, DomainPart and ResourcePart ; once part into those types, JID operations cannot fail
- BareJid::with_resource appends a ResourcePart to a BareJid to produce a FullJid (#204)
- BareJid::with_resource_str appends a stringy resource to a BareJid to produce a FullJid, and can fail in case of resource stringprep or length check error (#204)
- Jid::from_parts, BareJid::from_parts, and FullJid::from_parts enable to build JIDs from typed Parts and cannot fail (#204)
- Jid::node(), BareJid::node(), and FullJid::node() now return an option of the typed NodePart ; the node_str() method returns the same information as a string slice (#204)
- Jid::domain(), BareJid::domain(), and FullJid::domain() now return the typed DomainPart ; the domain_str() method returns the same information as a string slice (#204)
- FullJid::resource() returns the typed ResourcePart ; the resource_str() method returns the same information as a string slice (#204)
- Jid::resource() returns an optional typed ResourcePart ; the resource_str() method returns the same information as a string slice (#204)
- Add serde_test in tests to ensure correctness of Serialize / Deserialize implementations.
Version 0.9.3, release 2022-03-07:
- Updates
- Bumped minidom to 0.14
Version 0.9.2, release 2021-01-13:
- Updates
- Bumped minidom to 0.13
Version 0.9.1, release 2021-01-13:
- Updates
- Added serde support behind "serde" feature
- Added equality operators between Jid, BareJid and FullJid.
Version 0.9.0, release 2020-02-15:
- Breaking
- Update minidom dependency to 0.12
Version 0.8, released 2019-10-15:
- Updates
- CI: Split jobs, add tests, and caching
- Breaking
- 0.7.1 was actually a breaking release
Version 0.7.2, released 2019-09-13:
- Updates
- Impl Error for JidParseError again, it got removed due to the failure removal but is still wanted.
Version 0.7.1, released 2019-09-06:
- Updates
- Remove failure dependency, to keep compilation times in check
- Impl Display for Jid
Version 0.7.0, released 2019-07-26:
- Breaking
- Update minidom dependency to 0.11
Version 0.6.2, released 2019-07-20:
- Updates
- Implement From and From for Jid
- Add node and domain getters on Jid
Version 0.6.1, released 2019-06-10:
- Updates
- Change the license from LGPLv3 to MPL-2.0.
Version 0.6.0, released 2019-06-10:
- Updates
- Jid is now an enum, with two variants, Bare(BareJid) and Full(FullJid).
- BareJid and FullJid are two specialised variants of a JID.
Version 0.5.3, released 2019-01-16:
- Updates
- Link Mauve bumped the minidom dependency version.
- Use Edition 2018, putting the baseline rustc version to 1.31.
- Run cargo-fmt on the code, to lower the barrier of entry.
Version 0.5.2, released 2018-07-31:
- Updates
- Astro bumped the minidom dependency version.
- Updated the changelog to reflect that 0.5.1 was never actually released.
Version 0.5.1, "released" 2018-03-01:
- Updates
- Link Mauve implemented failure::Fail on JidParseError.
- Link Mauve simplified the code a bit.
Version 0.5.0, released 2018-02-18:
- Updates
- Link Mauve has updated the optional
minidomdependency. - Link Mauve has added tests for invalid JIDs, which adds more error cases.
- Link Mauve has updated the optional
Version 0.4.0, released 2017-12-27:
- Updates
- Maxime Buquet has updated the optional
minidomdependency. - The repository has been transferred to xmpp-rs/jid-rs.
- Maxime Buquet has updated the optional
Version 0.3.1, released 2017-10-31:
- Additions
- Link Mauve added a minidom::IntoElements implementation on Jid behind the "minidom" feature. ( https://gitlab.com/lumi/jid-rs/merge_requests/9 )