Please note that Go 1.18 is now required to build this version.
Features
- Dendrite now uses Ristretto for managing in-memory caches
- Should improve cache utilisation considerably over time by more intelligently selecting and managing cache entries compared to the previous LRU-based cache
- Defaults to a 1GB cache size if not configured otherwise
- The estimated cache size in memory and maximum age can now be configured with new configuration options to prevent unbounded cache growth
- Added support for serving the
/.well-known/matrix/client
hint directly from Dendrite- Configurable with the new configuration option
- Refactored membership updater, which should eliminate some bugs caused by the membership table getting out of sync with the room state
- The User API is now responsible for sending account data updates to other components, which may fix some races and duplicate account data events
- Optimised database query for checking whether a remote server is allowed to request an event over federation without using anywhere near as much CPU time (PostgreSQL only)
- Database migrations have been refactored to eliminate some problems that were present with
goose
and upgrading from older Dendrite versions - Media fetching will now use the
/v3
endpoints for downloading media from remote homeservers - HTTP 404 and HTTP 405 errors from the client-facing APIs should now be returned with CORS headers so that web-based clients do not produce incorrect access control warnings for unknown endpoints
- Some preparation work for full history visibility support
Fixes
- Fixes a crash that could occur during event redaction
- The
/members
endpoint will no longer incorrectly return HTTP 500 as a result of some invite events - Send-to-device messages should now be ordered more reliably and the last position in the stream updated correctly
- Parsing of appservice configuration files is now less strict (contributed by Kab1r)
- The sync API should now identify shared users correctly when waking up for E2EE key changes
- The federation
/state
endpoint will now return a HTTP 403 when the state before an event isn't known instead of a HTTP 500 - Presence timestamps should now be calculated with the correct precision
- A race condition in the roomserver's room info has been fixed
- A race condition in the sync API has been fixed