You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> This week we published [v25.06.3](https://github.com/element-hq/element-x-android/releases/tag/v25.06.3) as a stable version in the stores after a week of testing.
127
125
>
128
126
> Some other stuff we worked on this week:
@@ -277,11 +275,9 @@ Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots
> Hello in the wonderful world of Matrix Rust SDK where multiple things are happening simultaneously. It's hard to keep track of everything. I've tried to summarise the recent contributions, please don't feel offended if your great and valuable work isn't listed hereinbelow.
283
279
>
284
-
> ## WebAssembly
280
+
> ####WebAssembly
285
281
>
286
282
> The work around WebAssembly is twofold at the moment.
287
283
>
@@ -299,21 +295,21 @@ Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots
299
295
>
300
296
> All the other contributions: [#5270](https://github.com/matrix-org/matrix-rust-sdk/pull/5270), [#5265](https://github.com/matrix-org/matrix-rust-sdk/pull/5265), [#5264](https://github.com/matrix-org/matrix-rust-sdk/pull/5264), [#5263](https://github.com/matrix-org/matrix-rust-sdk/pull/5263), [#5262](https://github.com/matrix-org/matrix-rust-sdk/pull/5262), [#5256](https://github.com/matrix-org/matrix-rust-sdk/pull/5256), [#5249](https://github.com/matrix-org/matrix-rust-sdk/pull/5249), [#5242](https://github.com/matrix-org/matrix-rust-sdk/pull/5242), [#5231](https://github.com/matrix-org/matrix-rust-sdk/pull/5231), [#5217](https://github.com/matrix-org/matrix-rust-sdk/pull/5217). The idea isn't to write a changelog but rather to give you an idea of all the subtle changes made here and there to provide you this really cool ability to run the `matrix-sdk-ffi` crate on WebAssembly!
301
297
>
302
-
> ## Timeline and Event Cache
298
+
> ####Timeline and Event Cache
303
299
>
304
300
> The Timeline is heavily relying on the Event Cache. We are all humans, and bugs happen. And sometimes new features too.
305
301
>
306
302
> *[#5271](https://github.com/matrix-org/matrix-rust-sdk/pull/5271) The Timeline has a lazy-pagination. It means that if the Event Cache sends 100\_000 new events to the Timeline, the Timeline will only render 20 of them at a time. Why? For performance reason. Each new Timeline item generates computations, and ultimately ends up sending a message onto an application, so it will, at some point, cross the FFI layer. Reducing the number of data crossing the FFI boundary is a good idea. That's why the Timeline has a lazy-pagination mechanism (see [#4594](https://github.com/matrix-org/matrix-rust-sdk/pull/4594)) to learn more, it involves the `Skip` higher-order stream, it's pretty fun!). However, the Event Cache has also its own pagination mechanism, which includes its own pagination status. This pagination status was shared to the Timeline, without taking into account the lazy-pagination of the Timeline, resulting in wrong status and weird Timeline behaviours. This bug is now fixed, phew.
307
303
> *[#5247](https://github.com/matrix-org/matrix-rust-sdk/pull/5247) The Event Cache is cut into `RoomEventCache`s. As a user, it is possible to subscribe to each of them, and then start receiving `RoomEventCacheUpdate`. It's super nice. However, what happens when one wants to subscribe to _many_ rooms, only to get an idea of which room has been updated, regardless of the update details? It starts creating complications. It involves quite non-trivial async runtime optimisations to be efficient. That's why the new `EventCache::subscribe_to_room_generic_update` will generate `RoomEventCacheGenericUpdate`: subscribe once, get generic update for all rooms. This works was necessary for the new `LatestEvents` API being shape.
308
304
>
309
-
> ## Widget
305
+
> ####Widget
310
306
>
311
307
> The Widget API has been improved mostly for Element Call:
312
308
>
313
309
> *[#5286](https://github.com/matrix-org/matrix-rust-sdk/pull/5286) The `m.room.name` state event is now fetched, allowing widget embedders to know the room name,
314
310
> *[#5283](https://github.com/matrix-org/matrix-rust-sdk/pull/5283) A widget can now receive a _header_ configuration. Not to be confused with the HTTP _header_, this is purely an interface configuration.
315
311
>
316
-
> ## Encryption
312
+
> ####Encryption
317
313
>
318
314
> Encryption is a serious topic. It receives its batches of novelties:
319
315
>
@@ -322,15 +318,15 @@ Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots
322
318
> *[#5276](https://github.com/matrix-org/matrix-rust-sdk/pull/5276) The [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) defines room key bundles. A new store has been created in `matrix-sdk-indexeddb` to store them.
323
319
> *[#5288](https://github.com/matrix-org/matrix-rust-sdk/pull/5288) In the same vain of the previous item, the `OlmMachine`'s store provides a new `historic_room_key_stream` method to get a stream of room key bundles.
324
320
>
325
-
> ## Room List
321
+
> ####Room List
326
322
>
327
323
> [#4741](https://github.com/matrix-org/matrix-rust-sdk/pull/4741) The Room List Service is using Sliding Sync to synchronize all the data. Sliding Sync is session-based, i.e. the first response receives from the server by the client contains a `pos` opaque value (for _position_). Each subsequent request must precise this `pos` value, it's a way to tell the server _eh, we already have this session opened! let's reuse this state_. So far, this `pos` wasn't persistent (well, actually, it was, but partially), i.e. when the Matrix Rust SDK was shutdown and restarted, the first sliding sync request made by the Room List Service wasn't containing a `pos`, and thus the server was restarting a new session. This is now a thing of the past. The impact is quite important. For large accounts, it means faster start up time, smaller network requests (notably saving the account data, fewer invites, faster encryption loop), and so on. On a very large account, it is approximately 20 times faster! We are still measuring the impact on the server, but it should save quite a noticeable amount of resources as the server no longer need to throw away a session to start another one.
328
324
>
329
-
> ## Notification
325
+
> ####Notification
330
326
>
331
327
> [#5277](https://github.com/matrix-org/matrix-rust-sdk/pull/5277) The notification client wasn't configuring the `m.room.join_rules` correctly, resulting in all rooms being displayed as public.
332
328
>
333
-
> ## Code coverage
329
+
> ####Code coverage
334
330
>
335
331
> [#5244](https://github.com/matrix-org/matrix-rust-sdk/pull/5244) This one is important for the contributors. We have switched from `tarpaulin` to `llvm-cov`. In order to measure the code coverage, the Matrix Rust SDK binary is instrumented to add “probes”. With `tarpaulin`, we were being hit by segmentation faults more and more frequently, until a point it was almost constant. We were sometimes forced to change our code just to avoid these segfaults introduced by `tarpaulin`. Well, now we are using `llvm-cov`. It's also faster to run in the CI. One stone, two computers.
0 commit comments