René's URL Explorer Experiment


Title: gh-113993: Allow interned strings to be mortal, and fix related issues by encukou · Pull Request #120520 · python/cpython · GitHub

Open Graph Title: gh-113993: Allow interned strings to be mortal, and fix related issues by encukou · Pull Request #120520 · python/cpython

X Title: gh-113993: Allow interned strings to be mortal, and fix related issues by encukou · Pull Request #120520 · python/cpython

Description: I've spent too much time looking at this myself, it wants more eyes :) I spent a week learning about the string interning mechanism, and wrote up how I think it should work in an InternalDocs file I'm adding here. I found a bunch of ... quirks if not outright bugs. For example, we have duplicate singletons (e.g. _Py_ID(a) and the latin1 short string a). I don't think I can bring back mortal interned strings without getting my idea of the design in sync with the code, so, this ended up being a big PR. Add an InternalDocs file describing how interning should work and how to use it. (Please review this first!) Add internal functions to explicitly request what kind of interning is done: _PyUnicode_InternMortal _PyUnicode_InternImmortal _PyUnicode_InternStatic Switch uses of PyUnicode_InternInPlace to those. Disallow using _Py_SetImmortal on strings directly. You should use _PyUnicode_InternImmortal instead: Strings should be interned before immortalization, otherwise you're possibly interning a immortalizing copy. _Py_SetImmortal doesn't handle the SSTATE_INTERNED_MORTAL to SSTATE_INTERNED_IMMORTAL update, and those flags can't be changed in backports, as they are now part of public API and version-specific ABI. Add private _only_immortal argument for sys.XXX, used in refleak test machinery. Make sure the statically allocated string singletons are unique. This means these sets are now disjoint: _Py_ID _Py_STR (including the empty string) one-character latin-1 singletons Now, when you intern a singleton, that exact singleton will be interned. Add a _Py_LATIN1_CHR macro, use it instead of _Py_ID/_Py_STR for one-character latin-1 singletons everywhere (including Clinic). Intern _Py_STR singletons at startup. Try this in 3.12: (click to expand) import sys a = sys.intern('') # normal string print('a', id(a), sys.getrefcount(a)) try: raise Exception() except Exception as err: b = err.__traceback__.tb_frame.f_code.co_name # same string via _Py_STR assert sys.intern(a) is sys.intern(b) In 3.13 the reproducer doesn't work but I don't think the underlying unsoundness was fixed. For free-threaded builds, intern _Py_LATIN1_CHR singletons at startup. Beef up the tests. Cover internal details (marked with @cpython_only). Add lots of assertions Issue: gh-113993

Open Graph Description: I've spent too much time looking at this myself, it wants more eyes :) I spent a week learning about the string interning mechanism, and wrote up how I think it should work in an InternalDocs f...

X Description: I've spent too much time looking at this myself, it wants more eyes :) I spent a week learning about the string interning mechanism, and wrote up how I think it should work in an InternalDo...

Opengraph URL: https://github.com/python/cpython/pull/120520

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/commits/:range(.:format)
route-controllerpull_requests
route-actioncommits
fetch-noncev2:a4e68009-6a40-2b22-75be-d649a5ec7ba0
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idBC3C:212DF1:7534EC4:9FD5E20:69960BE7
html-safe-noncea7f92c33f2c02a4bbb7d4a2d3e5b4185bd62192d4f1e95159d33ba01af199c2f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQzNDOjIxMkRGMTo3NTM0RUM0OjlGRDVFMjA6Njk5NjBCRTciLCJ2aXNpdG9yX2lkIjoiNDA0MzYwNDYxMDQxNDA0OTAzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac18ee8f8f1d19875163be01923f0c1134941975fa776119b8bc12eff64568536c
hovercard-subject-tagpull_request:1921291346
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/commits
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
twitter:imagehttps://avatars.githubusercontent.com/u/302922?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/302922?s=400&v=4
og:image:altI've spent too much time looking at this myself, it wants more eyes :) I spent a week learning about the string interning mechanism, and wrote up how I think it should work in an InternalDocs f...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None7490a2fd98baca866acf503b81aa249491b42e5b4bab7f7a2801be81175c8845
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release7df053103622790f523ce252eca7a6472dc73d27
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F120520%2Fcommits%2F85f9fe051ffa48ca594caef6e9ad847abfbaad94
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F120520%2Fcommits%2F85f9fe051ffa48ca594caef6e9ad847abfbaad94
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fcommits&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Reloadhttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Reloadhttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 34.1k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.6k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2.1k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects 31 https://github.com/python/cpython/projects
Security 0 https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
encukouhttps://github.com/encukou
python:mainhttps://github.com/python/cpython/tree/main
encukou:immortal-internedhttps://github.com/encukou/cpython/tree/immortal-interned
Conversation 101 https://github.com/python/cpython/pull/120520
Commits 79 https://github.com/python/cpython/pull/120520/commits
Checks 1 https://github.com/python/cpython/pull/120520/checks
Files changed https://github.com/python/cpython/pull/120520/files
Please reload this pagehttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
gh-113993: Allow interned strings to be mortal, and fix related issues https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94#top
Show all changes 79 commits https://github.com/python/cpython/pull/120520/files
2b74021 Declare explicit interning routines encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/2b7402192aa284103e4be0202cdb136c11780e78
0aedb83 Use _PyUnicode_InternStatic for the statically allocated stuff encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/0aedb83454bc3b444e46f1b0a38261fd23c62973
aad79b2 Add _PyUnicode_InternStatic and extra checks encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/aad79b2e6dff650d26f1d6f40fec608aa8009583
5413223 Check against immortalizing un-interned strings encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/5413223c29c0f2169185d73735930ab233ccb031
23845fb Add _PyUnicode_InternImmortal & make `marshal` use it encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/23845fbeff526d9600413c18aff40eb4f40b2d2c
9ece220 Remove special case that makes previously-immortal strings STATIC encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/9ece2206cc077f5f5c958394288526f9c5a00666
7c62641 Split _PyUnicode_InternMortal and _PyUnicode_InternImmortal encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/7c62641499d0131fd5e5fe75a533c5e8b63ed17f
62a35a1 Do the refcnt dance in _PyUnicode_InternMortal & _PyUnicode_ClearInte… encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/62a35a14b86b26001f5bb48ecdcc437be1a62547
ac55a05 Deallocate mortal interned strings encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/ac55a052049626b6bbef328e33bc91067b7ec7ed
2466ae9 Use _PyUnicode_InternMortal in codecs encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/2466ae926259e8ecf88a9f1b9baa0da44f66ddda
032ac17 Start a notes document encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/032ac17d54740dc802d13181fe9ffa75dae49461
198d9c6 Handle attempts to "overwrite" interned heap types by static ones encukou Jun 10, 2024 https://github.com/python/cpython/pull/120520/commits/198d9c630e368e3879e0996567a9fcd528d05b50
86ccb08 Intern statically allocated non-identifier strings at init encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/86ccb08d7d2e323cd255e6cd30626334139ffc99
e34b8da Parenthesize the LATIN1 macro argument encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/e34b8dac6523a84b2c125589dc97aa85022bd016
66338fe Don't create the per-interp interned_dict until after InitStaticStrings encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/66338fe9a5b6b3d918a146f03131882ac76b93f9
9f16cb0 Move hashmap destroy to _PyUnicode_ClearInterned (symmetry with creat… encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/9f16cb0c99c5486bfc651a271ce7cbb284e0eca8
e27abfc Special-case short string singletons encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/e27abfccc882633e4de80a483c5a8622b0810864
89f24df Verify we don't add process-global entries after a per-interp dict ex… encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/89f24df97e5baad983cda088b81f31e7300a342e
b965acf More editing of the InternalDocs write-up encukou Jun 11, 2024 https://github.com/python/cpython/pull/120520/commits/b965acfc671b4fa3978557e79ed05dc5fb1edac5
4b69712 Only readjust refleak tests for *immortal* interned strings encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/4b69712756d87c612d9cab510cb0717e62113d5d
b2c9865 Be pedantic with the ref total encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/b2c9865a9f74190402411c8db401fb75cbbdfb49
cf7cb72 Split InternInPlace in sysmodule encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/cf7cb72b86fd37eab17e74e802545ffbeeb771f7
85f9fe0 Split InternInPlace in import encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
a288389 Split InternInPlace in getargs encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/a288389e02261e05f01e8dd5463ea35aaf3ffa62
6036cb1 Use mortal strings in type_setattro encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/6036cb1907b4ad27dabe875714d9cc316a67b7e9
01f2dbf Use mortal string in type_module encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/01f2dbfe177ef0303bb31157a5de25e5ccd0c3fb
73f7fb3 Use mortal strings for object attributes encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/73f7fb32ef1a88deb5dde003bb266e185a19c299
13be4e7 Use mortal strings for code object names encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/13be4e742721391a15fe7e13e53071798d1c0d74
1930919 Use mortal strings for code constants encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/1930919e7b245a8ba0eb3bd98cdd0737450a6bc9
d45f20b Use mortals in pickle encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/d45f20b34e2ffc790e48bcc945dc3b8312fd0c35
348d95c Use mortals for PyDict_SetItemString keys encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/348d95cc5e471cb580d692f73fc4091acecb6886
04f080e Use mortals in operator: methodcaller_new encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/04f080e2bfb1328c721555ea16b4efcc0180f718
afe5400 Use mortals in operator: attrgetter_new encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/afe54002da9dba8b6e9d89fd953b749d80aa8660
fe0b8c5 Simplify logic in _PyUnicode_InternImmortal encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/fe0b8c5b79ec86e918d93c4d0b97cdec2b5e9f43
1116191 Immortalize ill interned strings in the free-threaded build encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/1116191128302d7cb60f59d80e37dc338e7a29e5
f10e521 Rewrite the write-up encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/f10e5213191f2cb59734c499d1a8c9cd36c169c3
0787f8f Restore immortalization for PyDict_SetItemString. encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/0787f8f756942abbfbab57ac78547b8cf40cb3d8
0d56eba Intern single-byte (latin1) strings at startup in free-threaded build encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/0d56ebaa5d353a07e0000b0e3e0245852cad3f90
8b32762 Make the three sets of singletons disjoint encukou Jun 12, 2024 https://github.com/python/cpython/pull/120520/commits/8b327628494b0da383fe75f95f8e7061dff2864b
24bf76a One more single-char string in _Py_STR encukou Jun 13, 2024 https://github.com/python/cpython/pull/120520/commits/24bf76a3026dbb6151134682b0c32e496126a27f
2fb04fd Use a less unwieldy name encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/2fb04fd56ffd5b8209c00e2b6fd70c340df80ec7
26fa26e Adjust comments & writeup encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/26fa26e658e6e85937fba559c70c99cf833f2162
9b14dbb Don't call _Py_SetImmortal on strings. encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/9b14dbb41d58dd65398c821040a2b9058d38b735
ac6dfae Beef up the tests encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/ac6dfaee64130073b37580c2813caea829e255ff
a9e91b1 Fix comment encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/a9e91b12279a90d3d5d0373ae7a9be7a472c462d
ee0f068 A bit more thought-through error handling for failed PyDict_Pop encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/ee0f068f77dc79174c1335c24df8a96a56f1a5c8
61bf404 Switch parser to PyUnicode_InternImmortal encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/61bf4044671c4b17a42b2e5e4a8cade391995709
80ce95b Touch up comments encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/80ce95b93d80a0398ce70da125f031314e98770d
70aa294 Switch public PyUnicode API to _PyUnicode_InternImmortal encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/70aa294a3830a7793025bf243531e3d27372e28e
de2ff7f Add an assert to _PyUnicode_EqualToASCIIId encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/de2ff7f60367e30e43d2a4edb298d36f795fcc65
0e6744e Remove #ifdef Py_DEBUG from the body of _PyUnicode_ClearInterned. encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/0e6744e22688d8bc7fc47cc0d0025ee5b09125d5
c50e151 Consolidate the interning logic encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/c50e151db56dd579c88599f8d556148135f76ca1
08798d0 Fix the free-threading initialization encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/08798d000f1fbeb851714e771cdd4ff843ac2efa
62959cd Typo in comments encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/62959cdb33778fb9cc5e748932f2d88cda9e6ecd
f62ccc6 Add blurb encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/f62ccc6121b2262a16050fd38a6113a6e325e0fe
86cf124 Guard call to debug function encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/86cf124614ffeb8f2ce3222c6fa6ee5284bad7b4
f2e857e Avoid -bb warnings in tests encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/f2e857ebf6e556be5ff81ff4e60690da6a9f9b36
6011c05 Add typing to a clinic function encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/6011c055b5147820978322c4a19d8e0a76673ee8
7e8d727 Work around build failure on macOS clang encukou Jun 14, 2024 https://github.com/python/cpython/pull/120520/commits/7e8d7278f4822af1b2e84d7c6c8f8b4e94214229
ccb7f42 Silence a mypy error encukou Jun 17, 2024 https://github.com/python/cpython/pull/120520/commits/ccb7f42b98640a9da527b7732d6404c211d98bdb
e0bb1c2 _PyCodec_Lookup: Immortalize key on success encukou Jun 17, 2024 https://github.com/python/cpython/pull/120520/commits/e0bb1c2fd5bf730cb5e7a5618c42877b6f1c5319
975e4ba getargs.c: Immortalize the kwtuple keys encukou Jun 17, 2024 https://github.com/python/cpython/pull/120520/commits/975e4bace6d5b374bb2fa49290d12dbf86ae8aa7
1c05a60 Don't re-mortalize interned immortals at interpreter shutdown (in non… encukou Jun 17, 2024 https://github.com/python/cpython/pull/120520/commits/1c05a6096f1bc119a4c752018c4c641bc1721ed0
5ac3c5f Avoid `case` label on a declaration (invalid in standard C and, fortu… encukou Jun 17, 2024 https://github.com/python/cpython/pull/120520/commits/5ac3c5fd7e09145778b73f8647411b82ea7ed75b
686d2b6 Merge in the main branch encukou Jun 18, 2024 https://github.com/python/cpython/pull/120520/commits/686d2b6dbfd55898671cf2b996f8545f148a9232
7d79d10 Remove PyUnicode_InternImmortal from the header encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/7d79d1021fda419dd36fa01efcde0c152cbacd0d
d4eb879 Move _Py_LATIN1_CHR to pycore_global_strings.h encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/d4eb8792ac17c38940b1e0e2667bbffabda60e6b
f7df09a Remove mistaken check in _pickle.c encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/f7df09af93972c46d9ac63e1f12591f1549f0dad
fe7fb13 Comment/doc clarifications, rewordings; PEP-7 style encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/fe7fb13b9aec5c846a2b9c866ca0d5a9171c7a4d
7a75099 Add a pedantic DECREF encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/7a7509957744a7bbce0f45eed42c307b30292702
ac402d8 Use more straightforward signatures for the internal functions encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/ac402d8402cb24ded75abbbcd48407c44c931746
aa58c01 Group _PyUnicode_Intern funcs in the header encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/aa58c015d9de0ae552baea86a4b9ac7812cd0330
929d0bc Break out init_global_interned_strings & clear_global_interned_strings encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/929d0bca77917defa030967b9cc386f35d5ffda8
44c0192 Merge in the main branch encukou Jun 19, 2024 https://github.com/python/cpython/pull/120520/commits/44c0192658d0955cf4d842ef9219249df70c33e2
9e3ce44 Fix function declaration encukou Jun 20, 2024 https://github.com/python/cpython/pull/120520/commits/9e3ce44ac89ac2d70b45ec8fab2f108d5325b176
2ebf8a0 Fix return value encukou Jun 20, 2024 https://github.com/python/cpython/pull/120520/commits/2ebf8a0ee1155aa45ca17ff89f5bbf6ca4dfc411
bf49f61 Convert check to assert encukou Jun 20, 2024 https://github.com/python/cpython/pull/120520/commits/bf49f61bd82c192f45447070da02d8f98dd26d7b
6d668e6 Limit _PyUnicode_InternStatic to runtime initialization encukou Jun 20, 2024 https://github.com/python/cpython/pull/120520/commits/6d668e6d6154662a902713119d6cac6ab9140b20
fd8ca83 Add a comment for _Py_hashtable_new_full destroys encukou Jun 20, 2024 https://github.com/python/cpython/pull/120520/commits/fd8ca835982dcc30098101df4217e0d55c3f7857
Clear filters https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Please reload this pagehttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Please reload this pagehttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
Prev https://github.com/python/cpython/pull/120520/commits/cf7cb72b86fd37eab17e74e802545ffbeeb771f7
Next https://github.com/python/cpython/pull/120520/commits/a288389e02261e05f01e8dd5463ea35aaf3ffa62
Please reload this pagehttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94
https://github.com/encukou
encukouhttps://github.com/python/cpython/commits?author=encukou
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L262
Python/import.chttps://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94#diff-28cfc3e2868980a79d93d2ebdc8747dcb9231f3dd7f2caef96e74107d1ea3bf3
View file https://github.com/encukou/cpython/blob/85f9fe051ffa48ca594caef6e9ad847abfbaad94/Python/import.c
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/120520/commits/{{ revealButtonHref }}
https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94#diff-28cfc3e2868980a79d93d2ebdc8747dcb9231f3dd7f2caef96e74107d1ea3bf3
https://github.com/python/cpython/pull/120520/commits/85f9fe051ffa48ca594caef6e9ad847abfbaad94#diff-28cfc3e2868980a79d93d2ebdc8747dcb9231f3dd7f2caef96e74107d1ea3bf3
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.