5df684fa6b
Rust requires all methods of impl Trait to be in a single file, which means we had a giant backend/mod.rs covering all exposed methods. By using separate service definitions for the separate areas, and updating the code generation, we can split it into more manageable chunks - this commit starts with the scheduling code. In the long run, we'll probably want to split up the protobuf file into multiple files as well. Also dropped want_release_gil() from rsbridge, and the associated method enum. While it allows us to skip the thread save/restore and mutex unlock/ lock, it looks to only be buying about 2.5% extra performance in the best case (tested with timeit+format_timespan), and the majority of the backend methods deal with I/O, and thus were already releasing the GIL. |
||
---|---|---|
.. | ||
.cargo | ||
build | ||
cargo | ||
src | ||
templates | ||
tests/support | ||
.clang-format | ||
.gitignore | ||
backend.proto | ||
BUILD.bazel | ||
Cargo.toml | ||
clang_format.bzl | ||
proto_format.py | ||
README.md | ||
rustfmt.bzl |
Anki's Rust code.
backend.proto stores the interfaces used to communicate backend messages between Rust, Python and TypeScript.