]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-145278: freeze encodings (partially) and linecache (#148347)
authorFilipe Laíns <lains@riseup.net>
Tue, 14 Apr 2026 20:01:23 +0000 (21:01 +0100)
committerGitHub <noreply@github.com>
Tue, 14 Apr 2026 20:01:23 +0000 (21:01 +0100)
Makefile.pre.in
Misc/NEWS.d/next/Core_and_Builtins/2026-02-26-21-22-34.gh-issue-145278.DHkYqt.rst [new file with mode: 0644]
PCbuild/_freeze_module.vcxproj
PCbuild/_freeze_module.vcxproj.filters
Python/frozen.c
Tools/build/freeze_modules.py

index 8d325a4932509d2c48decd0b01b518316121322d..f869c1f7c937764e7c71a4c0dbaf4eaf41e4ed45 100644 (file)
@@ -1731,6 +1731,10 @@ FROZEN_FILES_IN = \
                Lib/zipimport.py \
                Lib/abc.py \
                Lib/codecs.py \
+               Lib/encodings/__init__.py \
+               Lib/encodings/aliases.py \
+               Lib/encodings/utf_8.py \
+               Lib/encodings/_win_cp_codecs.py \
                Lib/io.py \
                Lib/_collections_abc.py \
                Lib/_sitebuiltins.py \
@@ -1740,6 +1744,7 @@ FROZEN_FILES_IN = \
                Lib/os.py \
                Lib/site.py \
                Lib/stat.py \
+               Lib/linecache.py \
                Lib/importlib/util.py \
                Lib/importlib/machinery.py \
                Lib/runpy.py \
@@ -1756,6 +1761,10 @@ FROZEN_FILES_OUT = \
                Python/frozen_modules/zipimport.h \
                Python/frozen_modules/abc.h \
                Python/frozen_modules/codecs.h \
+               Python/frozen_modules/encodings.h \
+               Python/frozen_modules/encodings.aliases.h \
+               Python/frozen_modules/encodings.utf_8.h \
+               Python/frozen_modules/encodings._win_cp_codecs.h \
                Python/frozen_modules/io.h \
                Python/frozen_modules/_collections_abc.h \
                Python/frozen_modules/_sitebuiltins.h \
@@ -1765,6 +1774,7 @@ FROZEN_FILES_OUT = \
                Python/frozen_modules/os.h \
                Python/frozen_modules/site.h \
                Python/frozen_modules/stat.h \
+               Python/frozen_modules/linecache.h \
                Python/frozen_modules/importlib.util.h \
                Python/frozen_modules/importlib.machinery.h \
                Python/frozen_modules/runpy.h \
@@ -1804,6 +1814,18 @@ Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
 Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
        $(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
 
+Python/frozen_modules/encodings.h: Lib/encodings/__init__.py $(FREEZE_MODULE_DEPS)
+       $(FREEZE_MODULE) encodings $(srcdir)/Lib/encodings/__init__.py Python/frozen_modules/encodings.h
+
+Python/frozen_modules/encodings.aliases.h: Lib/encodings/aliases.py $(FREEZE_MODULE_DEPS)
+       $(FREEZE_MODULE) encodings.aliases $(srcdir)/Lib/encodings/aliases.py Python/frozen_modules/encodings.aliases.h
+
+Python/frozen_modules/encodings.utf_8.h: Lib/encodings/utf_8.py $(FREEZE_MODULE_DEPS)
+       $(FREEZE_MODULE) encodings.utf_8 $(srcdir)/Lib/encodings/utf_8.py Python/frozen_modules/encodings.utf_8.h
+
+Python/frozen_modules/encodings._win_cp_codecs.h: Lib/encodings/_win_cp_codecs.py $(FREEZE_MODULE_DEPS)
+       $(FREEZE_MODULE) encodings._win_cp_codecs $(srcdir)/Lib/encodings/_win_cp_codecs.py Python/frozen_modules/encodings._win_cp_codecs.h
+
 Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
        $(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
 
@@ -1831,6 +1853,9 @@ Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
 Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
        $(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
 
+Python/frozen_modules/linecache.h: Lib/linecache.py $(FREEZE_MODULE_DEPS)
+       $(FREEZE_MODULE) linecache $(srcdir)/Lib/linecache.py Python/frozen_modules/linecache.h
+
 Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
        $(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
 
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-02-26-21-22-34.gh-issue-145278.DHkYqt.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-02-26-21-22-34.gh-issue-145278.DHkYqt.rst
new file mode 100644 (file)
index 0000000..6b6a9eb
--- /dev/null
@@ -0,0 +1,4 @@
+The :mod:`encodings` is now partially frozen, including
+the ``aliases`` and ``utf_8`` submodules.
+
+The :mod:`linecache` is now frozen.
index cb806459596084b089782c2faf0725f1991c4a9f..38236922a523db52bdd9e42c8b2801e09f9030a9 100644 (file)
       <IntFile>$(IntDir)codecs.g.h</IntFile>
       <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\codecs.h</OutFile>
     </None>
+    <None Include="..\Lib\encodings\__init__.py">
+      <ModName>encodings</ModName>
+      <IntFile>$(IntDir)encodings.g.h</IntFile>
+      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.h</OutFile>
+    </None>
+    <None Include="..\Lib\encodings\aliases.py">
+      <ModName>encodings.aliases</ModName>
+      <IntFile>$(IntDir)encodings.aliases.g.h</IntFile>
+      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.aliases.h</OutFile>
+    </None>
+    <None Include="..\Lib\encodings\utf_8.py">
+      <ModName>encodings.utf_8</ModName>
+      <IntFile>$(IntDir)encodings.utf_8.g.h</IntFile>
+      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.utf_8.h</OutFile>
+    </None>
+    <None Include="..\Lib\encodings\_win_cp_codecs.py">
+      <ModName>encodings._win_cp_codecs</ModName>
+      <IntFile>$(IntDir)encodings._win_cp_codecs.g.h</IntFile>
+      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings._win_cp_codecs.h</OutFile>
+    </None>
     <None Include="..\Lib\io.py">
       <ModName>io</ModName>
       <IntFile>$(IntDir)io.g.h</IntFile>
       <IntFile>$(IntDir)stat.g.h</IntFile>
       <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\stat.h</OutFile>
     </None>
+    <None Include="..\Lib\linecache.py">
+      <ModName>linecache</ModName>
+      <IntFile>$(IntDir)linecache.g.h</IntFile>
+      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\linecache.h</OutFile>
+    </None>
     <None Include="..\Lib\importlib\util.py">
       <ModName>importlib.util</ModName>
       <IntFile>$(IntDir)importlib.util.g.h</IntFile>
index 6dcf0e8712903a83195d76eaa3a5a01d7cc564df..73861dbb0c9e7e3e1b62ea72586757f659887ba4 100644 (file)
     <None Include="..\Lib\codecs.py">
       <Filter>Python Files</Filter>
     </None>
+    <None Include="..\Lib\encodings\__init__.py">
+      <Filter>Python Files</Filter>
+    </None>
+    <None Include="..\Lib\encodings\aliases.py">
+      <Filter>Python Files</Filter>
+    </None>
+    <None Include="..\Lib\encodings\utf_8.py">
+      <Filter>Python Files</Filter>
+    </None>
+    <None Include="..\Lib\encodings\_win_cp_codecs.py">
+      <Filter>Python Files</Filter>
+    </None>
     <None Include="..\Lib\io.py">
       <Filter>Python Files</Filter>
     </None>
     <None Include="..\Lib\stat.py">
       <Filter>Python Files</Filter>
     </None>
+    <None Include="..\Lib\linecache.py">
+      <Filter>Python Files</Filter>
+    </None>
     <None Include="..\Lib\importlib\util.py">
       <Filter>Python Files</Filter>
     </None>
index 15d256b6743e0a66a6c86b119925bbc870f09a7b..1fae26f8dbccb0bbd8558413fdcda809611aabec 100644 (file)
 #include "frozen_modules/zipimport.h"
 #include "frozen_modules/abc.h"
 #include "frozen_modules/codecs.h"
+#include "frozen_modules/encodings.h"
+#include "frozen_modules/encodings.aliases.h"
+#include "frozen_modules/encodings.utf_8.h"
+#include "frozen_modules/encodings._win_cp_codecs.h"
 #include "frozen_modules/io.h"
 #include "frozen_modules/_collections_abc.h"
 #include "frozen_modules/_sitebuiltins.h"
@@ -55,6 +59,7 @@
 #include "frozen_modules/os.h"
 #include "frozen_modules/site.h"
 #include "frozen_modules/stat.h"
+#include "frozen_modules/linecache.h"
 #include "frozen_modules/importlib.util.h"
 #include "frozen_modules/importlib.machinery.h"
 #include "frozen_modules/runpy.h"
@@ -76,6 +81,10 @@ static const struct _frozen stdlib_modules[] = {
     /* stdlib - startup, without site (python -S) */
     {"abc", _Py_M__abc, (int)sizeof(_Py_M__abc), false},
     {"codecs", _Py_M__codecs, (int)sizeof(_Py_M__codecs), false},
+    {"encodings", _Py_M__encodings, (int)sizeof(_Py_M__encodings), true},
+    {"encodings.aliases", _Py_M__encodings_aliases, (int)sizeof(_Py_M__encodings_aliases), false},
+    {"encodings.utf_8", _Py_M__encodings_utf_8, (int)sizeof(_Py_M__encodings_utf_8), false},
+    {"encodings._win_cp_codecs", _Py_M__encodings__win_cp_codecs, (int)sizeof(_Py_M__encodings__win_cp_codecs), false},
     {"io", _Py_M__io, (int)sizeof(_Py_M__io), false},
 
     /* stdlib - startup, with site */
@@ -88,6 +97,9 @@ static const struct _frozen stdlib_modules[] = {
     {"site", _Py_M__site, (int)sizeof(_Py_M__site), false},
     {"stat", _Py_M__stat, (int)sizeof(_Py_M__stat), false},
 
+    /* pythonrun - interactive */
+    {"linecache", _Py_M__linecache, (int)sizeof(_Py_M__linecache), false},
+
     /* runpy - run module with -m */
     {"importlib.util", _Py_M__importlib_util, (int)sizeof(_Py_M__importlib_util), false},
     {"importlib.machinery", _Py_M__importlib_machinery, (int)sizeof(_Py_M__importlib_machinery), false},
index 3c43f7e3bbe8ca2e6161e3cc5cc3ea726d1c5e95..b8b17ceb4f4291c322552fc1bb0f9cd8cbe809e2 100644 (file)
@@ -50,10 +50,10 @@ FROZEN = [
     ('stdlib - startup, without site (python -S)', [
         'abc',
         'codecs',
-        # For now we do not freeze the encodings, due # to the noise all
-        # those extra modules add to the text printed during the build.
-        # (See https://github.com/python/cpython/pull/28398#pullrequestreview-756856469.)
-        #'<encodings.*>',
+        '<encodings>',
+        'encodings.aliases',
+        'encodings.utf_8',
+        'encodings._win_cp_codecs',
         'io',
         ]),
     ('stdlib - startup, with site', [
@@ -66,6 +66,9 @@ FROZEN = [
         'site',
         'stat',
         ]),
+    ('pythonrun - interactive', [
+        'linecache',
+    ]),
     ('runpy - run module with -m', [
         "importlib.util",
         "importlib.machinery",