6.3 KiB
[unreleased]
Breaking changes:
- Update strum dependency to 0.19
- Remove deprecated constructors
- Remove deprecated
is_
methods
Improvements:
- Add
DeviceKeyId::from_parts
andServerKeyId::from_parts
- Add
DeviceIdBox
andServerNameBox
type aliases
0.17.4
Bug fixes:
- Fix key algorithm serde (de)serialization
- Fix
key_algorithms::{DeviceKeyAlgorithm, ServerKeyAlgorithm}
not implementingDeserialize
andSerialize
withdefault-features = false
+features = ["serde", …]
0.17.3
Bug fixes:
- Fix
key_algorithms::{DeviceKeyAlgorithm, ServerKeyAlgorithm}
not implementingDeserialize
andSerialize
with the default feature set- This bug was introduced in 0.17.2
- This problem still persists with
default-features = false
+features = ["serde", …]
, but there was never a reason to use ruma-identifiers like that
0.17.2 (yanked)
Bug fixes:
- Fix
RoomVersionId::is_version_6
actually checking for version 5 - Fix
TryFrom
implementations forRoomVersionId
, which previously returnedRoomVersionId::Custom
for the input6
Improvements:
- Add macros to construct identifiers with compile-time validation
0.17.1
Improvements:
- Add
.as_bytes()
to all identifier types that already had.as_str()
0.17.0
Breaking changes:
-
Change
RoomVersionId
from being an opaque struct to a non-exhaustive enum- The constructor functions and
is_
predicates are now deprecated - Remove
RoomVersionId::custom
. It could be used to create invalid room versions (empty or exceeding 32 code points in length). Use theTryFrom<&str>
orTryFrom<String>
implementation instead.
- The constructor functions and
-
Remove diesel integration. If you were using it, please comment on the corresponding issue: https://github.com/ruma/ruma-identifiers/issues/22
-
Remove
TryFrom<Cow<'_, str>>
implementations for identifier types -
Update
parse_with_server_name
s signature (instead ofInto<String>
it now requiresInto<Box<str>>
of the id type). This is technically a breaking change, but extremely unlikely to affect any existing code. -
Modify identifier types to use the new
ServerName
type:-
Change signature of
new()
methods ofEventId
,RoomId
, andUserId
fromfn new(&str) -> Result<Self, Error> //...
to
fn new(&ServerName) -> Self
-
Change signature of
server_name()
forEventId
,RoomAliasId
,RoomId
,RoomIdOrAliasId
,UserId
fromfn server_name() -> &str
to
fn server_name() -> &ServerName
-
-
Change
DeviceId
from being an alias forString
to being a newtype aroundstr
This means owned device IDs are now
Box<DeviceId>
.
Deprecations:
- Mark
server_name::is_valid_server_name
as deprecated in favor of<&ServerName>::try_from()
Improvements:
- Add
DeviceKeyId
,DeviceKeyAlgorithm
,ServerKeyId
, andServerKeyAlgorithm
- Add a
ServerName
type- This is a dynamically-sized type, if you need to store it use
Box<ServerName>
- This is a dynamically-sized type, if you need to store it use
0.16.2
Improvements:
- Update the internal representation of identifiers to be more compact
- Add
RoomVersionId::version_6
andRoomVersionId::is_version_6
- Add
PartialOrd
andOrd
implementations forRoomVersionId
0.16.1
Bug fixes:
- Change
PartialEq
implementations to compare IDs with string literals fromstr
to&str
- This is technically a breaking change, but the previous implementations were extremely unlikely to actually be used
0.16.0
Breaking changes:
- Update
RoomId::parse_with_server_name
s bounds fromInto<Cow<'_, str>>
toAsRef<str> + Into<String>
. While this is a breaking change, it is not expected to actually require code changes.
Improvements:
- Add conversion functions for
RoomIdOrAliasId
impl From<RoomId> for RoomIdOrAliasId
impl From<RoomAliasId> for RoomIdOrAliasId
impl TryFrom<RoomIdOrAliasId> for RoomId
impl TryFrom<RoomIdOrAliasId> for RoomAliasId
RoomIdOrAliasId::into_either
(if the optional dependencyeither
is activated with the identically named feature)
0.15.1
Bug fixes:
- Fix docs.rs build
0.15.0
Breaking changes:
- All identifiers now allocate at maximum one string (localpart and host are no longer stored
separately)
- Because of this, these traits are now implemented for them and only allocate in the obvious
case:
impl From<…Id> for String
impl AsRef<str> for …Id
impl TryFrom<Cow<'_, str>> for …Id
impl TryFrom<String> for …Id
PartialEq
forString
s and string slices
- Additionally, the
Hash
implementations will now yield the same hashes as hashing the string representation- Note that hashes are generally only guaranteed consistent in the lifetime of the program though, so do not persist them!
- The
hostname
methods have been rename toserver_name
and updated to return string slices instead of&url::Host
- Because of this, these traits are now implemented for them and only allocate in the obvious
case:
Error::InvalidHost
has been renamed toError::InvalidServerName
, because it also covers errors in the port, not just the host part section of the server name- The random identifier generation functions (
Id::new
) are now only available if therand
feature of this crate is enabled
Improvements:
- Add support for historical uppercase MXIDs
- Made all dependencies optional
serde
is the only one that is enabled by default
- The
user_id
module is now public and containsfn localpart_is_fully_conforming
- This function can be used to determine whether a user name (the localpart of a user ID) is valid without actually constructing a full user ID first
- Add
UserId::parse_with_server_name
0.14.1
Breaking changes:
- Our Minimum Supported Rust Version is now 1.36.0
- This is done in a patch version because it is only a documentation change. Practially, a new project using even ruma-identifiers 0.14 won't build out of the box on older versions of Rust because of an MSRV bump in a minor release of an indirect dependency. Using ruma-identifiers with older versions of Rust will potentially continue to work with some crates pinned to older versions, but won't be tested in CI.
Improvements:
- Remove the dependency on
lazy_static
andregex
- We now support historical user IDs