-
-
Notifications
You must be signed in to change notification settings - Fork 31.5k
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
bpo-45696: Deep-freeze #29118
bpo-45696: Deep-freeze #29118
Conversation
Not generating Makefile yet
Still not generating Makefile
@tiran any idea? |
You could try to use the bootstrap interpreter to generate sysconfig and pybuilddir.txt: main...tiran:deepfreeze-bootstrap In the long run we might be able to replace |
@tiran, Does it look good now? All tests pass. I'll merge origin/main again and re-run the buildbots and then I hope to land this. We'll leave several things to future generations (or at least a later PR):
|
🤖 New build scheduled with the buildbot fleet by @gvanrossum for commit 0c9de73 🤖 If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again. |
The AMD64 FreeBSD buildbot is failing (https://buildbot.python.org/all/#/builders/203/builds/314/steps/3/logs/stdio), and AFAICT the cause is that its Make doesn't understand |
I was not aware that I'm sorry for the extra work I caused. |
🤖 New build scheduled with the buildbot fleet by @gvanrossum for commit 3e881031b14dc98f7d2b579e6b06c151df886333 🤖 If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again. |
3e88103
to
f40d138
Compare
🤖 New build scheduled with the buildbot fleet by @gvanrossum for commit f40d138 🤖 If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again. |
This gains 10% or more in startup time for `python -c pass` on UNIX-ish systems. The Makefile.pre.in generating code builds on Eric's work for bpo-45020, but the .c file generator is new. Windows version TBD.
This gains 10% or more in startup time for `python -c pass` on UNIX-ish systems. The Makefile.pre.in generating code builds on Eric's work for bpo-45020, but the .c file generator is new. Windows version TBD.
…0 KB space (GH-31074) This reduces the size of the data segment by **300 KB** of the executable because if the modules are deep-frozen then the marshalled frozen data just wastes space. This was inspired by comment by @gvanrossum in #29118 (comment). Note: There is a new option `--deepfreeze-only` in `freeze_modules.py` to change this behavior, it is on be default to save disk space. ```console # du -s ./python before 27892 ./python # du -s ./python after 27524 ./python ``` Automerge-Triggered-By: GH:ericsnowcurrently
See faster-cpython/ideas#84
This seems to be 10% faster than current main[1], so an improvement over Eric's freeze.
Downside: the data segment grows from 490 KB to 1.3 MB. (We could get ~300 KB back by not including the marshalled-frozen data.)
Another downside, for developers: whenever you touch a source file,
_bootstrap_python
gets rebuilt, and that triggers a rebuild of all the deep-frozen modules. (See comment below for a possible fix.)Haven't gotten it working on Windows yet. (The magic is disabled there for now.) I might do that in a separate PR.
[1] Measured on an x86 Mac, with lto-pgo, this shaves 1.5-2 msec off a total run time of around 14 msec. I measured by using the subprocess to run
python -c pass
100 times.https://bugs.python.org/issue45696