Skip to content

v0.4.4

Compare
Choose a tag to compare
@girlbossceo girlbossceo released this 05 Jul 05:20
· 885 commits to main since this release

conduwuit

Release 0.4.4

Hi everyone! conduwuit 0.4.4 has been released. This release introduced significant code cleanups, misc bug fixes, major performance optimisations tailored to database-functions, the deletion of the SQLite backend, Room Summary API support (MSC3266), OpenID routes to make Element Integration Manager work, and the SHA256 media feature integrated in a forwards-compatible way.


A breaking change that shouldn't affect anyone is that SQLite support was fully removed from conduwuit. This was done due to SQLite being used incorrectly as an extremely inefficient and slow key-value store with no proper schema, SQLite in general not being very suitable for a Matrix homeserver, the rusqlite library was holding back some necessary future database refactoring and improvements, and being a burden to maintain for something that almost no one uses. Because the SQLite usage was little to none, no automatic migration path was provided, but conduit_toolbox provides a SQLite -> RocksDB migration tool if you are impacted. RocksDB is the only supported database backend for conduwuit, and as always we intend on closing the feature gap that SQLite may have provided over RocksDB as much as possible.

Removal of SQLite along with some feature refactoring now makes the --all-features Rust build flag work for conduwuit.

A long-standing edge-case database bug was fixed that had the small possibility of causing mild jank upon room joins for the specific room being joined. The chances of this happening were low, but it was more likely on high-load servers and/or very fast servers. It's recommended to update to v0.4.4 to prevent the possibility of this issue happening.

More significant code cleanups, simplifications/minifications, refactoring, etc were done that also significantly improved database performance and performance on some hot code paths. Ping times have been found to be even better than before. Memory usage may also be improved from this.

MSC3266 support aka "Room Summary API" was added, just lacking federation bits at the moment but is functional for most uses of it. The OpenID routes were also added which is primarily used to make Element's "Integration Manager" functional.

The long-time optional sha256_media conduwuit feature has been fully integrated into conduwuit in a Conduit database forwards-compatible way through filesystem symlinks and startup media scans/checks. This prevents the upstream media bug on filesystems that don't allow long file names in the form of "File name too long (os error)" due to upstream using base64 for file names while still retaining upstream database compatibility. Users who used this optional feature are transparently migrated to the same database version as everyone else.

If you do not ever intend on moving back to Conduit, you can disable the 2 config options that retain database compatibility to speed up startup times and reduce media directory clutter: media_compat_file_link and media_statup_check in the example config.

Miscellaneous bugs were fixed related to spaces/hierarchy, redactions, restricted room joins, preventing infinite well-known caching, etc. And the usual dependencies were updated, including RocksDB to v9.3.1 from v9.2.1.

Commit history: v0.4.3...v0.4.4

GitHub Releases | Docker Hub | NixOS

Liberapay | GitHub Sponsors | Ko-fi

Chat with us in #conduwuit:puppygock.gay