Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release: 0.19.2 #3348

Merged
merged 57 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
d03ba88
ci: run valgrind and careful with 'CI-build-full' label
davidhewitt Jul 3, 2023
f5a8c25
add some missing type conversions to the guide
davidhewitt Jul 3, 2023
8e588ef
add PyState_*Module definitions for PyPy
davidhewitt Jul 4, 2023
fd28ca8
Fix fixed offset timezone conversion bug.
grantslatton Jun 24, 2023
4440d09
add some style guide to Contributing.md
davidhewitt Jun 25, 2023
119d7cb
prefer inner / _private naming
davidhewitt Jun 27, 2023
b97e8d8
apply conventions for ffi calls
davidhewitt Jul 4, 2023
9594018
use error_on_minusone in more cases
davidhewitt Jul 4, 2023
35aa4f3
move `unsafe` block inside `error_on_minusone` calls
davidhewitt Jul 4, 2023
1889c69
use concrete inner for `PyErr:matches`
davidhewitt Jul 4, 2023
6d2cfcc
fix `SystemError` raised from `PyUnicodeDecodeError_Create` on PyPy 3.10
davidhewitt Jul 5, 2023
26c29e5
fix FFI definition `Py_EnterRecursiveCall`
davidhewitt Jul 5, 2023
5ff7a72
Add implementation of Iterator::size_hint for PyIterator
adamreichold Jul 8, 2023
9993254
Two is not three
mejrs Jul 11, 2023
946bc82
Resolve nightly clippy warning in test_field_cfg
alex Jul 11, 2023
2f1f9bf
Start adding a performance section to the guide.
adamreichold Jul 9, 2023
26a40a5
Add another performance subsection on implicit access to GIL token.
adamreichold Jul 9, 2023
52ba4fe
remove some dead fields from FnArg
davidhewitt Jul 11, 2023
86012d0
improve error span for mutable access to `#[pyclass(frozen)]`
davidhewitt Jul 11, 2023
1434837
Tiny grammar fix in error_handling.md
panpilkarz Jul 12, 2023
282ac9a
codecov: ignore coverage for pytests directory
davidhewitt Jul 12, 2023
4edf263
ci: updates for rust 1.71
davidhewitt Jul 14, 2023
4556886
normalize exception in `PyErr::matches` and `PyErr::get_type`
davidhewitt Jul 11, 2023
4a4327b
remove concept of "normalize" from PyErr docs
davidhewitt Jul 14, 2023
e6b8f36
Update outdated link in python_typing_hints.md and fix typos
CallMeMSL Jul 14, 2023
b2a608b
optimize is_instance for PyBaseException
davidhewitt Jul 11, 2023
8870f5b
macros: change self_arg to be an expression
davidhewitt Jul 14, 2023
9d2da74
Add tzfpy
ringsaturn Jul 16, 2023
f96c677
clippy: deny / fix used-underscope-binding lint
davidhewitt Jul 14, 2023
a6575b3
merge PyErr internal states for simplicity
davidhewitt Jul 16, 2023
269454d
Preserve panic message after exception is normalized
davidhewitt Jul 11, 2023
d94c09b
Prevent traceback loss on conversion to and from PyErr
zakstucke Jul 19, 2023
a4949ae
Combined changelog lines
zakstucke Jul 19, 2023
756314b
fix exception handling on Python 3.12
davidhewitt Jul 10, 2023
9c5ec1d
Install wheel for the setuptools-rust-starter example
alex Jul 20, 2023
c7e528e
add 3.12 and PyPy 3.10 to clippy jobs
davidhewitt Jul 21, 2023
4d54c50
Add haem to example projects
BooleanCat Jul 22, 2023
b85a8ee
ci: avoid failure to build numpy on 3.12
davidhewitt Jul 22, 2023
e3f17dc
Add PyType_GetDict for Python 3.12
cdce8p Jul 23, 2023
5f05dbb
add PyErr::display
davidhewitt Jul 21, 2023
b349313
always run ffi-check on dev pythons
davidhewitt Jul 25, 2023
4d2e498
remove PyUnicode_WCHAR_KIND from docs on Py_3_12
davidhewitt Jul 24, 2023
b57c33b
fix ffi check failures for 3.12.0b4
davidhewitt Jul 25, 2023
afb5614
ci: stop allowing failure for pypy 3.10
davidhewitt Jul 25, 2023
04c9c41
add PyAny::downcast_exact
davidhewitt Jul 28, 2023
7090e6b
optimize `float` -> `f64` conversions on non-abi3
davidhewitt Jul 27, 2023
9282f31
Add a PySlice::full() constructor for ::
juntyr Jul 29, 2023
79d5e4f
Added newsfragment
juntyr Jul 29, 2023
00a6ce6
fix compile failure for getter with return lifetime of self
davidhewitt Jul 28, 2023
0f796e7
macros: `_py` -> `py`
davidhewitt Jul 29, 2023
1fa46d0
add macro quotes module for common snippets
davidhewitt Jul 28, 2023
1f7c1fc
move benches to subdirectory
davidhewitt Jul 29, 2023
0f1846c
update criterion to 0.5.1
davidhewitt Jul 29, 2023
5564d61
update object.h definitions for Python 3.12
davidhewitt Jul 21, 2023
ecfddd5
update tests of refcounting to use a non-immortal object
davidhewitt Jul 25, 2023
e8d8840
fix msrv issues for 0.19.2 patch release
davidhewitt Jul 28, 2023
931e23d
release: 0.19.2
davidhewitt Jul 30, 2023
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
1 change: 1 addition & 0 deletions .cargo/config
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ rustflags = [
"-Dclippy::todo",
"-Dclippy::unnecessary_wraps",
"-Dclippy::useless_transmute",
"-Dclippy::used_underscore_binding",
"-Delided_lifetimes_in_paths",
"-Dunused_lifetimes",
"-Drust_2021_prelude_collisions"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ on:

jobs:
build:
continue-on-error: ${{ contains(fromJSON('["3.7", "3.12-dev", "pypy3.7", "pypy3.10"]'), inputs.python-version) }}
continue-on-error: ${{ endsWith(inputs.python-version, '-dev') || contains(fromJSON('["3.7", "pypy3.7"]'), inputs.python-version) }}
runs-on: ${{ inputs.os }}
steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -138,7 +138,7 @@ jobs:
- name: Run pyo3-ffi-check
# pypy 3.7 and 3.8 are not PEP 3123 compliant so fail checks here, nor
# is pypy 3.9 on windows
if: ${{ steps.ffi-changes.outputs.changed == 'true' && inputs.rust == 'stable' && inputs.python-version != 'pypy3.7' && inputs.python-version != 'pypy3.8' && !(inputs.python-version == 'pypy3.9' && contains(inputs.os, 'windows')) }}
if: ${{ endsWith(inputs.python-version, '-dev') || (steps.ffi-changes.outputs.changed == 'true' && inputs.rust == 'stable' && inputs.python-version != 'pypy3.7' && inputs.python-version != 'pypy3.8' && !(inputs.python-version == 'pypy3.9' && contains(inputs.os, 'windows'))) }}
run: nox -s ffi-check


Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ jobs:
extra-features: "multiple-pymethods"

valgrind:
if: ${{ github.event_name != 'pull_request' && github.ref != 'refs/heads/main' }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'CI-build-full') || (github.event_name != 'pull_request' && github.ref != 'refs/heads/main') }}
needs: [fmt]
runs-on: ubuntu-latest
steps:
Expand All @@ -274,7 +274,7 @@ jobs:
TRYBUILD: overwrite

careful:
if: ${{ github.event_name != 'pull_request' && github.ref != 'refs/heads/main' }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'CI-build-full') || (github.event_name != 'pull_request' && github.ref != 'refs/heads/main') }}
needs: [fmt]
runs-on: ubuntu-latest
steps:
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-python@v4
- uses: dtolnay/rust-toolchain@stable

- uses: actions/cache@v3
Expand All @@ -74,8 +74,10 @@ jobs:

- name: Run benchmarks
run: |
for bench in call dict gil list pyclass pyobject set tuple; do
cargo bench --features hashbrown --bench "bench_$bench" -- --output-format bencher | tee -a output.txt
python -m pip install --upgrade pip && pip install nox
for bench in pyo3-benches/benches/*.rs; do
bench_name=$(basename "$bench" .rs)
nox -s bench -- --bench "$bench_name" -- --output-format bencher | tee -a output.txt
done

# Download previous benchmark result from cache (if exists)
Expand Down
33 changes: 32 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,36 @@ To see unreleased changes, please see the [CHANGELOG on the main branch guide](h

<!-- towncrier release notes start -->

## [0.19.2] - 2023-08-01

### Added

- Add FFI definitions `PyState_AddModule`, `PyState_RemoveModule` and `PyState_FindModule` for PyPy 3.9 and up. [#3295](https://github.com/PyO3/pyo3/pull/3295)
- Add FFI definitions `_PyObject_CallFunction_SizeT` and `_PyObject_CallMethod_SizeT`. [#3297](https://github.com/PyO3/pyo3/pull/3297)
- Add a "performance" section to the guide collecting performance-related tricks and problems. [#3304](https://github.com/PyO3/pyo3/pull/3304)
- Add `PyErr::Display` for all Python versions, and FFI symbol `PyErr_DisplayException` for Python 3.12. [#3334](https://github.com/PyO3/pyo3/pull/3334)
- Add FFI definition `PyType_GetDict()` for Python 3.12. [#3339](https://github.com/PyO3/pyo3/pull/3339)
- Add `PyAny::downcast_exact`. [#3346](https://github.com/PyO3/pyo3/pull/3346)
- Add `PySlice::full()` to construct a full slice (`::`). [#3353](https://github.com/PyO3/pyo3/pull/3353)

### Changed

- Update `PyErr` for 3.12 betas to avoid deprecated ffi methods. [#3306](https://github.com/PyO3/pyo3/pull/3306)
- Update FFI definitions of `object.h` for Python 3.12.0b4. [#3335](https://github.com/PyO3/pyo3/pull/3335)
- Update `pyo3::ffi` struct definitions to be compatible with 3.12.0b4. [#3342](https://github.com/PyO3/pyo3/pull/3342)
- Optimize conversion of `float` to `f64` (and `PyFloat::value`) on non-abi3 builds. [#3345](https://github.com/PyO3/pyo3/pull/3345)

### Fixed

- Fix timezone conversion bug for FixedOffset datetimes that were being incorrectly converted to and from UTC. [#3269](https://github.com/PyO3/pyo3/pull/3269)
- Fix `SystemError` raised in `PyUnicodeDecodeError_Create` on PyPy 3.10. [#3297](https://github.com/PyO3/pyo3/pull/3297)
- Correct FFI definition `Py_EnterRecursiveCall` to return `c_int` (was incorrectly returning `()`). [#3300](https://github.com/PyO3/pyo3/pull/3300)
- Fix case where `PyErr::matches` and `PyErr::is_instance` returned results inconsistent with `PyErr::get_type`. [#3313](https://github.com/PyO3/pyo3/pull/3313)
- Fix loss of panic message in `PanicException` when unwinding after the exception was "normalized". [#3326](https://github.com/PyO3/pyo3/pull/3326)
- Fix `PyErr::from_value` and `PyErr::into_value` losing traceback on conversion. [#3328](https://github.com/PyO3/pyo3/pull/3328)
- Fix reference counting of immortal objects on Python 3.12.0b4. [#3335](https://github.com/PyO3/pyo3/pull/3335)


## [0.19.1] - 2023-07-03

### Packaging
Expand Down Expand Up @@ -1503,7 +1533,8 @@ Yanked

- Initial release

[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.19.1...HEAD
[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.19.2...HEAD
[0.19.2]: https://github.com/pyo3/pyo3/compare/v0.19.1...v0.19.2
[0.19.1]: https://github.com/pyo3/pyo3/compare/v0.19.0...v0.19.1
[0.19.0]: https://github.com/pyo3/pyo3/compare/v0.18.3...v0.19.0
[0.18.3]: https://github.com/pyo3/pyo3/compare/v0.18.2...v0.18.3
Expand Down
68 changes: 4 additions & 64 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "pyo3"
version = "0.19.1"
version = "0.19.2"
description = "Bindings to Python interpreter"
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
readme = "README.md"
Expand All @@ -20,10 +20,10 @@ parking_lot = ">= 0.11, < 0.13"
memoffset = "0.9"

# ffi bindings to the python interpreter, split into a separate crate so they can be used independently
pyo3-ffi = { path = "pyo3-ffi", version = "=0.19.1" }
pyo3-ffi = { path = "pyo3-ffi", version = "=0.19.2" }

# support crates for macros feature
pyo3-macros = { path = "pyo3-macros", version = "=0.19.1", optional = true }
pyo3-macros = { path = "pyo3-macros", version = "=0.19.2", optional = true }
indoc = { version = "1.0.3", optional = true }
unindent = { version = "0.1.4", optional = true }

Expand All @@ -44,7 +44,6 @@ serde = { version = "1.0", optional = true }
[dev-dependencies]
assert_approx_eq = "1.1.0"
chrono = { version = "0.4" }
criterion = "0.3.5"
# Required for "and $N others" normalization
trybuild = ">=1.0.70"
rustversion = "1.0"
Expand All @@ -58,7 +57,7 @@ rust_decimal = { version = "1.8.0", features = ["std"] }
widestring = "0.5.1"

[build-dependencies]
pyo3-build-config = { path = "pyo3-build-config", version = "0.19.1", features = ["resolve-config"] }
pyo3-build-config = { path = "pyo3-build-config", version = "0.19.2", features = ["resolve-config"] }

[features]
default = ["macros"]
Expand Down Expand Up @@ -114,65 +113,6 @@ full = [
"rust_decimal",
]

[[bench]]
name = "bench_any"
harness = false

[[bench]]
name = "bench_call"
harness = false

[[bench]]
name = "bench_err"
harness = false

[[bench]]
name = "bench_decimal"
harness = false
required-features = ["rust_decimal"]

[[bench]]
name = "bench_dict"
harness = false

[[bench]]
name = "bench_frompyobject"
harness = false
required-features = ["macros"]

[[bench]]
name = "bench_gil"
harness = false

[[bench]]
name = "bench_list"
harness = false

[[bench]]
name = "bench_pyclass"
harness = false
required-features = ["macros"]

[[bench]]
name = "bench_pyobject"
harness = false

[[bench]]
name = "bench_set"
harness = false

[[bench]]
name = "bench_tuple"
harness = false

[[bench]]
name = "bench_intern"
harness = false

[[bench]]
name = "bench_extract"
harness = false

[workspace]
members = [
"pyo3-ffi",
Expand Down
34 changes: 32 additions & 2 deletions Contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,36 @@ To include your changes in the release notes, you should create one (or more) ne
- `removed` - for features which have been removed
- `fixed` - for "changed" features which were classed as a bugfix

### Style guide

#### Generic code

PyO3 has a lot of generic APIs to increase usability. These can come at the cost of generic code bloat. Where reasonable, try to implement a concrete sub-portion of generic functions. There are two forms of this:

- If the concrete sub-portion doesn't benefit from re-use by other functions, name it `inner` and keep it as a local to the function.
- If the concrete sub-portion is re-used by other functions, preferably name it `_foo` and place it directly below `foo` in the source code (where `foo` is the original generic function).

#### FFI calls

PyO3 makes a lot of FFI calls to Python's C API using raw pointers. Where possible try to avoid using pointers-to-temporaries in expressions:

```rust
// dangerous
pyo3::ffi::Something(name.to_object(py).as_ptr());

// because the following refactoring is a use-after-free error:
let name = name.to_object(py).as_ptr();
pyo3::ffi::Something(name)
```

Instead, prefer to bind the safe owned `PyObject` wrapper before passing to ffi functions:

```rust
let name: PyObject = name.to_object(py);
pyo3::ffi::Something(name.as_ptr())
// name will automatically be freed when it falls out of scope
```

## Python and Rust version support policy

PyO3 aims to keep sufficient compatibility to make packaging Python extensions built with PyO3 feasible on most common package managers.
Expand All @@ -135,9 +165,9 @@ CI tests both the most recent stable Rust version and the minimum supported Rust

PyO3 has two sets of benchmarks for evaluating some aspects of its performance. The benchmark suite is currently very small - please open PRs with new benchmarks if you're interested in helping to expand it!

First, there are Rust-based benchmarks located in the `benches` subdirectory. As long as you have a nightly rust compiler available on your system, you can run these benchmarks with:
First, there are Rust-based benchmarks located in the `pyo3-benches` subdirectory. You can run these benchmarks with:

cargo +nightly bench
nox -s bench

Second, there is a Python-based benchmark contained in the `pytests` subdirectory. You can read more about it [here](pytests).

Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ name = "string_sum"
crate-type = ["cdylib"]

[dependencies]
pyo3 = { version = "0.19.1", features = ["extension-module"] }
pyo3 = { version = "0.19.2", features = ["extension-module"] }
```

**`src/lib.rs`**
Expand Down Expand Up @@ -137,7 +137,7 @@ Start a new project with `cargo new` and add `pyo3` to the `Cargo.toml` like th

```toml
[dependencies.pyo3]
version = "0.19.1"
version = "0.19.2"
features = ["auto-initialize"]
```

Expand Down Expand Up @@ -192,6 +192,7 @@ about this topic.
- [fastuuid](https://github.com/thedrow/fastuuid/) _Python bindings to Rust's UUID library._
- [feos](https://github.com/feos-org/feos) _Lightning fast thermodynamic modeling in Rust with fully developed Python interface._
- [forust](https://github.com/jinlow/forust) _A lightweight gradient boosted decision tree library written in Rust._
- [haem](https://github.com/BooleanCat/haem) _A Python library for working on Bioinformatics problems._
- [html-py-ever](https://github.com/PyO3/setuptools-rust/tree/main/examples/html-py-ever) _Using [html5ever](https://github.com/servo/html5ever) through [kuchiki](https://github.com/kuchiki-rs/kuchiki) to speed up html parsing and css-selecting._
- [hyperjson](https://github.com/mre/hyperjson) _A hyper-fast Python module for reading/writing JSON data using Rust's serde-json._
- [inline-python](https://github.com/fusion-engineering/inline-python) _Inline Python code directly in your Rust code._
Expand All @@ -212,6 +213,7 @@ about this topic.
- [rust-python-coverage](https://github.com/cjermain/rust-python-coverage) _Example PyO3 project with automated test coverage for Rust and Python._
- [tiktoken](https://github.com/openai/tiktoken) _A fast BPE tokeniser for use with OpenAI's models._
- [tokenizers](https://github.com/huggingface/tokenizers/tree/main/bindings/python) _Python bindings to the Hugging Face tokenizers (NLP) written in Rust._
- [tzfpy](http://github.com/ringsaturn/tzfpy) _A fast package to convert longitude/latitude to timezone name._
- [wasmer-python](https://github.com/wasmerio/wasmer-python) _Python library to run WebAssembly binaries._

## Articles and other media
Expand Down
2 changes: 1 addition & 1 deletion codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ coverage:

ignore:
- tests/*.rs
- pytests/*.rs
- src/test_hygiene/*.rs
- src/impl_/ghost.rs
2 changes: 1 addition & 1 deletion examples/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ publish = false
edition = "2018"

[dev-dependencies]
pyo3 = { version = "0.19.1", path = "..", features = ["auto-initialize", "extension-module"] }
pyo3 = { version = "0.19.2", path = "..", features = ["auto-initialize", "extension-module"] }

[[example]]
name = "decorator"
Expand Down
2 changes: 1 addition & 1 deletion examples/decorator/.template/pre-script.rhai
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
variable::set("PYO3_VERSION", "0.19.1");
variable::set("PYO3_VERSION", "0.19.2");
file::rename(".template/Cargo.toml", "Cargo.toml");
file::rename(".template/pyproject.toml", "pyproject.toml");
file::delete(".template");
2 changes: 1 addition & 1 deletion examples/maturin-starter/.template/pre-script.rhai
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
variable::set("PYO3_VERSION", "0.19.1");
variable::set("PYO3_VERSION", "0.19.2");
file::rename(".template/Cargo.toml", "Cargo.toml");
file::rename(".template/pyproject.toml", "pyproject.toml");
file::delete(".template");
2 changes: 1 addition & 1 deletion examples/plugin/.template/pre-script.rhai
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
variable::set("PYO3_VERSION", "0.19.1");
variable::set("PYO3_VERSION", "0.19.2");
file::rename(".template/Cargo.toml", "Cargo.toml");
file::rename(".template/plugin_api/Cargo.toml", "plugin_api/Cargo.toml");
file::delete(".template");
2 changes: 1 addition & 1 deletion examples/setuptools-rust-starter/.template/pre-script.rhai
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
variable::set("PYO3_VERSION", "0.19.1");
variable::set("PYO3_VERSION", "0.19.2");
file::rename(".template/Cargo.toml", "Cargo.toml");
file::rename(".template/setup.cfg", "setup.cfg");
file::delete(".template");
1 change: 1 addition & 0 deletions examples/setuptools-rust-starter/requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
pytest>=3.5.0
setuptools_rust~=1.0.0
pip>=21.3
wheel
2 changes: 1 addition & 1 deletion examples/word-count/.template/pre-script.rhai
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
variable::set("PYO3_VERSION", "0.19.1");
variable::set("PYO3_VERSION", "0.19.2");
file::rename(".template/Cargo.toml", "Cargo.toml");
file::delete(".template");
1 change: 1 addition & 0 deletions guide/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
- [Debugging](debugging.md)
- [Features reference](features.md)
- [Memory management](memory.md)
- [Performance](performance.md)
- [Advanced topics](advanced.md)
- [Building and distribution](building_and_distribution.md)
- [Supporting multiple Python versions](building_and_distribution/multiple_python_versions.md)
Expand Down
Loading
Loading