indygreg / python-build-standalone

Produce redistributable builds of Python
BSD 3-Clause "New" or "Revised" License
1.71k stars 107 forks source link

3.12 RC builds #186

Closed georgiyekkert closed 9 months ago

georgiyekkert commented 10 months ago

Hello! Python 3.12rc1 is out, do you have plans to produce a build for any of the release candidates? Thanks!

kpark-hrp commented 10 months ago

Can we also include Python 3.8.18? Looks like it was left out on last release.

ofek commented 9 months ago

@indygreg Do you have a sense of the effort involved to support 3.12?

indygreg commented 9 months ago

New CPython versions usually take me 1-2 days to crank out once I start looking at them. But it really depends how much churn went into the CPython release.

As part of adding 3.12 support we'll want to add support for OpenSSL 3.x, since 1.1 is going EOL soon.

I haven't started looking at either CPython or OpenSSL yet.

indygreg commented 9 months ago

After landing OpenSSL 3 support today, I started looking at Python 3.12.

Like every CPython release, it seems to entail a lot of refreshing build system behavior to accommodate random new behavior. A yak shave.

ofek commented 9 months ago

Let me know if you would like any assistance! FYI the next release of Hatch will have the ability to manage Python installations backed by your builds. You can try it:

pip install "hatch @ git+https://github.com/pypa/hatch.git@master"
hatch config set dirs.python shared
hatch python show
hatch python install all --private
hatch python show
hatch python remove all
indygreg commented 9 months ago

Reported a 3.12 build system regression upstream. https://github.com/python/cpython/issues/109796

indygreg commented 9 months ago

I've got macOS and Linux 3.12 builds building to completion. Still need to look at Windows, which is failing due to Visual Studio project changes.

I also still need to perform an audit of changes to the resulting archives to make sure all changes look reasonable. I also probably need to fill in extension spot testing for new functionality, such as the HACL based digesting functions.

Before I release anything, I'd also like to slot in an upgrade to LLVM 17 and enable BOLT optimizations on 3.12 for a nice performance speedup. (I contributed BOLT build system improvements upstream to 3.12 with the intent of shipping them enabled by default in python-build-standalone.)

indygreg commented 9 months ago

Windows CI is now passing.

I attempted the LLVM 17 upgrade and hit a possible LLVM bug. So that's likely on hold. I'm also not sure I'll get to BOLT in the initial 3.12 release.

I may merge initial 3.12 support in the next few hours if CI comes back completely clean.