René's URL Explorer Experiment


Title: GH-148937: fix for free-threaded GC (RSS based defer) by nascheme · Pull Request #148940 · python/cpython · GitHub

Open Graph Title: GH-148937: fix for free-threaded GC (RSS based defer) by nascheme · Pull Request #148940 · python/cpython

X Title: GH-148937: fix for free-threaded GC (RSS based defer) by nascheme · Pull Request #148940 · python/cpython

Description: The Python programming language. Contribute to python/cpython development by creating an account on GitHub.

Open Graph Description: Asking the OS for the process memory usage doesn't work well given how mimalloc works. It does not promptly return memory to the OS and so the memory doesn't drop after cyclic trash is fre...

X Description: Asking the OS for the process memory usage doesn't work well given how mimalloc works. It does not promptly return memory to the OS and so the memory doesn't drop after cyclic tras...

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

X: @github

direct link

Domain: github.com

route-pattern/_view_fragments/voltron/pull_requests/show/:user_id/:repository/:id/pull_request_layout(.:format)
route-controllervoltron_pull_requests_fragments
route-actionpull_request_layout
fetch-noncev2:db352cb0-47a1-22e8-4e8f-96f19aff4df6
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idC82A:15F1A6:12DCDD3:1900ED2:6A533E3F
html-safe-nonce49c8851c5bf8edbc78d5947e6e35b54efd4271c2e0eb8f78d7cc164c345acfac
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDODJBOjE1RjFBNjoxMkRDREQzOjE5MDBFRDI6NkE1MzNFM0YiLCJ2aXNpdG9yX2lkIjoiOTE3MTMwNDkxMDMxODQxOTUxOSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac69f67111d07817ec96c5d887272b4eb9adda535f725720f79ae02f306bb75920
hovercard-subject-tagpull_request:3575888979
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///voltron/pull_requests_fragments/pull_request_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/voltron/pull_requests/show/python/cpython/148940/pull_request_layout
twitter:imagehttps://opengraph.githubassets.com/e6e9c101c1d6e251279b3233c2db77b9ac1daa0d8365f9c7ac5d0953717d8c1c/python/cpython/pull/148940
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/e6e9c101c1d6e251279b3233c2db77b9ac1daa0d8365f9c7ac5d0953717d8c1c/python/cpython/pull/148940
og:image:altAsking the OS for the process memory usage doesn't work well given how mimalloc works. It does not promptly return memory to the OS and so the memory doesn't drop after cyclic trash is fre...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamenascheme
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-cache
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
release07a982c1d40157c619b364352b704c3ce66bb332
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/148940#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F148940
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%2F148940
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%2Fvoltron%2Fpull_requests_fragments%2Fpull_request_layout&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/148940
Reloadhttps://github.com/python/cpython/pull/148940
Reloadhttps://github.com/python/cpython/pull/148940
Please reload this pagehttps://github.com/python/cpython/pull/148940
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/148940
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
naschemehttps://github.com/nascheme
python:mainhttps://github.com/python/cpython/tree/main
nascheme:ft-gc-threshold-fix-mainhttps://github.com/nascheme/cpython/tree/ft-gc-threshold-fix-main
Conversationhttps://github.com/python/cpython/pull/148940
Commits8 (8)https://github.com/python/cpython/pull/148940/commits
Checkshttps://github.com/python/cpython/pull/148940/checks
Files changedhttps://github.com/python/cpython/pull/148940/files
GH-148937: fix for free-threaded GC (RSS based defer)https://github.com/python/cpython/pull/148940#top
naschemehttps://github.com/nascheme
python:mainhttps://github.com/python/cpython/tree/main
nascheme:ft-gc-threshold-fix-mainhttps://github.com/nascheme/cpython/tree/ft-gc-threshold-fix-main
https://github.com/nascheme
naschemehttps://github.com/nascheme
Apr 23, 2026https://github.com/python/cpython/pull/148940#issue-4319169997
Please reload this pagehttps://github.com/python/cpython/pull/148940
tim-gc-test.pyhttps://github.com/user-attachments/files/27028621/tim-gc-test.py
Benchmark resultshttps://github.com/facebookexperimental/free-threading-benchmarking/tree/main/results/bm-20260430-3.15.0a8+-819a848-NOGIL
Inc GC in 3.14t can defer too much, resulting in high memory use #148937https://github.com/python/cpython/issues/148937
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/apps/bedevere-app
bedevere-apphttps://github.com/apps/bedevere-app
awaiting core review https://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22awaiting%20core%20review%22
Apr 23, 2026https://github.com/python/cpython/pull/148940#event-24815395377
https://github.com/apps/bedevere-app
bedevere-apphttps://github.com/apps/bedevere-app
Apr 23, 2026 https://github.com/python/cpython/pull/148940#ref-issue-4319011492
Inc GC in 3.14t can defer too much, resulting in high memory use #148937 https://github.com/python/cpython/issues/148937
https://github.com/nascheme
naschemehttps://github.com/nascheme
colesburyhttps://github.com/colesbury
April 23, 2026 22:07https://github.com/python/cpython/pull/148940#event-24815398228
https://github.com/nascheme
naschemehttps://github.com/nascheme
Apr 23, 2026https://github.com/python/cpython/pull/148940#issuecomment-4308616241
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/sergey-miryanov
sergey-miryanovhttps://github.com/sergey-miryanov
Apr 29, 2026 https://github.com/python/cpython/pull/148940#pullrequestreview-4194622402
View reviewed changes https://github.com/python/cpython/pull/148940/files
Python/gc_free_threading.chttps://github.com/python/cpython/pull/148940/files#diff-4722ae850a2da3e12f50815c0e3932627ebe67edeaa8b7f28a94f20c8698204d
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/nascheme
naschemehttps://github.com/nascheme
force-pushedhttps://github.com/python/cpython/compare/ac0983336e14baaca2dd3365fb52011e9fd4d7ca..a853c004d31d1f045926860b43d5e0065566d22d
ac09833https://github.com/python/cpython/commit/ac0983336e14baaca2dd3365fb52011e9fd4d7ca
a853c00https://github.com/python/cpython/commit/a853c004d31d1f045926860b43d5e0065566d22d
Compare https://github.com/python/cpython/compare/ac0983336e14baaca2dd3365fb52011e9fd4d7ca..a853c004d31d1f045926860b43d5e0065566d22d
April 30, 2026 14:40https://github.com/python/cpython/pull/148940#event-25038651782
https://github.com/apps/read-the-docs-community
read-the-docs-communityhttps://github.com/apps/read-the-docs-community
Apr 30, 2026https://github.com/python/cpython/pull/148940#issuecomment-4353433696
Please reload this pagehttps://github.com/python/cpython/pull/148940
cpython-previewshttps://app.readthedocs.org/projects/cpython-previews/
#32516238https://app.readthedocs.org/projects/cpython-previews/builds/32516238/
801737fhttps://github.com/python/cpython/commit/801737fd85a5fa919840fdcbdbb826fa5672b768
mainhttps://cpython-previews.readthedocs.io/en/main/
7686abehttps://github.com/python/cpython/commit/7686abe063eb7fbf85f33437b9256e0d9e0f4a4f
  🔍 Preview build   https://cpython-previews--148940.org.readthedocs.build/en/148940/
contents.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/contents.html
genindex-B.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-B.html
genindex-C.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-C.html
genindex-D.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-D.html
genindex-E.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-E.html
genindex-H.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-H.html
genindex-I.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-I.html
genindex-L.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-L.html
genindex-O.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-O.html
genindex-P.htmlhttps://cpython-previews--148940.org.readthedocs.build/en/148940/genindex-P.html
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/nascheme
naschemehttps://github.com/nascheme
Apr 30, 2026https://github.com/python/cpython/pull/148940#issuecomment-4353851721
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/nascheme
naschemehttps://github.com/nascheme
Apr 30, 2026https://github.com/python/cpython/pull/148940#issuecomment-4355707436
cyclotronhttps://github.com/nascheme/cyclotron
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/colesbury
colesburyhttps://github.com/colesbury
May 1, 2026 https://github.com/python/cpython/pull/148940#pullrequestreview-4213075992
View reviewed changes https://github.com/python/cpython/pull/148940/files
colesburyhttps://github.com/colesbury
https://github.com/python/cpython/pull/148940#pullrequestreview-4213075992
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
Objects/obmalloc.chttps://github.com/python/cpython/pull/148940/files#diff-399a22135f328b4e42b0722ef216587945eedf2d8c103a584a3dca5b30650329
colesburyhttps://github.com/colesbury
May 1, 2026https://github.com/python/cpython/pull/148940#discussion_r3175121152
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
naschemehttps://github.com/nascheme
May 3, 2026https://github.com/python/cpython/pull/148940#discussion_r3178406403
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
Include/internal/mimalloc/mimalloc/types.hhttps://github.com/python/cpython/pull/148940/files#diff-20f62ec529bf863b2cb3c71b6787b9f10de8ca76f882958099cc287755632c88
colesburyhttps://github.com/colesbury
May 1, 2026https://github.com/python/cpython/pull/148940#discussion_r3175127444
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
naschemehttps://github.com/nascheme
May 3, 2026https://github.com/python/cpython/pull/148940#discussion_r3178407663
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
colesburyhttps://github.com/colesbury
May 4, 2026https://github.com/python/cpython/pull/148940#discussion_r3183077417
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
naschemehttps://github.com/nascheme
May 5, 2026https://github.com/python/cpython/pull/148940#discussion_r3187725720
Please reload this pagehttps://github.com/python/cpython/pull/148940
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python/cpython/pull/148940
Objects/obmalloc.chttps://github.com/python/cpython/pull/148940/files#diff-399a22135f328b4e42b0722ef216587945eedf2d8c103a584a3dca5b30650329
Please reload this pagehttps://github.com/python/cpython/pull/148940
naschemehttps://github.com/nascheme
May 1, 2026 20:31https://github.com/python/cpython/pull/148940#commits-pushed-ad5ed74
https://github.com/nascheme
pythonGH-148937https://github.com/python/cpython/issues/148937
: fix for free-threaded GC (RSS based defer)https://github.com/python/cpython/pull/148940/commits/ad5ed7425599aa5f48d2ce3296e6dc358d4e1d69
ad5ed74https://github.com/python/cpython/pull/148940/commits/ad5ed7425599aa5f48d2ce3296e6dc358d4e1d69
https://github.com/nascheme
Move gc_should_collect_mem_usage() call.https://github.com/python/cpython/pull/148940/commits/05d50506c42eb3349ca724700e2dabf827b9afb5
05d5050https://github.com/python/cpython/pull/148940/commits/05d50506c42eb3349ca724700e2dabf827b9afb5
https://github.com/nascheme
Add blurb.https://github.com/python/cpython/pull/148940/commits/515e4c4b73e05369dbe3d9371e81de1dbc853f69
515e4c4https://github.com/python/cpython/pull/148940/commits/515e4c4b73e05369dbe3d9371e81de1dbc853f69
https://github.com/nascheme
Compute mimalloc memory usage based on full pages.https://github.com/python/cpython/pull/148940/commits/7f654e10f3e226678f8fdc1d986f0e42ebb1ca00
7f654e1https://github.com/python/cpython/pull/148940/commits/7f654e10f3e226678f8fdc1d986f0e42ebb1ca00
https://github.com/nascheme
Avoid warning of unused functions.https://github.com/python/cpython/pull/148940/commits/14b9696d31f7ae78a3ac1b9e33cbcc248d3be5d5
14b9696https://github.com/python/cpython/pull/148940/commits/14b9696d31f7ae78a3ac1b9e33cbcc248d3be5d5
https://github.com/nascheme
Store full_page_bytes in mi_heap_t.https://github.com/python/cpython/pull/148940/commits/801737fd85a5fa919840fdcbdbb826fa5672b768
801737fhttps://github.com/python/cpython/pull/148940/commits/801737fd85a5fa919840fdcbdbb826fa5672b768
https://github.com/nascheme
naschemehttps://github.com/nascheme
force-pushedhttps://github.com/python/cpython/compare/819a848937447cfd123375bb14885d00f12ce775..801737fd85a5fa919840fdcbdbb826fa5672b768
819a848https://github.com/python/cpython/commit/819a848937447cfd123375bb14885d00f12ce775
801737fhttps://github.com/python/cpython/commit/801737fd85a5fa919840fdcbdbb826fa5672b768
Compare https://github.com/python/cpython/compare/819a848937447cfd123375bb14885d00f12ce775..801737fd85a5fa919840fdcbdbb826fa5672b768
May 3, 2026 16:25https://github.com/python/cpython/pull/148940#event-25109572237
https://github.com/nascheme
naschemehttps://github.com/nascheme
May 3, 2026https://github.com/python/cpython/pull/148940#issuecomment-4366638904
Please reload this pagehttps://github.com/python/cpython/pull/148940
Please reload this pagehttps://github.com/python/cpython/pull/148940
naschemehttps://github.com/nascheme
May 3, 2026 11:37https://github.com/python/cpython/pull/148940#commits-pushed-057f862
https://github.com/nascheme
Use _mi_heap_main_get().https://github.com/python/cpython/pull/148940/commits/057f8625f244420b707a09284fab52a938594e9c
057f862https://github.com/python/cpython/pull/148940/commits/057f8625f244420b707a09284fab52a938594e9c
https://github.com/nascheme
Merge remote-tracking branch 'origin/main' into ft-gc-threshold-fix-mainhttps://github.com/python/cpython/pull/148940/commits/847cba1b6e09b398aa80399c0221135739dca295
847cba1https://github.com/python/cpython/pull/148940/commits/847cba1b6e09b398aa80399c0221135739dca295
https://github.com/nascheme
naschemehttps://github.com/nascheme
July 3, 2026 02:38https://github.com/python/cpython/pull/148940#event-27508520691
https://github.com/apps/bedevere-app
bedevere-apphttps://github.com/apps/bedevere-app
awaiting core review https://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22awaiting%20core%20review%22
Jul 3, 2026https://github.com/python/cpython/pull/148940#event-27508522046
https://github.com/nascheme
naschemehttps://github.com/nascheme
Jul 3, 2026https://github.com/python/cpython/pull/148940#issuecomment-4872110352
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.co/hiddenchars
https://github.com/python/cpython/pull/{{ revealButtonHref }}
Sign up for freehttps://github.com/join?source=comment-repo
Sign in to commenthttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F148940
https://github.com/sergey-miryanov
sergey-miryanov https://github.com/sergey-miryanov
https://github.com/python/cpython/pull/148940/files/ac0983336e14baaca2dd3365fb52011e9fd4d7ca
https://github.com/colesbury
colesbury https://github.com/colesbury
https://github.com/python/cpython/pull/148940/files/847cba1b6e09b398aa80399c0221135739dca295
Please reload this pagehttps://github.com/python/cpython/pull/148940
https://github.com/nascheme
https://github.com/sergey-miryanov
https://github.com/colesbury
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.