mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04: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.
7 lines
235 B
Python
7 lines
235 B
Python
def buildhash() -> str: ...
|
|
def open_backend(data: bytes) -> Backend: ...
|
|
|
|
class Backend:
|
|
@classmethod
|
|
def command(self, service: int, method: int, data: bytes) -> bytes: ...
|
|
def db_command(self, data: bytes) -> bytes: ...
|