René's URL Explorer Experiment


Title: C API: Remove private C API functions (move them to the internal C API) · Issue #106320 · python/cpython · GitHub

Open Graph Title: C API: Remove private C API functions (move them to the internal C API) · Issue #106320 · python/cpython

X Title: C API: Remove private C API functions (move them to the internal C API) · Issue #106320 · python/cpython

Description: Over the years, we accumulated many private functions as part of the public C API header files. I propose to remove them: move them to the internal C API. If many C extensions are affected by these removals, it's a sign that we should co...

Open Graph Description: Over the years, we accumulated many private functions as part of the public C API header files. I propose to remove them: move them to the internal C API. If many C extensions are affected by these...

X Description: Over the years, we accumulated many private functions as part of the public C API header files. I propose to remove them: move them to the internal C API. If many C extensions are affected by these...

Opengraph URL: https://github.com/python/cpython/issues/106320

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"C API: Remove private C API functions (move them to the internal C API)","articleBody":"Over the years, we accumulated many private functions as part of the public C API header files. I propose to remove them: move them to the internal C API.\r\n\r\nIf many C extensions are affected by these removals, it's a sign that we should consider promoted used private functions as public functions: provide a better API, add error handling, write documentation, write tests.\r\n\r\n---\r\n\r\nSummary: **[My plan to clarify private vs public functions in Python 3.13](https://discuss.python.org/t/c-api-my-plan-to-clarify-private-vs-public-functions-in-python-3-13/30131)**\r\n\r\n* Private functions converted to public functions:\r\n\r\n  * PyLong_AsInt(): issue #108444\r\n  * Py_IsFinalizing(): PR #108032\r\n\r\n* Discussions:\r\n\r\n  * [(pssst) Let’s treat all API in public headers as public](https://discuss.python.org/t/pssst-lets-treat-all-api-in-public-headers-as-public/28916)\r\n  * [list of PyPI affected projects](https://github.com/python/cpython/issues/106320#issuecomment-1620773057)\r\n  * [C API: How much private is the private _Py_IDENTIFIER() API?](https://discuss.python.org/t/c-api-how-much-private-is-the-private-py-identifier-api/29190) -- ``_Py_Identifier``\r\n  * [_Py_c_xxx complex functions](https://github.com/python/cpython/issues/106320#issuecomment-1633302147) (ex: ``_Py_c_abs()``)\r\n  * PR #107139: Add _PyTupleBuilder API to the internal C API\r\n\r\n* Notes:\r\n\r\n  * While being private, [_PyBytes_Resize()](https://docs.python.org/dev/c-api/bytes.html#c._PyBytes_Resize) and [_PyTuple_Resize()](https://docs.python.org/dev/c-api/tuple.html#c._PyTuple_Resize) are documented\r\n  * The private _PyCrossInterpreterData API is used by 3rd party project on PyPI: https://github.com/python/cpython/pull/107068#issuecomment-1648594654. I closed my PR #107068.\r\n\r\n---\r\n\r\n\u003c!-- gh-linked-prs --\u003e\r\n### Linked PRs\r\n* gh-106321\r\n* gh-106324\r\n* gh-106325\r\n* gh-106335\r\n* gh-106336\r\n* gh-106339\r\n* gh-106341\r\n* gh-106342\r\n* gh-106355\r\n* gh-106356\r\n* gh-106382\r\n* gh-106383\r\n* gh-106385\r\n* gh-106386\r\n* gh-106398\r\n* gh-106399\r\n* gh-106400\r\n* gh-106417\r\n* gh-106425\r\n* gh-106434\r\n* gh-107021\r\n* gh-107026\r\n* gh-107027\r\n* gh-107030\r\n* gh-107032\r\n* gh-107034\r\n* gh-107036\r\n* gh-107041\r\n* gh-107053\r\n* gh-107064\r\n* gh-107068\r\n* gh-107070\r\n* gh-107071\r\n* gh-107142\r\n* gh-107143\r\n* gh-107144\r\n* gh-107145\r\n* gh-107147\r\n* gh-107159\r\n* gh-107185\r\n* gh-107187\r\n* gh-108313\r\n* gh-108429\r\n* gh-108430\r\n* gh-108431\r\n* gh-108433\r\n* gh-108434\r\n* gh-108449\r\n* gh-108451\r\n* gh-108452\r\n* gh-108453\r\n* gh-108499\r\n* gh-108503\r\n* gh-108505\r\n* gh-108593\r\n* gh-108597\r\n* gh-108599\r\n* gh-108600\r\n* gh-108601\r\n* gh-108602\r\n* gh-108603\r\n* gh-108604\r\n* gh-108605\r\n* gh-108606\r\n* gh-108607\r\n* gh-108609\r\n* gh-108664\r\n* gh-108712\r\n* gh-108713\r\n* gh-108720\r\n* gh-108742\r\n* gh-108743\r\n* gh-108863\r\n* gh-111162\r\n* gh-111939\r\n* gh-128787\n* gh-128788\n* gh-128837\n\u003c!-- /gh-linked-prs --\u003e\r\n","author":{"url":"https://github.com/vstinner","@type":"Person","name":"vstinner"},"datePublished":"2023-07-01T21:35:51.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":55},"url":"https://github.com/106320/cpython/issues/106320"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:caedbbd6-db52-a27e-42ee-61e1614beea1
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idBCE6:1D70BE:1849549:2073D60:6969BEB6
html-safe-nonce3ab4c4d4d0fa01079a68b5873c324c635e6a76db9dd00115291274ba04fbe950
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQ0U2OjFENzBCRToxODQ5NTQ5OjIwNzNENjA6Njk2OUJFQjYiLCJ2aXNpdG9yX2lkIjoiODM1MDMxODk2NTMyNTE1MTkyNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac862eae45521648fd8f5be3c1a74c62292a7f37be451faffdb76c8d2b4ab42c76
hovercard-subject-tagissue:1784268682
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/106320/issue_layout
twitter:imagehttps://opengraph.githubassets.com/cbb13c61a3d6e6d2b8b4b037e087abb51127b5f35986b6b81386dc0aff390271/python/cpython/issues/106320
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/cbb13c61a3d6e6d2b8b4b037e087abb51127b5f35986b6b81386dc0aff390271/python/cpython/issues/106320
og:image:altOver the years, we accumulated many private functions as part of the public C API header files. I propose to remove them: move them to the internal C API. If many C extensions are affected by these...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamevstinner
hostnamegithub.com
expected-hostnamegithub.com
Noneacedec8b5f975d9e3d494ddd8f949b0b8a0de59d393901e26f73df9dcba80056
turbo-cache-controlno-preview
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
release83c08c21cdda978090dc44364b71aa5bc6dcea79
ui-targetcanary-2
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/issues/106320#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F106320
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%2Fissues%2F106320
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%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/issues/106320
Reloadhttps://github.com/python/cpython/issues/106320
Reloadhttps://github.com/python/cpython/issues/106320
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/issues/106320
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/issues/106320
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
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/106320
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/106320
C API: Remove private C API functions (move them to the internal C API)https://github.com/python/cpython/issues/106320#top
topic-C-APIhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22topic-C-API%22
https://github.com/vstinner
https://github.com/vstinner
vstinnerhttps://github.com/vstinner
on Jul 1, 2023https://github.com/python/cpython/issues/106320#issue-1784268682
My plan to clarify private vs public functions in Python 3.13https://discuss.python.org/t/c-api-my-plan-to-clarify-private-vs-public-functions-in-python-3-13/30131
[C API] Add PyLong_AsInt() public function #108444https://github.com/python/cpython/issues/108444
gh-108014: Add Py_IsFinalizing() function #108032https://github.com/python/cpython/pull/108032
(pssst) Let’s treat all API in public headers as publichttps://discuss.python.org/t/pssst-lets-treat-all-api-in-public-headers-as-public/28916
list of PyPI affected projectshttps://github.com/python/cpython/issues/106320#issuecomment-1620773057
C API: How much private is the private _Py_IDENTIFIER() API?https://discuss.python.org/t/c-api-how-much-private-is-the-private-py-identifier-api/29190
_Py_c_xxx complex functionshttps://github.com/python/cpython/issues/106320#issuecomment-1633302147
gh-107137: Add _PyTupleBuilder API to the internal C API #107139https://github.com/python/cpython/pull/107139
_PyBytes_Resize()https://docs.python.org/dev/c-api/bytes.html#c._PyBytes_Resize
_PyTuple_Resize()https://docs.python.org/dev/c-api/tuple.html#c._PyTuple_Resize
gh-106320: Remove private _PyCrossInterpreterData API #107068 (comment)https://github.com/python/cpython/pull/107068#issuecomment-1648594654
gh-106320: Remove private _PyCrossInterpreterData API #107068https://github.com/python/cpython/pull/107068
gh-106320: Remove _PyInterpreterState_Get() alias #106321https://github.com/python/cpython/pull/106321
gh-106320: Remove private _PyTraceMalloc C API functions #106324https://github.com/python/cpython/pull/106324
gh-106320: Remove private _PyInterpreterState functions #106325https://github.com/python/cpython/pull/106325
gh-106320: Remove private _PyInterpreterState functions #106335https://github.com/python/cpython/pull/106335
gh-106320: Use _PyInterpreterState_GET() #106336https://github.com/python/cpython/pull/106336
gh-106320: Add pycore_complexobject.h header file #106339https://github.com/python/cpython/pull/106339
gh-106320: _testcapi avoids private _PyUnicode_EqualToASCIIString() #106341https://github.com/python/cpython/pull/106341
gh-106320: Move _PyUnicodeWriter to the internal C API #106342https://github.com/python/cpython/pull/106342
gh-106320: Create pycore_moduleobject.h header file #106355https://github.com/python/cpython/pull/106355
gh-106320: Remove private _PyErr C API functions #106356https://github.com/python/cpython/pull/106356
gh-106320: Remove more private _PyUnicode C API functions #106382https://github.com/python/cpython/pull/106382
gh-106320: Remove private _PyImport C API functions #106383https://github.com/python/cpython/pull/106383
gh-106320: Remove more private _PyUnicode C API functions (#106382) #106385https://github.com/python/cpython/pull/106385
gh-106320: Fix _PyImport_GetModuleAttr() declaration #106386https://github.com/python/cpython/pull/106386
gh-106320: Remove _PyUnicode_TransformDecimalAndSpaceToASCII() #106398https://github.com/python/cpython/pull/106398
gh-106320: Remove _PyBytesWriter C API #106399https://github.com/python/cpython/pull/106399
gh-106320: Remove private pylifecycle.h functions #106400https://github.com/python/cpython/pull/106400
gh-106320: Add missing #include in _winapi.c #106417https://github.com/python/cpython/pull/106417
gh-106320: Remove _PyInterpreterState_HasFeature() #106425https://github.com/python/cpython/pull/106425
gh-106320: Fix specialize.c compilation by including pycore_pylifecycle.h #106434https://github.com/python/cpython/pull/106434
gh-106320: Remove private _PyUnicode_AsString() alias #107021https://github.com/python/cpython/pull/107021
gh-106320: Move private _PyHash API to the internal C API #107026https://github.com/python/cpython/pull/107026
gh-106320: Document private C API removal in What's New 3.13 #107027https://github.com/python/cpython/pull/107027
gh-106320: Move _PyNone_Type to the internal C API #107030https://github.com/python/cpython/pull/107030
gh-106320: Move private _PyGen API to the internal C API #107032https://github.com/python/cpython/pull/107032
gh-106320: Remove _PyOS_ReadlineTState API #107034https://github.com/python/cpython/pull/107034
gh-106320: Remove _Py_SwappedOp from the C API #107036https://github.com/python/cpython/pull/107036
gh-106320: Move private _PySet API to the internal API #107041https://github.com/python/cpython/pull/107041
gh-106320: Remove private _PyInterpreterID C API #107053https://github.com/python/cpython/pull/107053
gh-106320: Move _PyMethodWrapper_Type to internal C API #107064https://github.com/python/cpython/pull/107064
gh-106320: Remove private _PyCrossInterpreterData API #107068https://github.com/python/cpython/pull/107068
gh-106320: Remove private _PyModule API #107070https://github.com/python/cpython/pull/107070
gh-106320: Remove _PyFunction_Vectorcall() API #107071https://github.com/python/cpython/pull/107071
gh-106320: Remove _PyIsSelectable_fd() C API #107142https://github.com/python/cpython/pull/107142
gh-106320: Remove _PyTuple_MaybeUntrack() C API #107143https://github.com/python/cpython/pull/107143
gh-106320: Remove _PyBytes_Join() C API #107144https://github.com/python/cpython/pull/107144
gh-106320: Remove private _PyDict C API #107145https://github.com/python/cpython/pull/107145
gh-106320: Remove private _PyObject C API #107147https://github.com/python/cpython/pull/107147
gh-106320: Remove private _PyObject C API #107159https://github.com/python/cpython/pull/107159
gh-106320: Remove private _PyUnicode C API #107185https://github.com/python/cpython/pull/107185
gh-106320: Remove private _PyMem API #107187https://github.com/python/cpython/pull/107187
gh-106320: Remove _PyDict_GetItemStringWithError() function #108313https://github.com/python/cpython/pull/108313
gh-106320: Remove private PyLong C API functions #108429https://github.com/python/cpython/pull/108429
gh-106320: Remove private float C API functions #108430https://github.com/python/cpython/pull/108430
gh-106320: Remove private _PyManagedBuffer_Type #108431https://github.com/python/cpython/pull/108431
gh-106320: Remove private _PyEval function #108433https://github.com/python/cpython/pull/108433
gh-106320: Remove private _PyContext_NewHamtForTests() #108434https://github.com/python/cpython/pull/108434
gh-106320: Remove private _PyDict function #108449https://github.com/python/cpython/pull/108449
gh-106320: Remove private _PyList function #108451https://github.com/python/cpython/pull/108451
gh-106320: Remove private _PySys functions #108452https://github.com/python/cpython/pull/108452
gh-106320: Remove private _PyTraceback functions #108453https://github.com/python/cpython/pull/108453
gh-106320: Remove private _PyLong converter functions #108499https://github.com/python/cpython/pull/108499
gh-106320: Remove private _PyLong_FileDescriptor_Converter() #108503https://github.com/python/cpython/pull/108503
gh-106320: Remove private AC converter functions #108505https://github.com/python/cpython/pull/108505
gh-106320: Remove private _Py_Identifier API #108593https://github.com/python/cpython/pull/108593
gh-106320: Remove _PyAnextAwaitable_Type from the public C API #108597https://github.com/python/cpython/pull/108597
gh-106320: Remove private pythonrun API #108599https://github.com/python/cpython/pull/108599
gh-106320: Remove private _PyType_Lookup() function #108600https://github.com/python/cpython/pull/108600
gh-106320: Remove private _PyThread_at_fork_reinit() function #108601https://github.com/python/cpython/pull/108601
gh-106320: Remove private _Py_UniversalNewlineFgetsWithSize() #108602https://github.com/python/cpython/pull/108602
gh-106320: Remove private _PyGILState_GetInterpreterStateUnsafe() #108603https://github.com/python/cpython/pull/108603
gh-106320: Remove private _PyLong_New() function #108604https://github.com/python/cpython/pull/108604
gh-106320: Remove private _PyOS_IsMainThread() function #108605https://github.com/python/cpython/pull/108605
gh-106320: Remove private _PyObject_GetState() #108606https://github.com/python/cpython/pull/108606
gh-106320: Remove private _PyErr_SetKeyError() #108607https://github.com/python/cpython/pull/108607
gh-106320: Fix test_peg_generator: _Py_UniversalNewlineFgetsWithSize() #108609https://github.com/python/cpython/pull/108609
gh-106320: Remove private _Py_ForgetReference() #108664https://github.com/python/cpython/pull/108664
gh-106320: Don't export _Py_ForgetReference() function #108712https://github.com/python/cpython/pull/108712
gh-106320: Remove private _PyErr_ChainExceptions() #108713https://github.com/python/cpython/pull/108713
gh-106320: winconsoleio.c includes pycore_pyerrors.h #108720https://github.com/python/cpython/pull/108720
gh-106320: Remove private _PyLong_IsCompact() function #108742https://github.com/python/cpython/pull/108742
gh-106320: Remove private _PyLong_Sign() #108743https://github.com/python/cpython/pull/108743
gh-106320: Remove private _PyErr_WriteUnraisableMsg() #108863https://github.com/python/cpython/pull/108863
gh-106320: Re-add some PyLong/PyDict C-API functions #111162https://github.com/python/cpython/pull/111162
gh-111262: Add PyDict_Pop() function [with default value] #111939https://github.com/python/cpython/pull/111939
gh-106320: Document replacement for removed C API #128787https://github.com/python/cpython/pull/128787
gh-106320: Document private C APIs promoted to public C API #128788https://github.com/python/cpython/pull/128788
[3.13] gh-106320: Document replacement for removed C API (GH-128787) #128837https://github.com/python/cpython/pull/128837
topic-C-APIhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22topic-C-API%22
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.