René's URL Explorer Experiment


Title: gh-116738: Make _json module safe in the free-threading build by eendebakpt · Pull Request #119438 · python/cpython · GitHub

Open Graph Title: gh-116738: Make _json module safe in the free-threading build by eendebakpt · Pull Request #119438 · python/cpython

X Title: gh-116738: Make _json module safe in the free-threading build by eendebakpt · Pull Request #119438 · python/cpython

Description: (updated description) Writing JSON files (or encoding to a string) is not thread-safe in the sense that when encoding data to json while another thread is mutating the data, the result is not well-defined (this is true for both the normal and free-threading build). But the free-threading build can crash the interpreter while writing JSON because of the usage of methods like PySequence_Fast_GET_ITEM. In this PR we make the free-threading build safe by adding locks in three places in the JSON encoder. Reading from a JSON file is safe: objects constructed are only known to the executing thread. Encoding data to JSON needs a bit more care: mutable Python objects such as a list or a dict could be modified by another thread during encoding. When encoding a list use Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST to project against mutation the list When encoding a dict, we use a critical section for iteration over exact dicts (PyDict_Next is used there). The non-exact dicts use PyMapping_Items to create a list of tuples. PyMapping_Items itself is assumed to be thread safe, but the resulting list is not a copy and can be mutated. Update 2025-02-10: refactored to avoid using Py_EXIT_CRITICAL_SECTION_SEQUENCE_FAST Issue: gh-116738 The script below was used to test the free-threading implementation. Similar code was added to the tests. Test script import json from threading import Thread import time class JsonThreadingTest: def __init__(self, number_of_threads=4, number_of_json_dumps=10): self.data = [ [], [], {}, {}, {}] self.json = {str(ii): d for ii, d in enumerate(self.data)} self.results =[] self.number_of_threads=number_of_threads self.number_of_json_dumps =number_of_json_dumps def modify(self, index): while self.continue_thread: for d in self.data: if isinstance(d, list ): if len(d)>20: d.clear() else: d.append(index) else: if len(d)>20: try: d.pop(list(d)[0]) except KeyError: pass else: if index%2: d[index] = index else: d[bytes(index)] = bytes(index) def test(self): self.continue_thread = True self.modifying_threads = [] for ii in range(self.number_of_threads): t = Thread(target=self.modify, args=[ii]) self.modifying_threads.append(t) self.results.clear() for t in self.modifying_threads: print(f'start {t}') t.start() for ii in range(self.number_of_json_dumps): print(f'dump {ii}') time.sleep(0.01) indent = ii if ii%3==0 else None if ii%5==0: try: j = json.dumps(self.data, indent=indent, skipkeys=True) except TypeError: pass else: j = json.dumps(self.data, indent=indent) self.results.append(j) self.continue_thread= False print([hash(r) for r in self.results]) t=JsonThreadingTest(number_of_json_dumps=102, number_of_threads=8) t0=time.time() t.test() dt=time.time()-t0 print(t.results[-1]) print(f'Done: {dt:.2f}') The test script with t=JsonThreadingTest(number_of_json_dumps=102, number_of_threads=8) is a factor 25 faster using free-threading. Nice!

Open Graph Description: (updated description) Writing JSON files (or encoding to a string) is not thread-safe in the sense that when encoding data to json while another thread is mutating the data, the result is not well-...

X Description: (updated description) Writing JSON files (or encoding to a string) is not thread-safe in the sense that when encoding data to json while another thread is mutating the data, the result is not well-...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:1e29bdd4-6cfb-121d-a7b9-2667cc6babe0
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idEB22:1D81B0:1DE73CD:28E03EF:696ABDD0
html-safe-nonce2777faa359f40a737ffdb69cc3c3d8fb65cb57f6754f1e0ea5b4846ac65c2b8f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQjIyOjFEODFCMDoxREU3M0NEOjI4RTAzRUY6Njk2QUJERDAiLCJ2aXNpdG9yX2lkIjoiNjAwNzMxMDk4NTYyMzk0NDY1NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac6ddc0999defa0c5ca632bcdac212ce740026d29cb1dfc4836d87f64352768589
hovercard-subject-tagpull_request:1883321090
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/119438/files
twitter:imagehttps://avatars.githubusercontent.com/u/883786?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/883786?s=400&v=4
og:image:alt(updated description) Writing JSON files (or encoding to a string) is not thread-safe in the sense that when encoding data to json while another thread is mutating the data, the result is not well-...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None46ce962e0e18113ea447391b6ace8b02d4d2861e57b4fbab3658698f73d8855b
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
release30300f30bb3949de255e84a146706a3bdb5c19c9
ui-targetcanary-2
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/119438/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F119438%2Ffiles
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%2F119438%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/119438/files
Reloadhttps://github.com/python/cpython/pull/119438/files
Reloadhttps://github.com/python/cpython/pull/119438/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 33.9k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.1k 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 Uh oh! There was an error while loading. Please reload this page. https://github.com/python/cpython/security
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
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
kumaraditya303https://github.com/kumaraditya303
python:mainhttps://github.com/python/cpython/tree/main
eendebakpt:json_fthttps://github.com/eendebakpt/cpython/tree/json_ft
Conversation 43 https://github.com/python/cpython/pull/119438
Commits 53 https://github.com/python/cpython/pull/119438/commits
Checks 43 https://github.com/python/cpython/pull/119438/checks
Files changed 3 https://github.com/python/cpython/pull/119438/files
gh-116738: Make _json module safe in the free-threading build https://github.com/python/cpython/pull/119438/files#top
Show all changes 53 commits https://github.com/python/cpython/pull/119438/files
da0e917 Make the _json module thread safe eendebakpt May 22, 2024 https://github.com/python/cpython/pull/119438/commits/da0e917ed3cf2766c33b13b1edaed770805af529
3797dfa Update Modules/_json.c eendebakpt May 22, 2024 https://github.com/python/cpython/pull/119438/commits/3797dfac3cf046267b05df9e022e5946ebe6c914
366654c handle goto and return statements eendebakpt May 24, 2024 https://github.com/python/cpython/pull/119438/commits/366654c196d928596023ffd72a7d6497ea7c83f0
5b72cdf Apply suggestions from code review eendebakpt May 25, 2024 https://github.com/python/cpython/pull/119438/commits/5b72cdf3214357cd8908b30a21d59e4fa408da35
c4c24c3 Update Include/internal/pycore_critical_section.h eendebakpt May 25, 2024 https://github.com/python/cpython/pull/119438/commits/c4c24c38a3eabafe929b3dfdb3c602bd10dd11a0
370191b rename macro eendebakpt May 31, 2024 https://github.com/python/cpython/pull/119438/commits/370191b9335a93a618a491de3d89e56ae2512e4d
93c4466 Merge branch 'main' into json_ft eendebakpt May 31, 2024 https://github.com/python/cpython/pull/119438/commits/93c4466b76c6ccc69481803102ece1cc85a2f0a4
eafd3c1 fix typo eendebakpt May 31, 2024 https://github.com/python/cpython/pull/119438/commits/eafd3c1cd92b4e5abfd8e013584de6e9303a47b1
daeec46 Merge branch 'json_ft' of github.com:eendebakpt/cpython into json_ft eendebakpt May 31, 2024 https://github.com/python/cpython/pull/119438/commits/daeec4675338c6964da8e8ebc77747a88ef45767
d54baf2 fix missing to exit critical section eendebakpt Jun 4, 2024 https://github.com/python/cpython/pull/119438/commits/d54baf2049a71956b26c45e67fe31bf4601517e8
e5fa305 revert changes to tests eendebakpt Jun 4, 2024 https://github.com/python/cpython/pull/119438/commits/e5fa305ad7842d71a552b9d97431e7b56a2604fb
d4ddf5d 📜🤖 Added by blurb_it. blurb-it[bot] Jun 4, 2024 https://github.com/python/cpython/pull/119438/commits/d4ddf5dcab9f8f0b9bc5eede9f9d96f0b07d1df9
67d942f Merge branch 'main' into json_ft eendebakpt Jun 4, 2024 https://github.com/python/cpython/pull/119438/commits/67d942f3447f615c8afd7be8cd73ac04597f17cf
4ffc1b2 Merge branch 'main' into json_ft eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/4ffc1b2e5b6576ef2659a99c7c28f36d9297e85f
384ca59 sync with main eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/384ca59bf6ed251f8681c8ba9e0a6607a614c678
64e20aa sync with main eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/64e20aa80bffb98437775f8c21ec2299adf2b806
e6ce9c9 update news entry eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/e6ce9c9936e71fefe351a6a2f0e8544216cfca9d
34885a0 fix normal build eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/34885a02f5dad38b7e3f98393f6cd382ef6b29dd
2fe760b Merge branch 'main' into json_ft eendebakpt Aug 14, 2024 https://github.com/python/cpython/pull/119438/commits/2fe760bc6a420dfba386d55cb0ad611f7181f481
eebccac add lock around result of PyMapping_Items eendebakpt Aug 15, 2024 https://github.com/python/cpython/pull/119438/commits/eebccac0f005a83ed459af42a5a3c0f87d70ef02
db8947c add tests eendebakpt Aug 15, 2024 https://github.com/python/cpython/pull/119438/commits/db8947cef5acf1fd5751ac5f5e932e43a464e872
c19ad14 fix argument of Py_END_CRITICAL_SECTION_SEQUENCE_FAST eendebakpt Aug 15, 2024 https://github.com/python/cpython/pull/119438/commits/c19ad14886ac198a8329960bd1732d71c6bcd077
8b12e0f Merge branch 'main' into json_ft eendebakpt Feb 10, 2025 https://github.com/python/cpython/pull/119438/commits/8b12e0fc5c1e430fd3e66745a15b6a5e3fcaa5cf
78d3595 avoid Py_EXIT_CRITICAL_SECTION_SEQUENCE_FAST eendebakpt Feb 10, 2025 https://github.com/python/cpython/pull/119438/commits/78d35951565b47f0c359276a5cbcb46e08170856
6e8615f use barriers in test eendebakpt Feb 10, 2025 https://github.com/python/cpython/pull/119438/commits/6e8615fc05420c6ade77fdea4a2cfb9f6b198eb5
39ebc00 typo eendebakpt Feb 10, 2025 https://github.com/python/cpython/pull/119438/commits/39ebc007108591d0de2bfa2f7eb0452ce6952e70
7c5b185 whitespace eendebakpt Feb 10, 2025 https://github.com/python/cpython/pull/119438/commits/7c5b18508005803855cb630d25d4dddabdf5649d
adf78c7 Merge branch 'main' into json_ft eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/adf78c7ffeb86b22b6f953f1149af133b8f62205
acd0ad1 resolve merge conflicts eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/acd0ad1eb7ef1dba1a2bb1a4f80c5ba4de0f14f5
41e3dee Update Misc/NEWS.d/next/Core_and_Builtins/2024-06-04-20-26-21.gh-issu… eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/41e3deef334f7d67e823f52831412066493d2179
75884cb cleanup eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/75884cbded1b9678031aef4e241eb251bd98843f
0424c58 Merge branch 'json_ft' of github.com:eendebakpt/cpython into json_ft eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/0424c585090641b3b5d30759690690f840bfbf5b
9c964f9 Merge branch 'main' into json_ft eendebakpt Jun 24, 2025 https://github.com/python/cpython/pull/119438/commits/9c964f9091a7f7fc2a90024b480de615b2963920
5acc999 Merge branch 'main' into json_ft eendebakpt Jul 28, 2025 https://github.com/python/cpython/pull/119438/commits/5acc9992e924d778065c70127b5cb8f7e614f631
5173373 format eendebakpt Jul 28, 2025 https://github.com/python/cpython/pull/119438/commits/5173373c14b96670d68589aa10962476bba1ff6a
7d00562 only use items locally in encoder_listencode_dict eendebakpt Aug 6, 2025 https://github.com/python/cpython/pull/119438/commits/7d00562bf01b49f4dc488f4700b9beaaa53bd085
00f4d7f Merge branch 'main' into json_ft eendebakpt Aug 14, 2025 https://github.com/python/cpython/pull/119438/commits/00f4d7fd568f4822dce44f8da3d17cb1e6850578
b95c07f use strong references in iteration eendebakpt Aug 24, 2025 https://github.com/python/cpython/pull/119438/commits/b95c07fb0709c24fa14be1f5460a8e463f19b27c
cedc2c3 Merge branch 'main' into json_ft eendebakpt Aug 24, 2025 https://github.com/python/cpython/pull/119438/commits/cedc2c38871a00c8cda300bfcd0dfea089773a56
0ca453d replace Py_IncRef with Py_INCREF eendebakpt Aug 26, 2025 https://github.com/python/cpython/pull/119438/commits/0ca453d6a0f90fd59fbdd583e9f3c1c6ce4d4d3d
45544f3 Update Modules/_json.c eendebakpt Aug 27, 2025 https://github.com/python/cpython/pull/119438/commits/45544f3e3759f39190eee6a409619ed6a5fda015
dcb088e Apply suggestion from @kumaraditya303 kumaraditya303 Aug 27, 2025 https://github.com/python/cpython/pull/119438/commits/dcb088e9b7cd6d9eb735e5529c52c1dc19806261
5f8ad07 add header kumaraditya303 Aug 27, 2025 https://github.com/python/cpython/pull/119438/commits/5f8ad072b53f1be380296365a4c6445cd314173e
61bc8d1 Apply suggestions from code review eendebakpt Aug 27, 2025 https://github.com/python/cpython/pull/119438/commits/61bc8d1d406d9ede4206d7d5652904925d9ccba0
f85b695 review comments eendebakpt Aug 28, 2025 https://github.com/python/cpython/pull/119438/commits/f85b69523d26cd0ca18bae1cd5255a56a260c27f
2c0cd18 use _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED eendebakpt Aug 28, 2025 https://github.com/python/cpython/pull/119438/commits/2c0cd18f3c46eb8607e72b33c15af5f69d3f916e
c133b71 remove testing code eendebakpt Aug 29, 2025 https://github.com/python/cpython/pull/119438/commits/c133b71692df7f06312090ebd0941f2d415a3a3d
7609117 Merge branch 'main' into json_ft eendebakpt Aug 29, 2025 https://github.com/python/cpython/pull/119438/commits/760911798c68b1bd8c99dc226dbd29e9a87048a4
7656a2a add incref/decref to fast seq iteration eendebakpt Aug 30, 2025 https://github.com/python/cpython/pull/119438/commits/7656a2adaa90af7aa000cb5de5dcdad6c5392b9c
1920aed Merge branch 'json_ft' of github.com:eendebakpt/cpython into json_ft eendebakpt Aug 30, 2025 https://github.com/python/cpython/pull/119438/commits/1920aed16b59267edfc6cce8442cf0caa3a06037
d5d65ab fix eendebakpt Aug 30, 2025 https://github.com/python/cpython/pull/119438/commits/d5d65abfb48f0b4116a53a190d551fc155c8200a
4a16e18 fix eendebakpt Aug 30, 2025 https://github.com/python/cpython/pull/119438/commits/4a16e18da36b7f2db6ccb03b5153229231a46689
00139f3 Update Modules/_json.c kumaraditya303 Aug 30, 2025 https://github.com/python/cpython/pull/119438/commits/00139f3d698a6546402a9d69f0bc91fdf531455f
Clear filters https://github.com/python/cpython/pull/119438/files
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
test_json.py https://github.com/python/cpython/pull/119438/files#diff-d150d591abcf9e99e40fb0fe98e2ae45b4f98fb05c788ab7577a5cce9c731593
2024-06-04-20-26-21.gh-issue-116738.q_hPYq.rst https://github.com/python/cpython/pull/119438/files#diff-447bcecef4e1539613e3b595886b8f4c49bd0e8c2e87b5fc7c541eaaa13ad4cc
_json.c https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
Lib/test/test_free_threading/test_json.pyhttps://github.com/python/cpython/pull/119438/files#diff-d150d591abcf9e99e40fb0fe98e2ae45b4f98fb05c788ab7577a5cce9c731593
View file https://github.com/eendebakpt/cpython/blob/00139f3d698a6546402a9d69f0bc91fdf531455f/Lib/test/test_free_threading/test_json.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/119438/{{ revealButtonHref }}
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
Misc/NEWS.d/next/Core_and_Builtins/2024-06-04-20-26-21.gh-issue-116738.q_hPYq.rsthttps://github.com/python/cpython/pull/119438/files#diff-447bcecef4e1539613e3b595886b8f4c49bd0e8c2e87b5fc7c541eaaa13ad4cc
View file https://github.com/eendebakpt/cpython/blob/00139f3d698a6546402a9d69f0bc91fdf531455f/Misc/NEWS.d/next/Core_and_Builtins/2024-06-04-20-26-21.gh-issue-116738.q_hPYq.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/119438/{{ revealButtonHref }}
Modules/_json.chttps://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
View file https://github.com/eendebakpt/cpython/blob/00139f3d698a6546402a9d69f0bc91fdf531455f/Modules/_json.c
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/119438/{{ revealButtonHref }}
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
Please reload this pagehttps://github.com/python/cpython/pull/119438/files
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
https://github.com/python/cpython/pull/119438/files#diff-efe183ae0b85e5b8d9bbbc588452dd4de80b39fd5c5174ee499ba554217a39ed
Please reload this pagehttps://github.com/python/cpython/pull/119438/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.