Updated June 2026 14 hours of live training delivered over 2-4 days to accommodate your scheduling needs. Python and Rust developers building native Python extensions for performance, ML, data, or systems work. Particularly relevant for ML/data engineers shipping LLM applications who need to drop CPython hot paths into Rust without losing the productivity of Python at the boundaries, and for teams maintaining mature Python codebases that need a faster, GIL-free runtime for specific components. This advanced course is for engineers who already know Python and Rust and want to ship a real, debuggable, GIL-free native Python extension. It covers the full workflow on the Rust 2024 edition (Rust 1.85+) and PyO3 0.28+: profiling Python to find the right hot path, building Rust extensions with PyO3 + Maturin, exposing functions and classes across the boundary, releasing the GIL for CPU-bound work, threading and async/await across the boundary, and packaging as wheels for PyPI. AI assistants accelerate the routine parts (boilerplate, type conversions, error mapping); the course teaches where they help and where you still have to think carefully about ownership, the GIL, and what crosses the FFI boundary. All students receive comprehensive courseware covering all topics in the course. Courseware is distributed via GitHub in the form of documentation and extensive code samples. A free GitHub account, the latest stable Rust toolchain installed via High-Performance Python with Rust
Class Duration
Student Prerequisites
Target Audience
Description
Learning Outcomes
Training Materials
Software Requirements
rustup (Rust 1.96+ on the 2024 edition), Python 3.12+, Visual Studio Code or another supported editor with the rust-analyzer extension, Maturin, and an AI coding assistant of choice (GitHub Copilot, Cursor, or Claude Code). A cloud-based environment can be provided if local installation is restricted.Training Topics
Why Rust Inside Python
Profiling and Measurement
py-spy, scalene, and cProfilepytest-benchmark and criterionDebugging Across the Boundary
PyO3 and Maturin Workflow
pyo3 macros: #[pymodule], #[pyfunction], #[pyclass], #[pymethods]maturin publishPython and Rust Integration
Bound<'py, PyAny>, Py<T>, PyResult#[pyclass]The GIL and Parallelism
Python::detach (formerly allow_threads)Send/Sync boundariesrayon inside Rust extensionspyo3-async-runtimes and friendsDistributing Rust Extensions
maturin for Linux, macOS, and WindowscibuildwheelAI-Assisted PyO3 Workflow
unsafe, unwrap, and Python::detach blocks