290 lines
9.1 KiB
Markdown
290 lines
9.1 KiB
Markdown
# [unreleased]
|
||
|
||
# 0.22.0
|
||
|
||
Breaking changes:
|
||
|
||
* Rename `matrix_to_(event_)url` methods to `matrix_to_(event_)uri`
|
||
|
||
Improvements:
|
||
|
||
* Add `MatrixUri` to build `matrix:` URIs
|
||
* Add `ClientSecret::new()` with the `rand` feature to generate a random client secret
|
||
|
||
# 0.21.0
|
||
|
||
Breaking changes:
|
||
|
||
* Make almost all identifier types dynamically-sized types that wrap `str`
|
||
* This makes types like `&RoomId` and `&UserId` lighter
|
||
* If you want to own an identifier, use `Box<SomeId>`, `Arc<SomeId>` or similar
|
||
* The exception to this are the enums like `RoomVersionId` and `EventEncryptionAlgorithm`
|
||
(these *might* be converted into the same kind of type at some point in the future)
|
||
* The corresponding macros (and also `server_name!`) now return `'static` references instead of
|
||
owned values now – use `.to_owned()` to get an owned copy
|
||
* Rename `RoomVersionId::Version{X}` variants to `RoomVersionId::V{X}`
|
||
* Rename `RoomIdOrAliasId` to `RoomOrAliasId`
|
||
|
||
Improvements:
|
||
|
||
* Add `host`, `port` and `is_ip_literal` methods to `ServerName`
|
||
* Add `MatrixToUri` to build `matrix.to` URIs
|
||
|
||
Bug fixes:
|
||
|
||
* Properly validate localpart when building a `UserId` via `parse_with_server_name` (and its
|
||
variants). This function was accepting localparts which were violating the
|
||
`localpart_is_fully_conforming` validation. If an invalid user was built, it would panic when
|
||
calling `is_historical`.
|
||
|
||
# 0.20.0
|
||
|
||
Breaking changes:
|
||
|
||
* Upgrade ruma-serde to 0.5.0
|
||
|
||
Improvements:
|
||
|
||
* Add `RoomName`, `RoomNameBox` types
|
||
|
||
# 0.19.4
|
||
|
||
Improvements:
|
||
|
||
* Fix `ruma-serde-macros` dependency (don't require an exact version)
|
||
|
||
# 0.19.3
|
||
|
||
Improvements:
|
||
|
||
* Add `serde::{Deserialize, Serialize}` implementations for `Signatures` when the `serde` feature
|
||
is active
|
||
* Add conversions of borrowed `ServerName`, `DeviceId` and `KeyName` to `Arc<_>` and `Rc<_>`
|
||
|
||
# 0.19.2
|
||
|
||
Improvements:
|
||
|
||
* Add `get` method to `Signatures` type
|
||
|
||
# 0.19.1
|
||
|
||
Improvements:
|
||
|
||
* Bump dependency versions
|
||
|
||
# 0.19.0
|
||
|
||
Breaking changes:
|
||
|
||
* Make `MxcUri` accept any string
|
||
* `TryFrom` trait methods were changed to `From` trait
|
||
* Use `MxcUri::is_valid` to make sure it is spec-compliant
|
||
* `MxcUri::{media_id, server_name}` return `Some({value})` only if the URI is spec-compliant
|
||
|
||
Improvements
|
||
|
||
* Add a `compat` feature
|
||
* Under this feature, more user IDs are accepted that exist in the while but are not
|
||
spec-compliant
|
||
|
||
# 0.18.1
|
||
|
||
Improvements:
|
||
|
||
* Add `MxcUri` type for `mxc://` URIs
|
||
|
||
# 0.18.0
|
||
|
||
Breaking changes:
|
||
|
||
* Remove deprecated constructors
|
||
* Remove deprecated `is_` methods
|
||
* Rename `ServerKeyAlgorithm` to `SigningKeyAlgorithm`
|
||
* Rename `ServerKeyId` to `ServerSigningKeyId`
|
||
* Rename `Error::MissingSigil` to `Error::MissingLeadingSigil`
|
||
* Merge all missing delimiter error variants
|
||
* Update the set of conversion trait implementations for crypto algorithms
|
||
|
||
Improvements:
|
||
|
||
* Add `DeviceKeyId::from_parts` and `SigningKeyId::from_parts`
|
||
* Add `DeviceId` and `ServerNameBox` type aliases
|
||
* Clean up debug logs for identifiers
|
||
* Allow crypto algorithm enums to contain any string, for forwards compatibility
|
||
and to allow experimentation with non-specified ones
|
||
|
||
# 0.17.4
|
||
|
||
Bug fixes:
|
||
|
||
* Fix key algorithm serde (de)serialization
|
||
* Fix `key_algorithms::{DeviceKeyAlgorithm, ServerKeyAlgorithm}` not implementing `Deserialize` and
|
||
`Serialize` with `default-features = false` + `features = ["serde", …]`
|
||
|
||
# 0.17.3
|
||
|
||
Bug fixes:
|
||
|
||
* Fix `key_algorithms::{DeviceKeyAlgorithm, ServerKeyAlgorithm}` not implementing `Deserialize` and
|
||
`Serialize` 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 for `RoomVersionId`, which previously returned
|
||
`RoomVersionId::Custom` for the input `6`
|
||
|
||
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 the `TryFrom<&str>` or `TryFrom<String>` implementation
|
||
instead.
|
||
* Remove diesel integration. If you were using it, please comment on the corresponding issue:
|
||
[#22](https://github.com/ruma/ruma-identifiers/issues/22)
|
||
* Remove `TryFrom<Cow<'_, str>>` implementations for identifier types
|
||
* Update `parse_with_server_name`s signature (instead of `Into<String>` it now requires
|
||
`Into<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 of `EventId`, `RoomId`, and `UserId` from
|
||
```rust
|
||
fn new(&str) -> Result<Self, Error>
|
||
//...
|
||
```
|
||
to
|
||
```rust
|
||
fn new(&ServerName) -> Self
|
||
```
|
||
|
||
* Change signature of `server_name()` for `EventId`, `RoomAliasId`, `RoomId`, `RoomIdOrAliasId`, `UserId` from
|
||
```rust
|
||
fn server_name() -> &str
|
||
```
|
||
to
|
||
```rust
|
||
fn server_name() -> &ServerName
|
||
```
|
||
* Change `DeviceId` from being an alias for `String` to being a newtype around `str`
|
||
|
||
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`, and `ServerKeyAlgorithm`
|
||
* Add a `ServerName` type
|
||
* This is a dynamically-sized type, if you need to store it use `Box<ServerName>`
|
||
|
||
# 0.16.2
|
||
|
||
Improvements:
|
||
|
||
* Update the internal representation of identifiers to be more compact
|
||
* Add `RoomVersionId::version_6` and `RoomVersionId::is_version_6`
|
||
* Add `PartialOrd` and `Ord` implementations for `RoomVersionId`
|
||
|
||
# 0.16.1
|
||
|
||
Bug fixes:
|
||
|
||
* Change `PartialEq` implementations to compare IDs with string literals from `str` 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 from `Into<Cow<'_, str>>` to
|
||
`AsRef<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 dependency `either` 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` for `String`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 to `server_name` and updated to return string slices
|
||
instead of `&url::Host`
|
||
* `Error::InvalidHost` has been renamed to `Error::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 the `rand`
|
||
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 contains `fn 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. Practically, 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` and `regex`
|
||
* We now support [historical user IDs](https://spec.matrix.org/v1.2/appendices/#historical-user-ids)
|