diff --git a/.cargo/config b/.cargo/config index c17c0f23..f54d6312 100644 --- a/.cargo/config +++ b/.cargo/config @@ -3,10 +3,6 @@ xtask = "run --package xtask --" [target.'cfg(feature = "cargo-clippy")'] rustflags = [ - # TODO: remove these allows once msrv increased from 1.48 - "-Aclippy::iter_kv_map", - "-Aclippy::needless_borrow", - "-Aclippy::uninlined_format_args", # Lints to enforce in CI "-Dclippy::checked_conversions", "-Dclippy::dbg_macro", @@ -15,7 +11,6 @@ rustflags = [ "-Dclippy::filter_map_next", "-Dclippy::flat_map_option", "-Dclippy::let_unit_value", - "-Dclippy::manual_assert", "-Dclippy::manual_ok_or", "-Dclippy::todo", "-Dclippy::unnecessary_wraps", diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2155b826..6c30c434 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -201,7 +201,3 @@ jobs: # TODO: this is a hack to workaround compile_error! warnings about auto-initialize on PyPy # Once cargo's `resolver = "2"` is stable (~ MSRV Rust 1.52), remove this. PYO3_CI: 1 - # This is a hack to make CARGO_PRIMARY_PACKAGE always set even for the - # msrv job. MSRV is currently 1.48, but CARGO_PRIMARY_PACKAGE only came in - # 1.49. - CARGO_PRIMARY_PACKAGE: 1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 122d2007..b81131a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ jobs: }, ] include: - - rust: 1.48.0 + - rust: 1.56.0 python-version: "3.11" platform: { @@ -207,7 +207,7 @@ jobs: ] include: # Test minimal supported Rust version - - rust: 1.48.0 + - rust: 1.56.0 python-version: "3.11" platform: { diff --git a/Cargo.toml b/Cargo.toml index b0d84aae..a441805a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,7 @@ categories = ["api-bindings", "development-tools::ffi"] license = "Apache-2.0" exclude = ["/.gitignore", ".cargo/config", "/codecov.yml", "/Makefile", "/pyproject.toml", "/noxfile.py", "/.github", "/tests/test_compile_error.rs", "/tests/ui"] edition = "2018" +rust-version = "1.56" [dependencies] cfg-if = "1.0" diff --git a/README.md b/README.md index cbfe3306..1d72e3e4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![benchmark](https://github.com/PyO3/pyo3/actions/workflows/bench.yml/badge.svg)](https://pyo3.rs/dev/bench/) [![codecov](https://codecov.io/gh/PyO3/pyo3/branch/main/graph/badge.svg)](https://codecov.io/gh/PyO3/pyo3) [![crates.io](https://img.shields.io/crates/v/pyo3)](https://crates.io/crates/pyo3) -[![minimum rustc 1.48](https://img.shields.io/badge/rustc-1.48+-blue.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) +[![minimum rustc 1.56](https://img.shields.io/badge/rustc-1.56+-blue.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) [![dev chat](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/PyO3/Lobby) [![contributing notes](https://img.shields.io/badge/contribute-on%20github-Green)](https://github.com/PyO3/pyo3/blob/main/Contributing.md) @@ -18,7 +18,7 @@ PyO3 supports the following software versions: - Python 3.7 and up (CPython and PyPy) - - Rust 1.48 and up + - Rust 1.56 and up You can use PyO3 to write a native Python module in Rust, or to embed Python in a Rust binary. The following sections explain each of these in turn. diff --git a/examples/plugin/plugin_api/pyproject.toml b/examples/plugin/plugin_api/pyproject.toml index 114687ed..c645736f 100644 --- a/examples/plugin/plugin_api/pyproject.toml +++ b/examples/plugin/plugin_api/pyproject.toml @@ -10,5 +10,3 @@ classifiers = [ "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] - - diff --git a/guide/src/getting_started.md b/guide/src/getting_started.md index 2dd45a43..24bb417b 100644 --- a/guide/src/getting_started.md +++ b/guide/src/getting_started.md @@ -4,7 +4,7 @@ To get started using PyO3 you will need three things: a Rust toolchain, a Python ## Rust -First, make sure you have Rust installed on your system. If you haven't already done so, try following the instructions [here](https://www.rust-lang.org/tools/install). PyO3 runs on both the `stable` and `nightly` versions so you can choose whichever one fits you best. The minimum required Rust version is 1.48. +First, make sure you have Rust installed on your system. If you haven't already done so, try following the instructions [here](https://www.rust-lang.org/tools/install). PyO3 runs on both the `stable` and `nightly` versions so you can choose whichever one fits you best. The minimum required Rust version is 1.56. If you can run `rustc --version` and the version is new enough you're good to go! diff --git a/guide/src/migration.md b/guide/src/migration.md index ac78b02d..78f1f004 100644 --- a/guide/src/migration.md +++ b/guide/src/migration.md @@ -3,6 +3,12 @@ This guide can help you upgrade code through breaking changes from one PyO3 version to the next. For a detailed list of all changes, see the [CHANGELOG](changelog.md). +## from 0.19.* to 0.20 + +### Drop support for older technologies + +PyO3 0.20 has increased minimum Rust version to 1.56. This enables use of newer language features and simplifies maintenance of the project. + ## from 0.18.* to 0.19 ### Access to `Python` inside `__traverse__` implementations are now forbidden diff --git a/newsfragments/3208.packaging.md b/newsfragments/3208.packaging.md new file mode 100644 index 00000000..7845c7c8 --- /dev/null +++ b/newsfragments/3208.packaging.md @@ -0,0 +1 @@ +Update MSRV to Rust 1.56. diff --git a/pyo3-ffi/README.md b/pyo3-ffi/README.md index e1b98557..030c59d4 100644 --- a/pyo3-ffi/README.md +++ b/pyo3-ffi/README.md @@ -14,7 +14,7 @@ Manual][capi] for up-to-date documentation. PyO3 supports the following software versions: - Python 3.7 and up (CPython and PyPy) - - Rust 1.48 and up + - Rust 1.56 and up # Example: Building Python Native modules diff --git a/pyo3-ffi/src/lib.rs b/pyo3-ffi/src/lib.rs index 73ec459b..fc938668 100644 --- a/pyo3-ffi/src/lib.rs +++ b/pyo3-ffi/src/lib.rs @@ -51,7 +51,7 @@ //! //! PyO3 supports the following software versions: //! - Python 3.7 and up (CPython and PyPy) -//! - Rust 1.48 and up +//! - Rust 1.56 and up //! //! # Example: Building Python Native modules //! diff --git a/pyo3-macros-backend/src/pyfunction/signature.rs b/pyo3-macros-backend/src/pyfunction/signature.rs index b7c9965e..c83dc4e4 100644 --- a/pyo3-macros-backend/src/pyfunction/signature.rs +++ b/pyo3-macros-backend/src/pyfunction/signature.rs @@ -27,10 +27,11 @@ pub struct Signature { impl Parse for Signature { fn parse(input: ParseStream<'_>) -> syn::Result { let content; - Ok(Signature { - paren_token: syn::parenthesized!(content in input), - items: content.parse_terminated(SignatureItem::parse)?, - }) + let paren_token = syn::parenthesized!(content in input); + + let items = content.parse_terminated(SignatureItem::parse)?; + + Ok(Signature { paren_token, items }) } } diff --git a/src/lib.rs b/src/lib.rs index ded43370..656c5a71 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,7 +122,7 @@ //! //! PyO3 supports the following software versions: //! - Python 3.7 and up (CPython and PyPy) -//! - Rust 1.48 and up +//! - Rust 1.56 and up //! //! # Example: Building a native Python module //! diff --git a/xtask/src/cli.rs b/xtask/src/cli.rs index f873816a..fa8d1636 100644 --- a/xtask/src/cli.rs +++ b/xtask/src/cli.rs @@ -5,7 +5,7 @@ use std::process::{Command, Output}; use std::time::Instant; use structopt::StructOpt; -pub const MSRV: &str = "1.48"; +pub const MSRV: &str = "1.56"; #[derive(StructOpt)] pub enum Subcommand {