Title: Expose _Py_NewInterpreter() as Py_NewInterpreterFromConfig() · Issue #98608 · python/cpython · GitHub
Open Graph Title: Expose _Py_NewInterpreter() as Py_NewInterpreterFromConfig() · Issue #98608 · python/cpython
X Title: Expose _Py_NewInterpreter() as Py_NewInterpreterFromConfig() · Issue #98608 · python/cpython
Description: A while back I added _Py_NewInterpreter() (a "private" API) to support configuring the new interpreter. Ultimately, I'd like to adjust the signature a little and then make the function part of the public API (as Py_NewInterpreterFromConf...
Open Graph Description: A while back I added _Py_NewInterpreter() (a "private" API) to support configuring the new interpreter. Ultimately, I'd like to adjust the signature a little and then make the function part of the ...
X Description: A while back I added _Py_NewInterpreter() (a "private" API) to support configuring the new interpreter. Ultimately, I'd like to adjust the signature a little and then make the functio...
Opengraph URL: https://github.com/python/cpython/issues/98608
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Expose _Py_NewInterpreter() as Py_NewInterpreterFromConfig()","articleBody":"A while back I added `_Py_NewInterpreter()` (a \"private\" API) to support configuring the new interpreter. Ultimately, I'd like to adjust \r\nthe signature a little and then make the function part of the public API (as `Py_NewInterpreterFromConfig()`).\r\n\r\nMy plan:\r\n\r\n1. change the argument to a new `_PyInterpreterConfig` struct\r\n2. rename the function to `Py_NewInterpreterFromConfig()`, inspired by `Py_InitializeFromConfig()` (takes a `PyInterpreterConfig` instead of `isolated_subinterpreter`)\r\n3. split up the boolean `isolated_subinterpreter` into the corresponding multiple granular settings\r\n * allow_fork\r\n * allow_subprocess\r\n * allow_threads\r\n4. drop `PyConfig._isolated_interpreter`\r\n\r\nNote that the current default (`Py_NewInterpeter()` and `Py_Initialize*()`) allows fork, subprocess, and threads, and the optional \"isolated\" interpreter disables all three. I'm not planning on changing any of that here.\r\n\r\nMy main objective here is to expose the existing API in a way that we can do the following afterward:\r\n\r\n* stop giving the option to disallow subprocess (i.e. drop `PyInterpreterConfig.allow_subprocess`)\r\n* add an option to disallow just \"exec\" instead\r\n* stop disallowing threads as a default behavior for an \"isolated\" interpreter (we'd still keep the option though)\r\n* add the option to disallow daemon threads\r\n* add an option to check if each extension supports running in multiple interpreters\r\n* add other options for PEP 684 (per-interpreter GIL)\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-102657\n* gh-102658\n* gh-102882\n* gh-102883\n* gh-107191\n* gh-107198\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/ericsnowcurrently","@type":"Person","name":"ericsnowcurrently"},"datePublished":"2022-10-24T17:16:03.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/98608/cpython/issues/98608"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d4c36b07-f7fe-6d22-de38-315e57d1253f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C9DA:511EE:FBB7EE:150D046:6969923B |
| html-safe-nonce | fc2737aadacffcd906fe3c31e617c0bd238b2e140c28671e5afa3113ce5c7fd9 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDOURBOjUxMUVFOkZCQjdFRToxNTBEMDQ2OjY5Njk5MjNCIiwidmlzaXRvcl9pZCI6IjY1ODMzNTUwOTQ3NzE2NzY3NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | e443d8ba3706cea00c4d1baf06b6849378dbe72551f0a8ac9393dc4fc47babd3 |
| hovercard-subject-tag | issue:1421159659 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/98608/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e37dbc60b86b2058668308cc998e2486af58ee897ab034f532c4f7bb52b77a93/python/cpython/issues/98608 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e37dbc60b86b2058668308cc998e2486af58ee897ab034f532c4f7bb52b77a93/python/cpython/issues/98608 |
| og:image:alt | A while back I added _Py_NewInterpreter() (a "private" API) to support configuring the new interpreter. Ultimately, I'd like to adjust the signature a little and then make the function part of the ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ericsnowcurrently |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3542e147982176a7ebaa23dfb559c8af16f721c03ec560c68c56b64a0f35e751 |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | af80af7cc9e3de9c336f18b208a600950a3c187c |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width