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
Progress on ruma-api and ruma-client-api, converting ruma-client-api over to the new approach ruma-api is using. After converting several of the modules using macros, I decided to take another stab at using a macros 1.1 procedural macro for automatically implementing the details of each request and response type. The result is the new ruma-api-derive. So far it handles only a couple of simple variations, but with some of the groundwork laid, it should be easier now to fill out the remaining functionality. The result will be that ruma-client-api will be completely declarative, and won't have to resort to manual trait implementation for a few odd cases that didn't fit the pattern of the "macros by example" macros.
Notable changes to ruma
- Updated Diesel to the 0.11 series.
Notable changes to ruma-identifiers
- Published version 0.9.0, which updates Diesel to the 0.11 series.
Notable changes to ruma-events
- Published version 0.6.0, which updates ruma-identifiers to the 0.9 series.
Call for participation
Interested in getting involved with Ruma? Here are some good places to start:
Previously featured and still available:
- [feature] Sending a m.room.member event again after changing avatar or displayname
- [discussion] Bikeshed: Module names
- [discussion] Implementing Event storage/search with a timeseries database or a lucene indexed database
- [feature] Implement a rate-limiting middleware
There are also plenty of API endpoints that still need to be implemented. Check the status document for a list.