mirror of
https://github.com/ankitects/anki.git
synced 2025-11-29 07:57:11 -05:00
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.