c5f9001985
* Add feature controlling the global reference pool to enable avoiding its overhead. * Document reference-pool feature in the performance guide. * Invert semantics of feature to disable reference pool so the new behaviour becomes opt-in * Remove delayed reference count increments as we cannot prevent reference count errors as long as these are available * Adjust tests to be compatible with disable-reference-pool feature * Adjust tests to be compatible with py-clone feature * Adjust the GIL benchmark to the updated reference pool semantics. * Further extend and clarify the documentation of the py-clone and disable-reference-pool features * Replace disable-reference-pool feature by pyo3_disable_reference_pool conditional compilation flag Such a flag is harder to use and thereby also harder to abuse. This seems appropriate as this is purely a performance-oriented change which show only be enabled by leaf crates and brings with it additional highly implicit sources of process aborts. * Add pyo3_leak_on_drop_without_reference_pool to turn aborts into leaks when the global reference pool is disabled and the GIL is not held |
||
---|---|---|
.. | ||
decorator | ||
getitem | ||
maturin-starter | ||
plugin | ||
sequential | ||
setuptools-rust-starter | ||
string-sum | ||
word-count | ||
Cargo.toml | ||
README.md |
PyO3 Examples
These example crates are a collection of toy extension modules built with PyO3. They are all tested using nox
in PyO3's CI.
Below is a brief description of each of these:
Example | Description |
---|---|
decorator |
A project showcasing the example from the Emulating callable objects chapter of the guide. |
maturin-starter |
A template project which is configured to use maturin for development. |
setuptools-rust-starter |
A template project which is configured to use setuptools_rust for development. |
word-count |
A quick performance comparison between word counter implementations written in each of Rust and Python. |
plugin |
Illustrates how to use Python as a scripting language within a Rust application |
sequential |
Illustrates how to use pyo3-ffi to write subinterpreter-safe modules |
Creating new projects from these examples
To copy an example, use cargo-generate
. Follow the commands below, replacing <example>
with the example to start from:
$ cargo install cargo-generate
$ cargo generate --git https://github.com/PyO3/pyo3 examples/<example>
(cargo generate
will take a little while to clone the PyO3 repo first; be patient when waiting for the command to run.)