Skip to content

Commit

Permalink
Bump MSRV to 1.56 and minimum Python version to 3.8
Browse files Browse the repository at this point in the history
  • Loading branch information
adamreichold committed Jun 4, 2023
1 parent 6b85130 commit da8fb5c
Show file tree
Hide file tree
Showing 14 changed files with 31 additions and 29 deletions.
4 changes: 0 additions & 4 deletions .github/workflows/build.yml
Expand Up @@ -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
6 changes: 2 additions & 4 deletions .github/workflows/ci.yml
Expand Up @@ -81,7 +81,7 @@ jobs:
},
]
include:
- rust: 1.48.0
- rust: 1.56.0
python-version: "3.11"
platform:
{
Expand Down Expand Up @@ -178,12 +178,10 @@ jobs:
extra-features: ["multiple-pymethods"] # Because MSRV doesn't support this
rust: [stable]
python-version: [
"3.7",
"3.8",
"3.9",
"3.10",
"3.11",
"pypy-3.7",
"pypy-3.8",
"pypy-3.9"
]
Expand All @@ -207,7 +205,7 @@ jobs:
]
include:
# Test minimal supported Rust version
- rust: 1.48.0
- rust: 1.56.0
python-version: "3.11"
platform:
{
Expand Down
1 change: 1 addition & 0 deletions Cargo.toml
Expand Up @@ -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"
Expand Down
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -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)

Expand All @@ -17,8 +17,8 @@
## Usage

PyO3 supports the following software versions:
- Python 3.7 and up (CPython and PyPy)
- Rust 1.48 and up
- Python 3.8 and up (CPython and PyPy)
- 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.

Expand Down
2 changes: 1 addition & 1 deletion examples/plugin/plugin_api/pyproject.toml
Expand Up @@ -4,7 +4,7 @@ build-backend = "maturin"

[project]
name = "plugin_api"
requires-python = ">=3.7"
requires-python = ">=3.8"
classifiers = [
"Programming Language :: Rust",
"Programming Language :: Python :: Implementation :: CPython",
Expand Down
6 changes: 3 additions & 3 deletions guide/src/getting_started.md
Expand Up @@ -4,13 +4,13 @@ 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!

## Python

To use PyO3, you need at least Python 3.7. While you can simply use the default Python interpreter on your system, it is recommended to use a virtual environment.
To use PyO3, you need at least Python 3.8. While you can simply use the default Python interpreter on your system, it is recommended to use a virtual environment.

## Virtualenvs

Expand Down Expand Up @@ -128,7 +128,7 @@ build-backend = "maturin"

[project]
name = "pyo3_example"
requires-python = ">=3.7"
requires-python = ">=3.8"
classifiers = [
"Programming Language :: Rust",
"Programming Language :: Python :: Implementation :: CPython",
Expand Down
6 changes: 6 additions & 0 deletions guide/src/migration.md
Expand Up @@ -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 and minimum Python version to 3.8. 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
Expand Down
1 change: 1 addition & 0 deletions newsfragments/3204.changed.md
@@ -0,0 +1 @@
Update MSRV to Rust 1.56 and the minimum Python version to 3.8.
4 changes: 2 additions & 2 deletions noxfile.py
Expand Up @@ -16,8 +16,8 @@


PYO3_DIR = Path(__file__).parent
PY_VERSIONS = ("3.7", "3.8", "3.9", "3.10", "3.11")
PYPY_VERSIONS = ("3.7", "3.8", "3.9")
PY_VERSIONS = ("3.8", "3.9", "3.10", "3.11")
PYPY_VERSIONS = ("3.8", "3.9")


@nox.session(venv_backend="none")
Expand Down
5 changes: 2 additions & 3 deletions pyo3-ffi/README.md
Expand Up @@ -2,7 +2,6 @@

This crate provides [Rust](https://www.rust-lang.org/) FFI declarations for Python 3.
It supports both the stable and the unstable component of the ABI through the use of cfg flags.
Python Versions 3.7+ are supported.
It is meant for advanced users only - regular PyO3 users shouldn't
need to interact with this crate at all.

Expand All @@ -13,8 +12,8 @@ Manual][capi] for up-to-date documentation.
# Minimum supported Rust and Python versions

PyO3 supports the following software versions:
- Python 3.7 and up (CPython and PyPy)
- Rust 1.48 and up
- Python 3.8 and up (CPython and PyPy)
- Rust 1.56 and up

# Example: Building Python Native modules

Expand Down
4 changes: 2 additions & 2 deletions pyo3-ffi/src/lib.rs
Expand Up @@ -50,8 +50,8 @@
//! # Minimum supported Rust and Python versions
//!
//! PyO3 supports the following software versions:
//! - Python 3.7 and up (CPython and PyPy)
//! - Rust 1.48 and up
//! - Python 3.8 and up (CPython and PyPy)
//! - Rust 1.56 and up
//!
//! # Example: Building Python Native modules
//!
Expand Down
9 changes: 5 additions & 4 deletions pyo3-macros-backend/src/pyfunction/signature.rs
Expand Up @@ -27,10 +27,11 @@ pub struct Signature {
impl Parse for Signature {
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
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 })
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib.rs
Expand Up @@ -121,8 +121,8 @@
//! # Minimum supported Rust and Python versions
//!
//! PyO3 supports the following software versions:
//! - Python 3.7 and up (CPython and PyPy)
//! - Rust 1.48 and up
//! - Python 3.8 and up (CPython and PyPy)
//! - Rust 1.56 and up
//!
//! # Example: Building a native Python module
//!
Expand Down
2 changes: 1 addition & 1 deletion xtask/src/cli.rs
Expand Up @@ -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 {
Expand Down

0 comments on commit da8fb5c

Please sign in to comment.