Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
a6ca723
more cases for bigint benchmark (#6148)
chirizxc Jun 21, 2026
ec959bd
Enable `PyLong(Writer|Export)` api on abi3 from 3.15+ (#6160)
bschoenmaeckers Jun 25, 2026
1dd2c36
fix typo in performance.md (#6201)
sneakers-the-rat Jul 13, 2026
b11724a
update `native_doc` and use c style literals (#6210)
mejrs Jul 19, 2026
0e69581
build(deps): bump actions/setup-node from 6 to 7 (#6218)
dependabot[bot] Jul 21, 2026
751f1e2
build(deps): bump actions/setup-python from 6 to 7 (#6217)
dependabot[bot] Jul 21, 2026
77c5ea3
build(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#6216)
dependabot[bot] Jul 21, 2026
ff1450b
Use PySet_GET_SIZE for sets and frozensets (#6226)
charliermarsh Jul 23, 2026
9122729
Preallocate Rust sets when extracting Python sets (#6225)
charliermarsh Jul 24, 2026
0f0e436
update `PySet_GET_SIZE` and similar for free-threaded Python (#6230)
davidhewitt Jul 24, 2026
50bb22c
internal: simplify module creation conditional branches (#6275)
davidhewitt Jul 31, 2026
8b3addf
ci: fix ffi-check for backport of `Py_CompileStringFlags` symbol (#6302)
davidhewitt Aug 6, 2026
229cc72
fix merge queue breakages (#6310)
alex Aug 8, 2026
8c09a89
fix `clippy::clone_on_copy` firing on `#[pyclass(from_py_object)]` + …
alex Aug 8, 2026
36130ad
Fix documentation typo (#6312)
latent-9 Aug 9, 2026
4d2e017
fix(inspect): deduplicate union members and space the `|` on both sid…
jonasdedden Aug 9, 2026
450bc5d
chore: remove redundant clone (#6304)
FranciscoTGouveia Aug 9, 2026
2bcd593
build(deps): bump CodSpeedHQ/action from 5.0.1 to 5.0.3 (#6316)
dependabot[bot] Aug 12, 2026
dd64c90
refactor: move some tests inside the lib (#6311)
davidhewitt Aug 16, 2026
fd8d487
docs: add String interning section to the performance guide (#6336)
JMak-Security Aug 20, 2026
fcc7fa9
blocklist suspicious symbols in pyo3-ffi-check bindgen (#6337)
Person-93 Aug 21, 2026
21b4d6a
ci: bump wasi builds to use 3.15, read WASI SDK from cpython config (…
davidhewitt Aug 23, 2026
e0da5e4
ci: fail merge if wasm build fails (#6341)
davidhewitt Aug 23, 2026
1060d1b
`experimental-inspect`: Iterator `__next__` not optional (#6274)
jonasdedden Aug 23, 2026
e1d2041
internal: suppress warning caused by stabilization of never type (#6354)
Person-93 Aug 27, 2026
49fe213
ci: Use Cargo workspace publishing (#6355)
konstin Aug 27, 2026
b4c5f12
Fix double copy creating `PyBackedBytes` from `PyByteArray` (#6357)
PeterFaiman Aug 28, 2026
20ef214
`experimental-inspect`: write nested package stubs into their own dir…
jonasdedden Aug 28, 2026
4e9497a
internal: register all pytests submodules in sys.modules (#6361)
jonasdedden Aug 28, 2026
5288c06
internal: preliminary fixes for PyPy 3.12 (#6374)
davidhewitt Aug 31, 2026
28a2a45
build(deps): bump CodSpeedHQ/action from 5.0.3 to 5.2.1 (#6379)
dependabot[bot] Sep 1, 2026
f315aaa
Optimize PyBytes::as_bytes() in the unlimited API (#6377)
exg Sep 1, 2026
921e0ca
Add eval frame FFI bindings (#6195)
adamgerhant-ai Sep 2, 2026
1fad769
ci: workaround node 24.20 emscripten build break (#6385)
davidhewitt Sep 6, 2026
e1355b0
Fix empty tuple type hints rendering as invalid `tuple[]` (#6393)
jorenham Sep 7, 2026
ec1b818
`experimental-inspect`: give slot-wrapper trailing arguments their `N…
jonasdedden Sep 9, 2026
97d6904
Escape control characters in string constants as Python, not as Rust …
dylanpulver Sep 9, 2026
1d4524d
Introspection: use `typing_extensions.Buffer` instead of `collections…
jorenham Sep 9, 2026
6348055
Introspection: escape stub docstrings to prevent invalid syntax (#6394)
jorenham Sep 10, 2026
ef3a8f6
Record successful attach only after attaching in SuspendAttach (#6404)
ngoldbaum Sep 12, 2026
7707a8d
ci: don't build `hypothesis` from source (#6411)
davidhewitt Sep 14, 2026
f9e6182
ci: correct hypothesis bound to start from first native component rel…
davidhewitt Sep 15, 2026
0c9ddb2
fix raw-dylib opt-out on windows x86 (#6410)
davidhewitt Sep 16, 2026
b15e773
ci: update ffi-check for PyPy symbol mangling change (#6389)
davidhewitt Sep 16, 2026
7bd1b1e
internal: do not hardcode MSRV in README badge (#6378)
chirizxc Sep 16, 2026
b81cd48
check static addresses match in `pyo3-ffi-check` (#6421)
davidhewitt Sep 16, 2026
e02eaf5
fix FFI cases where PyPy replaced function with macro (#6422)
davidhewitt Sep 16, 2026
867d374
Add `DuringGC` FFI bindings for 3.15 (#6419)
davidhewitt Sep 15, 2026
f19ac82
fix clippy lint (#6334)
Person-93 Aug 20, 2026
c4b9617
fix 3.8 ffi checks
davidhewitt Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/actions/build-emscripten/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build Emscripten
description: Build the cached CPython Emscripten environment
inputs:
save-cache:
description: Whether to save build caches
required: false
default: "false"
runs:
using: composite
steps:
- name: Select Python
shell: bash
run: echo "UV_PYTHON=3.15" >> "$GITHUB_ENV"
- uses: astral-sh/setup-uv@v7
with:
save-cache: ${{ inputs.save-cache }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-emscripten
components: rust-src
- uses: actions/setup-node@v7
with:
node-version: 24
- name: Resolve CPython version
id: python
shell: bash
run: |
version=$(uv run --no-project --python "$UV_PYTHON" python -c 'import sys; print(sys.version.split()[0])')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Restore build cache
if: inputs.save-cache != 'true'
id: cache-restore
uses: actions/cache/restore@v6
with:
path: .nox/emscripten
key: emscripten-${{ hashFiles('wasm/emscripten/*', 'wasm/common.mk') }}-${{ hashFiles('noxfile.py') }}-${{ steps.python.outputs.version }}
- name: Restore and save build cache
if: inputs.save-cache == 'true'
id: cache
uses: actions/cache@v6
with:
path: .nox/emscripten
key: emscripten-${{ hashFiles('wasm/emscripten/*', 'wasm/common.mk') }}-${{ hashFiles('noxfile.py') }}-${{ steps.python.outputs.version }}
- uses: Swatinem/rust-cache@v2
with:
save-if: ${{ inputs.save-cache }}
- name: Build
if: steps.cache.outputs.cache-hit != 'true' && steps.cache-restore.outputs.cache-hit != 'true'
shell: bash
run: uvx nox -s build-emscripten
59 changes: 59 additions & 0 deletions .github/actions/build-wasi/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Build WASI
description: Build the cached CPython WASI environment
inputs:
save-cache:
description: Whether to save caches
required: false
default: "false"
runs:
using: composite
steps:
- name: Select Python
shell: bash
run: echo "UV_PYTHON=3.15" >> "$GITHUB_ENV"
- uses: astral-sh/setup-uv@v7
with:
save-cache: ${{ inputs.save-cache }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-wasip1
components: rust-src
- name: Install wasmtime
uses: bytecodealliance/actions/wasmtime/setup@v1
- name: Resolve CPython version
id: python
shell: bash
run: |
version=$(uv run --no-project --python "$UV_PYTHON" python -c 'import sys; print(sys.version.split()[0])')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Restore build cache
if: inputs.save-cache != 'true'
id: cache-restore
uses: actions/cache/restore@v6
with:
path: .nox/wasi
key: wasi-${{ hashFiles('wasm/wasi/*', 'wasm/common.mk') }}-${{ hashFiles('noxfile.py') }}-${{ steps.python.outputs.version }}
- name: Restore and save build cache
if: inputs.save-cache == 'true'
id: cache
uses: actions/cache@v6
with:
path: .nox/wasi
key: wasi-${{ hashFiles('wasm/wasi/*', 'wasm/common.mk') }}-${{ hashFiles('noxfile.py') }}-${{ steps.python.outputs.version }}
- uses: Swatinem/rust-cache@v2
with:
save-if: ${{ inputs.save-cache }}
- name: Prepare CPython source
id: prepare
shell: bash
run: uvx nox -s prepare-wasm
- name: Install WASI SDK
uses: bytecodealliance/setup-wasi-sdk-action@v1
with:
version: ${{ steps.prepare.outputs.wasi-sdk-version }}
add-to-path: false
- name: Build
if: steps.cache.outputs.cache-hit != 'true' && steps.cache-restore.outputs.cache-hit != 'true'
shell: bash
run: uvx nox -s build-wasm
6 changes: 3 additions & 3 deletions .github/workflows/benches.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ jobs:
benchmarks:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/checkout@v7.0.1
- uses: astral-sh/setup-uv@v7
with:
save-cache: ${{ github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'CI-save-pr-cache') }}

# Using this action is still necessary for CodSpeed to build flamegraphs correctly,
# see note about setup-python in https://codspeed.io/docs/benchmarks/python#recipes
- uses: actions/setup-python@v6
- uses: actions/setup-python@v7
with:
python-version: ${{ env.UV_PYTHON }}

Expand All @@ -47,7 +47,7 @@ jobs:
tool: cargo-codspeed

- name: Run the benchmarks
uses: CodSpeedHQ/action@v5.0.1
uses: CodSpeedHQ/action@v5.2.1
with:
run: uvx nox -s codspeed
token: ${{ secrets.CODSPEED_TOKEN }}
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,19 @@ jobs:
runs-on: ${{ inputs.os }}
if: ${{ !(startsWith(inputs.python-version, 'graalpy') && startsWith(inputs.os, 'windows')) }}
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/checkout@v7.0.1
with:
ref: ${{ inputs.sha }}

# installs using setup-python do not work for arm macOS 3.9 and below
- if: ${{ !(inputs.os == 'macos-latest' && contains(fromJSON('["3.8", "3.9"]'), inputs.python-version) && inputs.python-architecture == 'x64') }}
name: Set up Python ${{ inputs.python-version }}
id: setup-python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: ${{ inputs.python-version }}
architecture: ${{ inputs.python-architecture }}
# PyPy can have FFI changes within Python versions, which creates pain in CI
check-latest: ${{ startsWith(inputs.python-version, 'pypy') }}
check-latest: true

- name: Install zoneinfo backport for Python 3.8
id: zoneinfo-backport
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ jobs:
name: Check changelog entry
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/setup-python@v6
- uses: actions/checkout@v7.0.1
- uses: actions/setup-python@v7
with:
python-version: '3.14'
- uses: astral-sh/setup-uv@v7
Expand Down
20 changes: 18 additions & 2 deletions .github/workflows/ci-cache-warmup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ jobs:
cross-compilation-windows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/setup-python@v6
- uses: actions/checkout@v7.0.1
- uses: actions/setup-python@v7
with:
python-version: "3.14"
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -32,3 +32,19 @@ jobs:
with:
path: ~/.cache/cargo-xwin
key: cargo-xwin-cache

emscripten:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: ./.github/actions/build-emscripten
with:
save-cache: true

wasm32-wasip1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: ./.github/actions/build-wasi
with:
save-cache: true
Loading
Loading