-
Notifications
You must be signed in to change notification settings - Fork 760
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
Support for older Rust versions (1.41)? #1420
Comments
There was some discussion of this in #1076 leading to the current policy. However, with wider adoption comes heavier compatibility pressure, and IMO we should make cryptography's life a little easier if possible - it is already facing a lot of backlash for the Rust dependency. |
I will second this sentiment in retworkx I reverted the pyo3 0.13.0 bump (Qiskit/rustworkx#237) because it would break compatibility for piwheels which is using the debian buster rustc package which is also 1.41 (although in that case the ndarray and rust-numpy versions also complicates because the latest ndarray version has a msrv of 1.42). |
This version is currently supported by Debian stable and Alpine Linux. Fixes PyO3#1420
@birkenfeld Thanks Georg! Your PR does the trick.
|
This version is currently supported by Debian stable and Alpine Linux. Fixes PyO3#1420
I'm in favour of backporting support for older versions. (Thanks @birkenfeld!) We should probably use this issue to discuss what a better Rust support policy is than what we last settled on. To simplify packaging changes downstream, I suggest we keep MSRV bumps to the same release where we deprecate old Python versions. E.g. this year 3.6 will become end-of-life. In the release we drop Python 3.6, we can also bump the MSRV. A reasonable floor could be the minimum version supported by the current Debian / RHEL / Alpine versions at the time of the MSRV bump. I'm open to other suggestions too. To keep version support broad, I propose we also make use of feature gating to add optional support for newer functionality. E.g. |
How much effort is Python 3.6 compatibility for you? I would appreciate if you could keep Python 3.6 support for a little longer. CentOS 8 and RHEL 8 use Python 3.6 as platform Python interpreter. I just started the process to get setuptools_rust into RHEL 8 buildroot environment today...
Next RHEL 8 update should contain more recent versions of Rust. |
Chiming in here because I asked for 1.41.1 (=Debian buster) support over in pyca/cryptography#5769. Thanks for working on this, much appreciated! |
Perhaps I didn't communicate well; Python 3.6 end-of-life is in December of this year. We won't drop support in PyO3 until after that - so it could be as long as a year before that release happens. Or do you think we'll need support for even longer support than that? |
@davidhewitt It's hard to say, but the primary driver lowering 3.6 usage will be people moving off distributions like Ubuntu 18.04. We've found in the past that there's reasonably rapid migration off the oldest LTS when LTS+2 comes out (e.g. 22.04 in April 2022), but 18.04's EOL is April 2023, so at worst ~a year more. |
That's probably a long-winded way of saying that I would expect 3.6 usage to be quite high at the end of 2021, but start dropping off relatively quickly starting in May 2022. |
I hate to break it to you, but I expect 3.6 to drop off a bit slower than that. The default Python interpreter on RHEL 8 and CentOS 8 is Python 3.6. RHEL 9 hasn't been announced yet. This fact is likely prolonging prevalence of Python 3.6. Please note that users have options. The Python maintenance team at Red Hat did a fantastic job and made Python 3.8 a fully supported first-class-citizens in RHEL. Python 3.8 is available in the default AppStream. |
As long as cryptography is happy with what it gets in PyO3 0.13, this doesn't have to mean a need to support 3.6 in all later versions though. It just means a commitment to release bugfix versions, if serious bugs surface, of 0.13 (or the latest one to support 3.6). |
This version is currently supported by Debian stable and Alpine Linux. Fixes PyO3#1420
This version is currently supported by Debian stable and Alpine Linux. Fixes PyO3#1420
This version is currently supported by Debian stable and Alpine Linux. Fixes PyO3#1420
Thanks for reporting, we are happy to release the patch version 😉
👍🏼
So perhaps Debian is the most conservative? |
Ah, yes this is a good point. And since setuptools-rust is only a build time dependency we don't even have to worry about pinning conflicts there. That's nice! As an aside, I personally would like to thank every PyO3 maintainer. The open source ecosystem requires projects to stand on each others' shoulders and @alex and I couldn't do what we're doing in cryptography without the foundational work this team chose to tackle. |
👐 @alex did some much appreciated work to help get the abi3 support here; we definitely benefit from help with implementation and plenty of new interest by having you folks embrace Rust! |
Feature request
pyca/cryptography users have been asking for support of Debian Buster (current stable), Alpine 3.12, and other platforms with older Rust compiler versions. The common baseline seems to be 1.41. pyo3 does not compile with Rust 1.41 and seem to require at least Rust 1.45. Would it be feasible to support 1.41?
https://buildd.debian.org/status/package.php?p=rustc&suite=buster
🌍 Environment
rustc --version
): 1.41version = "0.x.y"
withgit = "https://github.com/PyO3/pyo3")?
:Reproducer
The text was updated successfully, but these errors were encountered: