This Week in Ruma › published on 2016-08-21 by Jimmy Cuadra

Apologies for the missed update last week! I was sick and didn't get a chance to write it. However, there was work on the project last week. I will just include those changes in this update.

Notable changes to ruma

Previous work to update Diesel and Serde to the latest versions have been completed.

Ruma now uses the types from ruma-identifiers to represent Matrix IDs instead of strings.

Ruma now uses the latest version of ruma-events which also uses ruma-identifiers.

The Docker Compose file now locks the Ruma development image to a specific version, so breaking changes to the image are now coordinated with Ruma. As part of the same change, the image is now locked to a specific version of the nightly compiler.

Database migrations are now embedded in the ruma binary, which means a check out of the source code is no longer necessary.

Add initial support for the message event creation API. This is a big milestone and one of the core APIs that makes Matrix work!

Notable changes to ruma-events

Added simple type aliases for custom events of each kind (basic, room, and state events).

I'm experimenting again with a version of the API where the event kinds are traits instead of generic structs. They really feel like they should be traits, but the actual usage pattern for the events in the main ruma application may not work well like this.

Notable changes to ruma-identifiers

Crate version 0.3.0 was released, which implements Clone for the ID types and Copy for the error type.

for the ID types and for the error type. I'm working on a change that would allow the ID types to be used directly as struct fields for Diesel table types. Right now it seems like more trouble than it's worth, but I'm following the issue on user-defined FromSql / ToSql types.

Matrix at large

Paul Evans of the Matrix team is working on testing Ruma with SyTest, a blackbox integration testing framework for Matrix homeservers. Even though few of the APIs are complete in Ruma so far, there are already a few tests passing!

SPEC-442: Explain requirements and guarantees around transaction IDs

SPEC-444: Add an API for getting auth flows The May 22, 2016 news update mentioned that Vector and Synapse use unspecified APIs for negotiating authentication flows, but an issue was never filed for improving that.

Rust at large