Ruma is a Matrix homeserver, client, and supporting libraries written in the Rust programming language. Matrix is an open specification for an online communication protocol. For an overview of the project, visit the home page. This Week in Ruma is a weekly summary of the development of Ruma, published on Sunday nights.
From the editor
We had a very productive week, landing several pull requests, including a major revamp of ruma-events and new APIs.
A very important milestone was reached: The number of unstable Rust features Ruma uses was reduced from six to two!
Ruma was migrated to the new Macros 1.1 approach for custom derive, which meant we were able to drop the
As part of the integration of the ruma-events revamp,
specialization was also removed.
question_mark now stable, Ruma uses only
proc_macro (Macros 1.1, which will be stable in a few more releases) and
try_from, which I hope to see movement on soon.
The day that Ruma can target stable Rust is approaching!
The revamp of ruma-events changed the design of the library, so each of the kinds of event in Matrix (events, room events, and state events) are now traits rather than structs with two generic parameters. This change took quite a while, so I'm happy to have it finally integrated into Ruma.
Notable changes to ruma
- Added support for local room invitations.
- Removed unstable features:
- Updated to Macros 1.1 versions of Serde and Diesel.
Notable changes to ruma-events
StateEventare now traits.
Notable changes to ruma-identifiers
- Released crate version 0.4.3, a small bump to update dependencies.
Call for participation
Here are a couple of items to check out if you're interested in contributing to the project:
- For implementation: Implement the Into<Option> trick for ApiError..
- For review and discussion: Add types to support heterogeneous collections of events.