René's URL Explorer Experiment


Title: gh-115999: Specialize `LOAD_ATTR` for instance and class receivers in free-threaded builds by mpage · Pull Request #128164 · python/cpython · GitHub

Open Graph Title: gh-115999: Specialize `LOAD_ATTR` for instance and class receivers in free-threaded builds by mpage · Pull Request #128164 · python/cpython

X Title: gh-115999: Specialize `LOAD_ATTR` for instance and class receivers in free-threaded builds by mpage · Pull Request #128164 · python/cpython

Description: This PR finishes specialization forLOAD_ATTR in the free-threaded build by adding support for class and instance receivers. The bulk of it is dedicated to making the specialized instructions and the specialization logic thread-safe. This consists of using atomics / locks in the appropriate places, avoiding races in specialization related to reloading versions, and ensuring that the objects stored in inline caches remain valid when accessed (by only storing deferred objects). See the section on "Thread Safety" below for more details. Additionally, making this work required a few unrelated changes to fix existing bugs or work around differences between the two builds that results from only storing deferred values (which causes in specialization failures in the free-threaded build when a value that would be stored in the cache is not deferred): Fixed a bug in the cases generator where it wasn't treating macro tokens as terminators when searching for the assignment target of an expression involving PyStackRef_FromPyObjectNew. Refactored test_descr.MiscTests.test_type_lookup_mro_reference to work when specialization fails (and also be a behavorial test). Temporarily skip test_capi.test_type.TypeTests.test_freeze_meta when running refleaks tests on free-threaded builds. Specialization failure triggers an existing bug. Single-threaded Performance Performance is improved by ~12% on free-threaded builds. Performance is ~neutral on default builds. (Technically the benchmark runner reports a 0.2% improvement, but that looks like noise to me.) We're leaving a bit of perf on the table by only storing deferred objects: we can't specialize attribute lookups that resolve to class attributes (e.g. counters, settings). I haven't measured how much perf we're giving up, but I'd like to address that in a separate PR. Scalability The object_cfunction and pymethod benchmarks are improved (1.4x slower -> 14.3x faster, 1.8x slower -> 13.0x faster, respectively). Other benchmarks appear unchanged. I would expect that cmodule_function would also improve, but it looks like the benchmark is bottlenecked on increfing the int.__floor__ method that is returned from the call to _PyObject_LookupSpecial in math_floor (the incref happens in _PyType_LookupRef, which is called by PyObject_LookupSpecial): cpython/Modules/mathmodule.c Line 1178 in 3879ca0 PyObject *method = _PyObject_LookupSpecial(number, state->str___floor__); Raw numbers: Running benchmarks with 28 threads Merge-base This PR object_cfunction 1.4x slower 14.3x faster cmodule_function 1.7x slower 1.7x slower mult_constant 12.8x faster 13.6x faster generator 11.5x faster 12.2x faster pymethod 1.8x slower 13.4x faster pyfunction 12.2x faster 13.0x faster module_function 14.5x faster 14.8x faster load_string_const 13.0x faster 13.2x faster load_tuple_const 12.7x faster 14.1x faster create_pyobject 12.8x faster 13.5x faster create_closure 13.9x faster 14.8x faster create_dict 10.5x faster 13.3x faster thread_local_read 3.9x slower 4.0x slower Thread Safety Thread safety of specialized instructions is addressed in a few different ways: Use atomics where needed. Lock the instance dictionary in _LOAD_ATTR_WITH_HINT. Only store deferred objects in the inline cache. All uops that retrieve objects from the cache are preceded by type version guards, which ensure that the (deferred) value retrieved from the cache is valid. The type version will be mutated before destroying the reference in the type. If the type held the last reference, then GC will need to run in order to reclaim the object. GC requires stopping the world, so if GC reclaims the object then we will see the new type version and the guard will fail. Thread safety of specialization is addressed using similar techniques: Atomics / locking is used to access shared state. Specialization code is refactored to read versions at the start of specialization and store the same version in caches (as opposed to rereading the version). This ensures that the specialization is consistent with the version by avoiding races where the type or shared keys dictionary changes after we've queried it. Stats Following the instructions in the comment preceding specialize_attr_loadclassattr, I collected stats for the default build for both this PR and its merge base using ./python -m test_typing test_re test_dis test_zlib and compared them using Tools/scripts/summarize_stats.py. The results for LOAD_ATTR are nearly identical and are consistent with results from comparing the merge base against itself: Comparison Raw stats for merge base Raw stats for PR Issue: gh-115999

Open Graph Description: This PR finishes specialization forLOAD_ATTR in the free-threaded build by adding support for class and instance receivers. The bulk of it is dedicated to making the specialized instructions and th...

X Description: This PR finishes specialization forLOAD_ATTR in the free-threaded build by adding support for class and instance receivers. The bulk of it is dedicated to making the specialized instructions and th...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:39d7be42-67e7-134e-c2e4-7b0973989326
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8FD0:C60D:116D7C:190E23:6A571F4E
html-safe-nonce6a98e9f620869b72a7aee675afb505fdbb2250fee1cf897e44906e810083e6de
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RkQwOkM2MEQ6MTE2RDdDOjE5MEUyMzo2QTU3MUY0RSIsInZpc2l0b3JfaWQiOiI1OTIwNTMyNDY4NTAzODc5NTAyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac0fd2a6d668bdecad1b6737fd485c5df4576588fe161bdb9b7559d837f7f039da
hovercard-subject-tagpull_request:2248157969
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/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python/cpython/pull/128164/files
twitter:imagehttps://avatars.githubusercontent.com/u/577841?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/577841?s=400&v=4
og:image:altThis PR finishes specialization forLOAD_ATTR in the free-threaded build by adding support for class and instance receivers. The bulk of it is dedicated to making the specialized instructions and th...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None4e7a7296a3830877cf21a6ad2a972c9e618a48915e03966cf0c53eb08e5aad98
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 full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2576d1f0198cf1588faf2edf27f1ed120903be10
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/128164/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F128164%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
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
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
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/enterprise/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%2F128164%2Ffiles
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%2Ffiles&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/128164/files
Reloadhttps://github.com/python/cpython/pull/128164/files
Reloadhttps://github.com/python/cpython/pull/128164/files
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 35k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 73.8k 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.3k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security and quality 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 and quality 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
mpagehttps://github.com/mpage
python:mainhttps://github.com/python/cpython/tree/main
mpage:gh-115999-load-attr-instance-mergedhttps://github.com/mpage/cpython/tree/gh-115999-load-attr-instance-merged
Conversation 38 https://github.com/python/cpython/pull/128164
Commits 75 https://github.com/python/cpython/pull/128164/commits
Checks 0 https://github.com/python/cpython/pull/128164/checks
Files changed https://github.com/python/cpython/pull/128164/files
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
gh-115999: Specialize LOAD_ATTR for instance and class receivers in free-threaded builds https://github.com/python/cpython/pull/128164/files#top
Show all changes 75 commits https://github.com/python/cpython/pull/128164/files
8eeb4fe Add _PyDictKeys_StringLookupAndVersion mpage Dec 10, 2024 https://github.com/python/cpython/pull/128164/commits/8eeb4feb4fdae95e86f8cc3bf622efd82a9381e5
fcd05a0 Pass shared keys version to specialization mpage Dec 10, 2024 https://github.com/python/cpython/pull/128164/commits/fcd05a0c692d1ba21929ef008f959411d27dcd5d
5c03db0 Add support for enabling each of the instance attribute kinds mpage Dec 10, 2024 https://github.com/python/cpython/pull/128164/commits/5c03db067013cfa6bc9e2683f776ad8c8cdda28b
a576748 Only cache deferred descriptors mpage Dec 10, 2024 https://github.com/python/cpython/pull/128164/commits/a576748efbc80de4117278d25b815a6b7576c39c
8475fd6 Make analyze_descriptor thread-safe mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/8475fd6822f5cc7eca37bb75e24d3a47f836c42f
29c3356 Use an atomic load for GUARD_TYPE_VERSION mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/29c33564b4672a59e6b2321a3ebfc9e664252b5c
4f9eeb3 Use atomics to load valid bit for inline values in _GUARD_DORV_VALUES… mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/4f9eeb3b10dfddaacfd9cbfc9d8ee3ece32def93
e9050fc Use atomic to load keys version in _GUARD_KEYS_VERSION mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/e9050fc925dadd0cb7eb69e225bc7d4e8b05800a
ade57f2 Use an atomic load for managed dict in `_CHECK_ATTR_METHOD_LAZY_DICT` mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/ade57f233d44fa8ce5b97e4dca184ac6e8151ce1
0a87264 Enable specialization of method loads mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/0a87264a5f87917b3892cde0548672fcc433a9df
816e22f Use atomics for fetching type flags mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/816e22f17cc150e3e48b624122b74de40577fb12
ca1e232 Get a strong reference to dict in instance_has_key mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/ca1e232d1a8ae47782f7dfac3eb79d2d92efb3d8
945b61c Split specialize_dict_access mpage Dec 11, 2024 https://github.com/python/cpython/pull/128164/commits/945b61c2d9d10275aea9156d9ca8057cb9c00e5c
feb7d34 Pass type version to specialize_dict_access mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/feb7d340f25908b3b91640b76f92ca30c44bc0ef
ecfd199 Take a critical section around dict specialization mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/ecfd199b81282b8d47a44ab296139cc4dcc93dc2
9fda5db Use thread-safe version of _PyDictKeys_StringLookup mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/9fda5dbc6dad4a515f72c89b761eae82fc9cd526
3b2c220 Use atomic load in _CHECK_MANAGED_OBJECT_HAS_VALUES mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/3b2c22035788c9cdd272347d0fc38f39f779d491
408e44b Make _LOAD_ATTR_INSTANCE_VALUE thread-safe mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/408e44b23b1c3dcb9586400e71adc09ac345522e
16aab70 Make _LOAD_ATTR_WITH_HINT thread-safe mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/16aab70d79ca5f54ec6b289826ec90cbbd815414
d0920ea Specialize instance accesses mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/d0920ea8241eede3f7a1fb676354cf0871a09242
e7cea82 Specialize LOAD_ATTR_SLOT mpage Dec 12, 2024 https://github.com/python/cpython/pull/128164/commits/e7cea822b355e3b7eef29ef80ac97497546bdf06
8dac8c4 Enable LOAD_ATTR_PROPERTY mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/8dac8c4149dc2f9d3269406dcc599b65b32a0268
d29b3aa Checkpoint LOAD_ATTR_GETATTRIBUTE_OVERRIDEN mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/d29b3aaf0ce378e92a21498271bd65993a7efc84
b0b8102 Lock dict in instance_has_key mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/b0b8102fc1f13a63b2200b3dc151804f19fcd789
85dab0d Lock dict instead of owner when specializing for dict access mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/85dab0db71a7a0281589afc38a6e0f1a89caee0f
581869e Use atomic load for valid bit mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/581869e78225e3d3723d47c7837d0263316a3c80
96be738 Use _PyDictKeys_StringLookup and lock around it, rather than wasting … mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/96be738b2a9d868b115819815dda9ad6b3eee1e3
9afe052 Fix cases_generator bug mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/9afe05243fc0e9f120481ade4cfa2812d0aa962e
e190a0d Fix load mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/e190a0d5f25f35444fb19f6fd11092ce81d6c891
8c78369 Remove FT_UNIMPLEMENTED mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/8c7836955917ca1de0b5ed093b537b069ed9fa48
cdf8eb5 Specialize class attribute loads mpage Dec 13, 2024 https://github.com/python/cpython/pull/128164/commits/cdf8eb554f9955e78b87cdc3e89dea6878583cee
1398699 Fix test_type_lookup_mro_reference mpage Dec 14, 2024 https://github.com/python/cpython/pull/128164/commits/1398699b2ede82473ca04927daebd0b53271fe3d
3fbe18b Remove TYPE_CHANGED mpage Dec 14, 2024 https://github.com/python/cpython/pull/128164/commits/3fbe18b67b8d27532e901cbf07cb03d25bb79edd
5aa68cc Misc clean ups mpage Dec 14, 2024 https://github.com/python/cpython/pull/128164/commits/5aa68ccfc6fd37b8fa1e640ab70f6892f4fa2f0a
e1bf1f4 Check that inline values still valid after taking CS mpage Dec 14, 2024 https://github.com/python/cpython/pull/128164/commits/e1bf1f4ddc036f475df3edf2d8b67c9f7f613a59
396edb1 Enable test_opcache tests mpage Dec 18, 2024 https://github.com/python/cpython/pull/128164/commits/396edb1a0525f1654173a226374bb458bf9c4a3b
e5e2508 Skip test that triggers gh-127773 in refleak tests mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/e5e2508624f103f8995d2f057f8afe4fcec699d7
fa02260 Merge branch 'main' into gh-115999-load-attr mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/fa02260163195d42b40e82163177919195331b1d
47c794f Add test for LOAD_ATTR_CLASS_WITH_METACLASS_CHECK mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/47c794f7589bf9c5f2a0906400cbe3f8fa2a0fe3
3876bc7 Undo workaround for cases generator bug mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/3876bc7e862be7694f4d7f95e8681755192adbbc
08d14d0 Fix whitespace after merge mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/08d14d02580c7acae7e1a612c06f01fc08545ed8
56e9a8a Double check that dict hasn't changed after locking it mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/56e9a8a049319c064b618ca5aae8a3267a202f0c
8ca405b Use correct type for loading type version mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/8ca405ba22831a1dde29df4761f173b45258e996
4c7a4b9 Remove unnecessary comma mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/4c7a4b98299b0fe42a08b2367785383e993df4a2
1b787b3 Use atomics when loading oparg mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/1b787b3f733938de76aafb93de67dc2fceca3bca
b868363 Fix formatting mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/b86836307e9918a975af706e4ddaf377a4bcefc7
d6d4c73 Always return type version from analyze_descriptor_load mpage Dec 20, 2024 https://github.com/python/cpython/pull/128164/commits/d6d4c73065fc3e1fe5746b5c10309fad14a89a7f
9755562 Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/9755562a7dc4dc4d92881837b92b41aab4a9a4db
9673f78 Combine incref/steal into new stackref mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/9673f78320fca55654f8fb0a2b40d5aee744880f
6c3041f Fix formatting mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/6c3041f55d2210c7b40986c6731ac5f58caa3ff9
a20a4a4 Remove unnecessary error check for PyUnicode_Type.tp_hash mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/a20a4a4f82e54f693b363e4764971fe28438c96b
35b31c6 Check keys kind explicitly mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/35b31c69399a3a741eee6a41c1d0719f28fd0add
e5a7ae9 Pass dict from `_CHECK_ATTR_WITH_HINT` to `_LOAD_ATTR_WITH_HINT` mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/e5a7ae93256e9412ac1fdbcc2ee32f7cb73417bb
bb00f5a Fix unused variable warning mpage Dec 23, 2024 https://github.com/python/cpython/pull/128164/commits/bb00f5ac82ef7038f35715c43f227edbee1e947f
b6ae487 Update number of specialization failure kinds mpage Dec 24, 2024 https://github.com/python/cpython/pull/128164/commits/b6ae487d6b61a3225e6e3c3bc23127b965e0c604
11a351d Clarify construction of deferred object mpage Dec 24, 2024 https://github.com/python/cpython/pull/128164/commits/11a351da3a0edb616dc5acf77e47b54a794cec22
6f8aebf Add suppression for _PyUnicode_CheckConsistency mpage Dec 24, 2024 https://github.com/python/cpython/pull/128164/commits/6f8aebf58e1302b9ae740d45b720ec5168ee30c7
07b7c20 Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/07b7c206cf8fa8b085cf7114f391f492d1a5f981
1870885 Fix compiler warning mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/187088519be53a800700c3971c59b86dd637f77e
f1fdcc6 Make it easier to reason about thread-safety of instance_has_key mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/f1fdcc608ca5414e9f56491f96ee34fb6da8938c
8b71951 Restore refactor lost in merge mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/8b71951df67f38c95076c7236d8e71c5337875a9
7190a2e Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/7190a2e3498062ca221e146c272bebc12efc080a
8b96368 Revert "Add suppression for _PyUnicode_CheckConsistency" mpage Jan 2, 2025 https://github.com/python/cpython/pull/128164/commits/8b96368e6604ec3c0a47526230fe8ab8eebbc403
db02869 Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 8, 2025 https://github.com/python/cpython/pull/128164/commits/db0286924599f13569c076e9ba964a0268859a54
dc3ba7f Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 9, 2025 https://github.com/python/cpython/pull/128164/commits/dc3ba7f5eafcd2ee61f1f59df8145a6ecba3ed7c
e07fb62 Split check_keys_and_hash mpage Jan 9, 2025 https://github.com/python/cpython/pull/128164/commits/e07fb62a62213f303a065f719ddd03fd580223ab
a3f89b7 Clear inline values upon invalidation mpage Jan 9, 2025 https://github.com/python/cpython/pull/128164/commits/a3f89b7d13d2074fbc02b4eedd81be174bfef1c7
3baa840 Replace kill/pop_dead_inputs with pop_input mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/3baa8400a53a4237b7fe2ca83468d7e6e34345fe
9250e4e Fix formatting mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/9250e4e67a78c556ff4a73fe61e2cbba1166592f
675eb82 Fix visibility mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/675eb8291fa775697e1263905ab5177ed01c1a41
d24dc3a Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/d24dc3ab141e149758b99b29408573ad2e42f775
10d693d Use release instead of seq_cst mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/10d693d19a523cb7ef00cca34c8c325e8b12ee4c
7ab3ec6 Make POP_INPUT take the name of the TOS mpage Jan 10, 2025 https://github.com/python/cpython/pull/128164/commits/7ab3ec65ed4947af23b13df8827fef2e9aecee93
8c70ea4 Merge branch 'main' into gh-115999-load-attr-instance-merged mpage Jan 14, 2025 https://github.com/python/cpython/pull/128164/commits/8c70ea4139031b79942def3a6f52359b1c2d38d8
3616eab Use DECREF_INPUTS() instead of manually closing inputs mpage Jan 14, 2025 https://github.com/python/cpython/pull/128164/commits/3616eab97d05db99b013321a2db19a60fdbc1b98
Clear filters https://github.com/python/cpython/pull/128164/files
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
pystats.h https://github.com/python/cpython/pull/128164/files#diff-08d003e38869bbf9d9a0d6d696595f048d181aa002e15f9477735e3a922d1bc6
pycore_dict.h https://github.com/python/cpython/pull/128164/files#diff-47692c69ef97b2d7cf05ad8e0fa2024b575af96abf9bbc5486f71156ab67ede4
pycore_opcode_metadata.h https://github.com/python/cpython/pull/128164/files#diff-72bc4c0445516cc3eabd536220b2459617491ffaabbdb8a7c5381f36c991e378
pycore_uop_metadata.h https://github.com/python/cpython/pull/128164/files#diff-55e65a72fa31e9b746e03076d2c74b716c0c1171663f36960b2339fcbfae9bab
test_type.py https://github.com/python/cpython/pull/128164/files#diff-a8af649883f1fd6cc5d4e25b372482d85955a7f65a3451acf2d4f28dee757578
test_descr.py https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
test_generated_cases.py https://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
test_opcache.py https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
dictobject.c https://github.com/python/cpython/pull/128164/files#diff-b08a47ddc5bc20b2e99ac2e5aa199ca24a56b994e7bc64e918513356088c20ae
bytecodes.c https://github.com/python/cpython/pull/128164/files#diff-729a985b0cb8b431cb291f1edb561bbbfea22e3f8c262451cd83328a0936a342
executor_cases.c.h https://github.com/python/cpython/pull/128164/files#diff-a1c3430c42a66c16e6d2e154491a6da993b187b27c628545a12a02c7b2a06b81
generated_cases.c.h https://github.com/python/cpython/pull/128164/files#diff-4ef46fa654f95502e49a24f7dc8ee31a4cac9b3433fe9cd2b2d4dd78cfbad448
optimizer_bytecodes.c https://github.com/python/cpython/pull/128164/files#diff-e5bd2b14b0b10f0f47786e26306d689ed1361c3dc3b11dcc3ea52b8a2422ff64
optimizer_cases.c.h https://github.com/python/cpython/pull/128164/files#diff-ed4567b3e67709ec57bf4df91ef058cfcbe00d7da11cd2a75e38241fa1ca99d2
specialize.c https://github.com/python/cpython/pull/128164/files#diff-22e653d878778ca28317261f7826545288d02fd9980cf485d0329f28a34993f2
analyzer.py https://github.com/python/cpython/pull/128164/files#diff-bf1d5618934b787df486d8077f48217f17bf4321b9a151528f67b6e6f383976b
generators_common.py https://github.com/python/cpython/pull/128164/files#diff-762826c344c1cd1f4e2f8f91a20c1a7194b3b25585a1f56a5c3b716d8088c21f
stack.py https://github.com/python/cpython/pull/128164/files#diff-942c1702cb69a4b71b8af26c60c81c1550fccf8e8a7f521b83efe6a814ed1b62
Include/cpython/pystats.hhttps://github.com/python/cpython/pull/128164/files#diff-08d003e38869bbf9d9a0d6d696595f048d181aa002e15f9477735e3a922d1bc6
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Include/cpython/pystats.h
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-08d003e38869bbf9d9a0d6d696595f048d181aa002e15f9477735e3a922d1bc6
https://github.com/python/cpython/pull/128164/files#diff-08d003e38869bbf9d9a0d6d696595f048d181aa002e15f9477735e3a922d1bc6
Include/internal/pycore_dict.hhttps://github.com/python/cpython/pull/128164/files#diff-47692c69ef97b2d7cf05ad8e0fa2024b575af96abf9bbc5486f71156ab67ede4
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Include/internal/pycore_dict.h
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-47692c69ef97b2d7cf05ad8e0fa2024b575af96abf9bbc5486f71156ab67ede4
https://github.com/python/cpython/pull/128164/files#diff-47692c69ef97b2d7cf05ad8e0fa2024b575af96abf9bbc5486f71156ab67ede4
Include/internal/pycore_opcode_metadata.hhttps://github.com/python/cpython/pull/128164/files#diff-72bc4c0445516cc3eabd536220b2459617491ffaabbdb8a7c5381f36c991e378
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Include/internal/pycore_opcode_metadata.h
Open in desktop https://desktop.github.com
how customized files appear on GitHubhttps://docs.github.com/github/administering-a-repository/customizing-how-changed-files-appear-on-github
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
Include/internal/pycore_uop_metadata.hhttps://github.com/python/cpython/pull/128164/files#diff-55e65a72fa31e9b746e03076d2c74b716c0c1171663f36960b2339fcbfae9bab
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Include/internal/pycore_uop_metadata.h
Open in desktop https://desktop.github.com
how customized files appear on GitHubhttps://docs.github.com/github/administering-a-repository/customizing-how-changed-files-appear-on-github
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
Lib/test/test_capi/test_type.pyhttps://github.com/python/cpython/pull/128164/files#diff-a8af649883f1fd6cc5d4e25b372482d85955a7f65a3451acf2d4f28dee757578
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Lib/test/test_capi/test_type.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-a8af649883f1fd6cc5d4e25b372482d85955a7f65a3451acf2d4f28dee757578
https://github.com/python/cpython/pull/128164/files#diff-a8af649883f1fd6cc5d4e25b372482d85955a7f65a3451acf2d4f28dee757578
https://github.com/python/cpython/pull/128164/files#diff-a8af649883f1fd6cc5d4e25b372482d85955a7f65a3451acf2d4f28dee757578
Lib/test/test_descr.pyhttps://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Lib/test/test_descr.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
https://github.com/python/cpython/pull/128164/files#diff-6b813570d02ae3544e7e0233ae21d647f8e2dc47486495557e8d16c80460e85b
Lib/test/test_generated_cases.pyhttps://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Lib/test/test_generated_cases.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
https://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
https://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
https://github.com/python/cpython/pull/128164/files#diff-9168c63f7de36279d370ea7d6403f554f48e6da75e82b6b70b5a207a11848750
Lib/test/test_opcache.pyhttps://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
View file https://github.com/mpage/cpython/blob/3616eab97d05db99b013321a2db19a60fdbc1b98/Lib/test/test_opcache.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/128164/{{ revealButtonHref }}
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
https://github.com/python/cpython/pull/128164/files#diff-dd88a1417bab2a9400460e629e7e43a3f6e798e47b44fe3541f3f804f12430d1
Please reload this pagehttps://github.com/python/cpython/pull/128164/files
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.