summary refs log tree commit diff
path: root/rust/src/lib.rs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Update PyO3 to 0.21 (#17162)Erik Johnston2024-05-081-1/+1
| | | | | | | | | | This version change requires a migration to a new API. See https://pyo3.rs/v0.21.2/migration#from-020-to-021 This will fix the annoying warnings added when using the recent rust nightly: > warning: non-local `impl` definition, they should be avoided as they go against expectation
* MSC4108 implementation (#17056)Quentin Gliech2024-04-251-0/+2
| | | | | | Co-authored-by: Hugh Nimmo-Smith <hughns@element.io> Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com> Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Helpers to transform Twisted requests to Rust http Requests/Responses (#17081)Quentin Gliech2024-04-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds functions to transform a Twisted request to the `http::Request`, and then to send back an `http::Response` through it. It also imports the SynapseError exception so that we can throw that from Rust code directly Example usage of this would be: ```rust use crate::http::{http_request_from_twisted, http_response_to_twisted, HeaderMapPyExt}; fn handler(twisted_request: &PyAny) -> PyResult<()> { let request = http_request_from_twisted(twisted_request)?; let ua: headers::UserAgent = request.headers().typed_get_required()?; if whatever { return Err((crate::errors::SynapseError::new( StatusCode::UNAUTHORIZED, "Whatever".to_owned "M_UNAUTHORIZED", None, None, ))); } let response = Response::new("hello".as_bytes()); http_response_to_twisted(twisted_request, response)?; Ok(()) } ```
* Port `EventInternalMetadata` class to Rust (#16782)Erik Johnston2024-01-081-0/+2
| | | | | | | | | | | | | There are a couple of things we need to be careful of here: 1. The current python code does no validation when loading from the DB, so we need to be careful to ignore such errors (at least on jki.re there are some old events with internal metadata fields of the wrong type). 2. We want to be memory efficient, as we often have many hundreds of thousands of events in the cache at a time. --------- Co-authored-by: Quentin Gliech <quenting@element.io>
* Add a cache around server ACL checking (#16360)Patrick Cloke2023-09-261-0/+2
| | | | | * Pre-compiles the server ACLs onto an object per room and invalidates them when new events come in. * Converts the server ACL checking into Rust.
* Reload the pyo3-log config when the Python logging config changes. (#14976)Patrick Cloke2023-02-031-2/+15
| | | | | | | | | | | Since pyo3-log is initialized very early in the Python start-up it caches the state of the loggers before they're fully initialized (and thus are essentially disabled). Whenever we reload the logging configuration we now also tell pyo3-log to discard any cached logging configuration it has; it will refetch the current logging configuration from Python at the next point it logs. This fixes Rust log lines not appearing in the homeserver logs.
* Port the push rule classes to Rust. (#13768)Erik Johnston2022-09-201-1/+8
|
* Check if Rust lib needs rebuilding. (#13759)Erik Johnston2022-09-121-1/+9
| | | This protects against the common mistake of failing to remember to rebuild Rust code after making changes.
* Add rust to CI (#13763)Erik Johnston2022-09-091-0/+1
|
* Add a stub Rust crate (#12595)Erik Johnston2022-09-061-0/+15