release: 0.21.0-beta.0 (#3944)
This commit is contained in:
parent
db0a98c040
commit
67b1b35013
68
CHANGELOG.md
68
CHANGELOG.md
|
@ -10,6 +10,72 @@ To see unreleased changes, please see the [CHANGELOG on the main branch guide](h
|
|||
|
||||
<!-- towncrier release notes start -->
|
||||
|
||||
## [0.21.0-beta.0] - 2024-03-10
|
||||
|
||||
### Added
|
||||
|
||||
- Add `PyMemoryView` type. [#3514](https://github.com/PyO3/pyo3/pull/3514)
|
||||
- Support `async fn` in macros with coroutine implementation [#3540](https://github.com/PyO3/pyo3/pull/3540)
|
||||
- Implement `PyTypeInfo` for `PyEllipsis`, `PyNone` and `PyNotImplemented`. [#3577](https://github.com/PyO3/pyo3/pull/3577)
|
||||
- Support `#[pyclass]` on enums that have non-unit variants. [#3582](https://github.com/PyO3/pyo3/pull/3582)
|
||||
- Add `__name__`/`__qualname__` attributes to `Coroutine` [#3588](https://github.com/PyO3/pyo3/pull/3588)
|
||||
- Add `coroutine::CancelHandle` to catch coroutine cancellation [#3599](https://github.com/PyO3/pyo3/pull/3599)
|
||||
- Add support for extracting Rust set types from `frozenset`. [#3632](https://github.com/PyO3/pyo3/pull/3632)
|
||||
- `FromPyObject`, `IntoPy<PyObject>` and `ToPyObject` are implemented on `std::duration::Duration` [#3670](https://github.com/PyO3/pyo3/pull/3670)
|
||||
- Add `PyString::to_cow`. Add `Py<PyString>::to_str`, `Py<PyString>::to_cow`, and `Py<PyString>::to_string_lossy`, as ways to access Python string data safely beyond the GIL lifetime. [#3677](https://github.com/PyO3/pyo3/pull/3677)
|
||||
- Add `Bound<T>` and `Borrowed<T>` smart pointers as a new API for accessing Python objects. [#3686](https://github.com/PyO3/pyo3/pull/3686)
|
||||
- Add `PyNativeType::as_bound` to convert "GIL refs" to the new `Bound` smart pointer. [#3692](https://github.com/PyO3/pyo3/pull/3692)
|
||||
- Add `FromPyObject::extract_bound` method, which can be implemented to avoid using the GIL Ref API in `FromPyObject` implementations. [#3706](https://github.com/PyO3/pyo3/pull/3706)
|
||||
- Add `gil-refs` feature to allow continued use of the deprecated GIL Refs APIs. [#3707](https://github.com/PyO3/pyo3/pull/3707)
|
||||
- Added methods to `PyAnyMethods` for binary operators (`add`, `sub`, etc.) [#3712](https://github.com/PyO3/pyo3/pull/3712)
|
||||
- `chrono-tz` feature allowing conversion between `chrono_tz::Tz` and `zoneinfo.ZoneInfo` [#3730](https://github.com/PyO3/pyo3/pull/3730)
|
||||
- Add definition for `PyType_GetModuleByDef` to `pyo3_ffi`. [#3734](https://github.com/PyO3/pyo3/pull/3734)
|
||||
- Conversion between `std::time::SystemTime` and `datetime.datetime` [#3736](https://github.com/PyO3/pyo3/pull/3736)
|
||||
- Add `Py::as_any` and `Py::into_any`. [#3785](https://github.com/PyO3/pyo3/pull/3785)
|
||||
- Add `PyStringMethods::encode_utf8`. [#3801](https://github.com/PyO3/pyo3/pull/3801)
|
||||
- Add `PyBackedStr` and `PyBackedBytes`, as alternatives to `&str` and `&bytes` where a Python object owns the data. [#3802](https://github.com/PyO3/pyo3/pull/3802)
|
||||
- The ability to create Python modules with a Rust `mod` block
|
||||
behind the `experimental-declarative-modules` feature. [#3815](https://github.com/PyO3/pyo3/pull/3815)
|
||||
- Implement `ExactSizeIterator` for `set` and `frozenset` iterators on `abi3` feature. [#3849](https://github.com/PyO3/pyo3/pull/3849)
|
||||
- Add `Py::drop_ref` to explicitly drop a `Py`` and immediately decrease the Python reference count if the GIL is already held. [#3871](https://github.com/PyO3/pyo3/pull/3871)
|
||||
- Implement `FromPyObject` for `Cow<str>`. [#3928](https://github.com/PyO3/pyo3/pull/3928)
|
||||
- Add `experimental-async` feature. [#3931](https://github.com/PyO3/pyo3/pull/3931)
|
||||
|
||||
### Changed
|
||||
|
||||
- - `PyDict::from_sequence` now takes a single argument of type `&PyAny` (previously took two arguments `Python` and `PyObject`). [#3532](https://github.com/PyO3/pyo3/pull/3532)
|
||||
- Deprecate `Py::is_ellipsis` and `PyAny::is_ellipsis` in favour of `any.is(py.Ellipsis())`. [#3577](https://github.com/PyO3/pyo3/pull/3577)
|
||||
- Split some `PyTypeInfo` functionality into new traits `HasPyGilRef` and `PyTypeCheck`. [#3600](https://github.com/PyO3/pyo3/pull/3600)
|
||||
- Deprecate `PyTryFrom` and `PyTryInto` traits in favor of `any.downcast()` via the `PyTypeCheck` and `PyTypeInfo` traits. [#3601](https://github.com/PyO3/pyo3/pull/3601)
|
||||
- Allow async methods to accept `&self`/`&mut self` [#3609](https://github.com/PyO3/pyo3/pull/3609)
|
||||
- Values of type `bool` can now be extracted from NumPy's `bool_`. [#3638](https://github.com/PyO3/pyo3/pull/3638)
|
||||
- Add `AsRefSource` to `PyNativeType`. [#3653](https://github.com/PyO3/pyo3/pull/3653)
|
||||
- Changed `.is_true` to `.is_truthy` on `PyAny` and `Py<PyAny>` to clarify that the test is not based on identity with or equality to the True singleton. [#3657](https://github.com/PyO3/pyo3/pull/3657)
|
||||
- `PyType::name` is now `PyType::qualname` whereas `PyType::name` efficiently accesses the full name which includes the module name. [#3660](https://github.com/PyO3/pyo3/pull/3660)
|
||||
- The `Iter(A)NextOutput` types are now deprecated and `__(a)next__` can directly return anything which can be converted into Python objects, i.e. awaitables do not need to be wrapped into `IterANextOutput` or `Option` any more. `Option` can still be used as well and returning `None` will trigger the fast path for `__next__`, stopping iteration without having to raise a `StopIteration` exception. [#3661](https://github.com/PyO3/pyo3/pull/3661)
|
||||
- Implements `FromPyObject` on `chrono::DateTime<Tz>` for all `Tz` and not only `FixedOffset` and `Utc` [#3663](https://github.com/PyO3/pyo3/pull/3663)
|
||||
- `chrono` conversions are compatible with `abi3` [#3664](https://github.com/PyO3/pyo3/pull/3664)
|
||||
- Add lifetime parameter to `PyTzInfoAccess` trait. For the deprecated gil-ref API, the trait is now implemented for `&'py PyTime` and `&'py PyDateTime` instead of `PyTime` and `PyDate`. [#3679](https://github.com/PyO3/pyo3/pull/3679)
|
||||
- Calls to `__traverse__` become no-ops for unsendable pyclasses if on the wrong thread, thereby avoiding hard aborts at the cost of potential leakage. [#3689](https://github.com/PyO3/pyo3/pull/3689)
|
||||
- Include `PyNativeType` in `pyo3::prelude`. [#3692](https://github.com/PyO3/pyo3/pull/3692)
|
||||
- Improve performance of `extract::<i64>` (and other integer types) by avoiding call to `__index__()` converting the value to an integer for 3.10+. Gives performance improvement of around 30% for successful extraction. [#3742](https://github.com/PyO3/pyo3/pull/3742)
|
||||
- Relax bound of `FromPyObject` for `Py<T>` to just `T: PyTypeCheck`. [#3776](https://github.com/PyO3/pyo3/pull/3776)
|
||||
- `PySet` and `PyFrozenSet` iterators now always iterate the equivalent of `iter(set)`. (A "fast path" with no noticeable performance benefit was removed.) [#3849](https://github.com/PyO3/pyo3/pull/3849)
|
||||
- The `#[pymodule]` macro now supports module functions that take a single argument as a `&Bound<'_, PyModule>`. [#3905](https://github.com/PyO3/pyo3/pull/3905)
|
||||
- Move implementations of `FromPyObject` for `&str`, `Cow<str>`, `&[u8]` and `Cow<[u8]>` onto a temporary trait `FromPyObjectBound` when `gil-refs` feature is deactivated. [#3928](https://github.com/PyO3/pyo3/pull/3928)
|
||||
|
||||
### Removed
|
||||
|
||||
- Remove all functionality deprecated in PyO3 0.19. [#3603](https://github.com/PyO3/pyo3/pull/3603)
|
||||
- Remove `PyCode` and `PyCode_Type` on PyPy: `PyCode_Type` is not exposed by PyPy. [#3934](https://github.com/PyO3/pyo3/pull/3934)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Match PyPy 7.3.14 in removing PyPy-only symbol `Py_MAX_NDIMS` in favour of `PyBUF_MAX_NDIM`. [#3757](https://github.com/PyO3/pyo3/pull/3757)
|
||||
- Fix segmentation fault using `datetime` types when an invalid `datetime` module is on sys.path. [#3818](https://github.com/PyO3/pyo3/pull/3818)
|
||||
- Fix `non_local_definitions` lint warning triggered by many PyO3 macros. [#3901](https://github.com/PyO3/pyo3/pull/3901)
|
||||
|
||||
|
||||
## [0.20.3] - 2024-02-23
|
||||
|
||||
### Packaging
|
||||
|
@ -1640,7 +1706,7 @@ Yanked
|
|||
|
||||
- Initial release
|
||||
|
||||
[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.20.3...HEAD
|
||||
[0.21.0-beta.0]: https://github.com/pyo3/pyo3/compare/v0.20.3...v0.21.0-beta.0
|
||||
[0.20.3]: https://github.com/pyo3/pyo3/compare/v0.20.2...v0.20.3
|
||||
[0.20.2]: https://github.com/pyo3/pyo3/compare/v0.20.1...v0.20.2
|
||||
[0.20.1]: https://github.com/pyo3/pyo3/compare/v0.20.0...v0.20.1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pyo3"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
description = "Bindings to Python interpreter"
|
||||
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
|
||||
readme = "README.md"
|
||||
|
@ -22,10 +22,10 @@ memoffset = "0.9"
|
|||
portable-atomic = "1.0"
|
||||
|
||||
# ffi bindings to the python interpreter, split into a separate crate so they can be used independently
|
||||
pyo3-ffi = { path = "pyo3-ffi", version = "=0.21.0-dev" }
|
||||
pyo3-ffi = { path = "pyo3-ffi", version = "=0.21.0-beta.0" }
|
||||
|
||||
# support crates for macros feature
|
||||
pyo3-macros = { path = "pyo3-macros", version = "=0.21.0-dev", optional = true }
|
||||
pyo3-macros = { path = "pyo3-macros", version = "=0.21.0-beta.0", optional = true }
|
||||
indoc = { version = "2.0.1", optional = true }
|
||||
unindent = { version = "0.2.1", optional = true }
|
||||
|
||||
|
@ -60,7 +60,7 @@ rayon = "1.6.1"
|
|||
futures = "0.3.28"
|
||||
|
||||
[build-dependencies]
|
||||
pyo3-build-config = { path = "pyo3-build-config", version = "=0.21.0-dev", features = ["resolve-config"] }
|
||||
pyo3-build-config = { path = "pyo3-build-config", version = "=0.21.0-beta.0", features = ["resolve-config"] }
|
||||
|
||||
[features]
|
||||
default = ["macros"]
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Add `PyMemoryView` type.
|
|
@ -1 +0,0 @@
|
|||
- `PyDict::from_sequence` now takes a single argument of type `&PyAny` (previously took two arguments `Python` and `PyObject`).
|
|
@ -1 +0,0 @@
|
|||
Support `async fn` in macros with coroutine implementation
|
|
@ -1 +0,0 @@
|
|||
Implement `PyTypeInfo` for `PyEllipsis`, `PyNone` and `PyNotImplemented`.
|
|
@ -1 +0,0 @@
|
|||
Deprecate `Py::is_ellipsis` and `PyAny::is_ellipsis` in favour of `any.is(py.Ellipsis())`.
|
|
@ -1 +0,0 @@
|
|||
Support `#[pyclass]` on enums that have non-unit variants.
|
|
@ -1 +0,0 @@
|
|||
Add `__name__`/`__qualname__` attributes to `Coroutine`
|
|
@ -1 +0,0 @@
|
|||
Add `coroutine::CancelHandle` to catch coroutine cancellation
|
|
@ -1 +0,0 @@
|
|||
Split some `PyTypeInfo` functionality into new traits `HasPyGilRef` and `PyTypeCheck`.
|
|
@ -1 +0,0 @@
|
|||
Deprecate `PyTryFrom` and `PyTryInto` traits in favor of `any.downcast()` via the `PyTypeCheck` and `PyTypeInfo` traits.
|
|
@ -1 +0,0 @@
|
|||
Remove all functionality deprecated in PyO3 0.19.
|
|
@ -1 +0,0 @@
|
|||
Allow async methods to accept `&self`/`&mut self`
|
|
@ -1 +0,0 @@
|
|||
Add support for extracting Rust set types from `frozenset`.
|
|
@ -1 +0,0 @@
|
|||
Values of type `bool` can now be extracted from NumPy's `bool_`.
|
|
@ -1 +0,0 @@
|
|||
Add `AsRefSource` to `PyNativeType`.
|
|
@ -1 +0,0 @@
|
|||
Changed `.is_true` to `.is_truthy` on `PyAny` and `Py<PyAny>` to clarify that the test is not based on identity with or equality to the True singleton.
|
|
@ -1 +0,0 @@
|
|||
`PyType::name` is now `PyType::qualname` whereas `PyType::name` efficiently accesses the full name which includes the module name.
|
|
@ -1 +0,0 @@
|
|||
The `Iter(A)NextOutput` types are now deprecated and `__(a)next__` can directly return anything which can be converted into Python objects, i.e. awaitables do not need to be wrapped into `IterANextOutput` or `Option` any more. `Option` can still be used as well and returning `None` will trigger the fast path for `__next__`, stopping iteration without having to raise a `StopIteration` exception.
|
|
@ -1 +0,0 @@
|
|||
Implements `FromPyObject` on `chrono::DateTime<Tz>` for all `Tz` and not only `FixedOffset` and `Utc`
|
|
@ -1 +0,0 @@
|
|||
`chrono` conversions are compatible with `abi3`
|
|
@ -1 +0,0 @@
|
|||
`FromPyObject`, `IntoPy<PyObject>` and `ToPyObject` are implemented on `std::duration::Duration`
|
|
@ -1 +0,0 @@
|
|||
Add `PyString::to_cow`. Add `Py<PyString>::to_str`, `Py<PyString>::to_cow`, and `Py<PyString>::to_string_lossy`, as ways to access Python string data safely beyond the GIL lifetime.
|
|
@ -1 +0,0 @@
|
|||
Add lifetime parameter to `PyTzInfoAccess` trait. For the deprecated gil-ref API, the trait is now implemented for `&'py PyTime` and `&'py PyDateTime` instead of `PyTime` and `PyDate`.
|
|
@ -1 +0,0 @@
|
|||
Add `Bound<T>` and `Borrowed<T>` smart pointers as a new API for accessing Python objects.
|
|
@ -1 +0,0 @@
|
|||
Calls to `__traverse__` become no-ops for unsendable pyclasses if on the wrong thread, thereby avoiding hard aborts at the cost of potential leakage.
|
|
@ -1 +0,0 @@
|
|||
Add `PyNativeType::as_bound` to convert "GIL refs" to the new `Bound` smart pointer.
|
|
@ -1 +0,0 @@
|
|||
Include `PyNativeType` in `pyo3::prelude`.
|
|
@ -1 +0,0 @@
|
|||
Add `FromPyObject::extract_bound` method, which can be implemented to avoid using the GIL Ref API in `FromPyObject` implementations.
|
|
@ -1 +0,0 @@
|
|||
Add `gil-refs` feature to allow continued use of the deprecated GIL Refs APIs.
|
|
@ -1 +0,0 @@
|
|||
Added methods to `PyAnyMethods` for binary operators (`add`, `sub`, etc.)
|
|
@ -1 +0,0 @@
|
|||
`chrono-tz` feature allowing conversion between `chrono_tz::Tz` and `zoneinfo.ZoneInfo`
|
|
@ -1 +0,0 @@
|
|||
Add definition for `PyType_GetModuleByDef` to `pyo3_ffi`.
|
|
@ -1 +0,0 @@
|
|||
Conversion between `std::time::SystemTime` and `datetime.datetime`
|
|
@ -1 +0,0 @@
|
|||
Improve performance of `extract::<i64>` (and other integer types) by avoiding call to `__index__()` converting the value to an integer for 3.10+. Gives performance improvement of around 30% for successful extraction.
|
|
@ -1 +0,0 @@
|
|||
Match PyPy 7.3.14 in removing PyPy-only symbol `Py_MAX_NDIMS` in favour of `PyBUF_MAX_NDIM`.
|
|
@ -1 +0,0 @@
|
|||
Relax bound of `FromPyObject` for `Py<T>` to just `T: PyTypeCheck`.
|
|
@ -1 +0,0 @@
|
|||
Add `Py::as_any` and `Py::into_any`.
|
|
@ -1 +0,0 @@
|
|||
Add `PyStringMethods::encode_utf8`.
|
|
@ -1 +0,0 @@
|
|||
Add `PyBackedStr` and `PyBackedBytes`, as alternatives to `&str` and `&bytes` where a Python object owns the data.
|
|
@ -1,2 +0,0 @@
|
|||
The ability to create Python modules with a Rust `mod` block
|
||||
behind the `experimental-declarative-modules` feature.
|
|
@ -1 +0,0 @@
|
|||
Fix segmentation fault using `datetime` types when an invalid `datetime` module is on sys.path.
|
|
@ -1 +0,0 @@
|
|||
Implement `ExactSizeIterator` for `set` and `frozenset` iterators on `abi3` feature.
|
|
@ -1 +0,0 @@
|
|||
`PySet` and `PyFrozenSet` iterators now always iterate the equivalent of `iter(set)`. (A "fast path" with no noticeable performance benefit was removed.)
|
|
@ -1 +0,0 @@
|
|||
Add `Py::drop_ref` to explicitly drop a `Py`` and immediately decrease the Python reference count if the GIL is already held.
|
|
@ -1 +0,0 @@
|
|||
Fix `non_local_definitions` lint warning triggered by many PyO3 macros.
|
|
@ -1 +0,0 @@
|
|||
The `#[pymodule]` macro now supports module functions that take a single argument as a `&Bound<'_, PyModule>`.
|
|
@ -1 +0,0 @@
|
|||
Implement `FromPyObject` for `Cow<str>`.
|
|
@ -1 +0,0 @@
|
|||
Move implementations of `FromPyObject` for `&str`, `Cow<str>`, `&[u8]` and `Cow<[u8]>` onto a temporary trait `FromPyObjectBound` when `gil-refs` feature is deactivated.
|
|
@ -1 +0,0 @@
|
|||
Add `experimental-async` feature.
|
|
@ -1 +0,0 @@
|
|||
Remove `PyCode` and `PyCode_Type` on PyPy: `PyCode_Type` is not exposed by PyPy.
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pyo3-build-config"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
description = "Build configuration for the PyO3 ecosystem"
|
||||
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
|
||||
keywords = ["pyo3", "python", "cpython", "ffi"]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pyo3-ffi"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
description = "Python-API bindings for the PyO3 ecosystem"
|
||||
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
|
||||
keywords = ["pyo3", "python", "cpython", "ffi"]
|
||||
|
@ -38,7 +38,7 @@ abi3-py312 = ["abi3", "pyo3-build-config/abi3-py312"]
|
|||
generate-import-lib = ["pyo3-build-config/python3-dll-a"]
|
||||
|
||||
[build-dependencies]
|
||||
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.21.0-dev", features = ["resolve-config"] }
|
||||
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.21.0-beta.0", features = ["resolve-config"] }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pyo3-macros-backend"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
description = "Code generation for PyO3 package"
|
||||
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
|
||||
keywords = ["pyo3", "python", "cpython", "ffi"]
|
||||
|
@ -16,7 +16,7 @@ edition = "2021"
|
|||
[dependencies]
|
||||
heck = "0.4"
|
||||
proc-macro2 = { version = "1", default-features = false }
|
||||
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.21.0-dev", features = ["resolve-config"] }
|
||||
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.21.0-beta.0", features = ["resolve-config"] }
|
||||
quote = { version = "1", default-features = false }
|
||||
|
||||
[dependencies.syn]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pyo3-macros"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
description = "Proc macros for PyO3 package"
|
||||
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
|
||||
keywords = ["pyo3", "python", "cpython", "ffi"]
|
||||
|
@ -22,7 +22,7 @@ experimental-declarative-modules = []
|
|||
proc-macro2 = { version = "1", default-features = false }
|
||||
quote = "1"
|
||||
syn = { version = "2", features = ["full", "extra-traits"] }
|
||||
pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.21.0-dev" }
|
||||
pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.21.0-beta.0" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
[tool.towncrier]
|
||||
filename = "CHANGELOG.md"
|
||||
version = "0.21.0-dev"
|
||||
version = "0.21.0-beta.0"
|
||||
start_string = "<!-- towncrier release notes start -->\n"
|
||||
template = ".towncrier.template.md"
|
||||
title_format = "## [{version}] - {project_date}"
|
||||
|
|
Loading…
Reference in a new issue