Title: Generate the interpreter · Issue #98831 · python/cpython · GitHub
Open Graph Title: Generate the interpreter · Issue #98831 · python/cpython
X Title: Generate the interpreter · Issue #98831 · python/cpython
Description: Overview Over in faster-cpython/ideas we've been exploring the idea of generating the interpreter from a set of instruction definitions. This will eventually enable having multiple versions of the interpreter (e.g. with and without traci...
Open Graph Description: Overview Over in faster-cpython/ideas we've been exploring the idea of generating the interpreter from a set of instruction definitions. This will eventually enable having multiple versions of the ...
X Description: Overview Over in faster-cpython/ideas we've been exploring the idea of generating the interpreter from a set of instruction definitions. This will eventually enable having multiple versions of ...
Opengraph URL: https://github.com/python/cpython/issues/98831
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Generate the interpreter","articleBody":"### Overview\r\n\r\nOver in [faster-cpython/ideas](https://github.com/faster-cpython/ideas) we've been exploring the idea of generating the interpreter from a set of instruction definitions. This will eventually enable having multiple versions of the interpreter (e.g. with and without tracing enabled), and it will allow us to automatically combine instructions using a powerful notation (e.g. `super(LOAD_FAST__LOAD_FAST) = LOAD_FAST + LOAD_FAST;`). It will also let us auto-generate things like [`stack_effect()`](https://github.com/gvanrossum/cpython/blob/75a6fadf369315b27e12f670e6295cf2c2cf7d7e/Python/compile.c#L1031).\r\n\r\nWe are planning to land at least an early version of this work in 3.12. We have a tentative grammar for [instruction definition DSL](https://github.com/faster-cpython/ideas/blob/main/3.12/interpreter_definition.md) -- which will undoubtedly undergo several iterations before we've settled. We have a [first draft of the tooling](https://github.com/python/cpython/pull/98830) ~ready for review (which currently reproduces the status quo)~ done.\r\n\r\nOnce the first version of the tooling has landed we expect to iterate quickly, using this issue an umbrella issue for our PRs to link to.\r\n\r\n### References\r\n\r\n- https://github.com/faster-cpython/ideas/issues/5\r\n- https://github.com/faster-cpython/ideas/issues/16\r\n- https://github.com/faster-cpython/ideas/issues/454\r\n- https://github.com/faster-cpython/ideas/issues/477\r\n- https://github.com/faster-cpython/ideas/issues/479\r\n- https://github.com/faster-cpython/ideas/issues/481\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-98830 --\u003e\r\n* PR: gh-98830\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99065 --\u003e\r\n* PR: gh-99065\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99084 --\u003e\r\n* PR: gh-99084\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99093 --\u003e\r\n* PR: gh-99093\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99102 --\u003e\r\n* PR: gh-99102\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99107 --\u003e\r\n* PR: gh-99107\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99120 --\u003e\r\n* PR: gh-99120\r\n\u003c!-- /gh-pr-number --\u003e\r\n\n\n\u003c!-- gh-pr-number: gh-99271 --\u003e\n* PR: gh-99271\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99313 --\u003e\n* PR: gh-99313\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99408 --\u003e\n* PR: gh-99408\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99495 --\u003e\n* PR: gh-99495\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99526 --\u003e\n* PR: gh-99526\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99601 --\u003e\n* PR: gh-99601\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-99764 --\u003e\n* PR: gh-99764\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100095 --\u003e\n* PR: gh-100095\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100123 --\u003e\n* PR: gh-100123\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100124 --\u003e\n* PR: gh-100124\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100205 --\u003e\n* PR: gh-100205\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100545 --\u003e\n* PR: gh-100545\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100763 --\u003e\n* PR: gh-100763\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100735 --\u003e\n* PR: gh-100735\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100777 --\u003e\n* PR: gh-100777\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100778 --\u003e\n* PR: gh-100778\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100895 --\u003e\n* PR: gh-100895\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100912 --\u003e\n* PR: gh-100912\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-100957 --\u003e\n* PR: gh-100957\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101116 --\u003e\n* PR: gh-101116\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101163 --\u003e\n* PR: gh-101163\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101269 --\u003e\n* PR: gh-101269\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101287 --\u003e\n* PR: gh-101287\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101299 --\u003e\n* PR: gh-101299\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101306 --\u003e\n* PR: gh-101306\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101309 --\u003e\n* PR: gh-101309\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101333 --\u003e\n* PR: gh-101333\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101349 --\u003e\n* PR: gh-101349\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101442 --\u003e\n* PR: gh-101442\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101443 --\u003e\n* PR: gh-101443\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101458 --\u003e\n* PR: gh-101458\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101481 --\u003e\n* PR: gh-101481\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101488 --\u003e\n* PR: gh-101488\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101502 --\u003e\n* PR: gh-101502\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101511 --\u003e\n* PR: gh-101511\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101508 --\u003e\n* PR: gh-101508\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101516 --\u003e\n* PR: gh-101516\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101529 --\u003e\n* PR: gh-101529\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101620 --\u003e\n* PR: gh-101620\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101626 --\u003e\n* PR: gh-101626\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101627 --\u003e\n* PR: gh-101627\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101628 --\u003e\n* PR: gh-101628\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101629 --\u003e\n* PR: gh-101629\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101641 --\u003e\n* PR: gh-101641\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101666 --\u003e\n* PR: gh-101666\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-101704 --\u003e\n* PR: gh-101704\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-102409 --\u003e\n* PR: gh-102409\n\u003c!-- /gh-pr-number --\u003e\n","author":{"url":"https://github.com/gvanrossum","@type":"Person","name":"gvanrossum"},"datePublished":"2022-10-28T22:18:49.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/98831/cpython/issues/98831"}
| 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:320f34af-6033-e3c0-c0d9-1aaa9517e1bd |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8018:2C4F84:A82B3:ED055:69693D0E |
| html-safe-nonce | 298acd1077086d8db087f786db293d117c4cef1023c03089d6a41ff73d40ee9d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MDE4OjJDNEY4NDpBODJCMzpFRDA1NTo2OTY5M0QwRSIsInZpc2l0b3JfaWQiOiI0MjQzNzUzMTk3MTk3OTMzODM4IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 60eab3e26c5d6094b49048fedc81fdd048a6c7fea7ba9cd2d63e7caf5b1f4600 |
| hovercard-subject-tag | issue:1427908027 |
| 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/98831/issue_layout |
| twitter:image | https://opengraph.githubassets.com/b4bd60dd76b866f55ed21e758187831f98f47492b26742dca4b1d5a342c3dc20/python/cpython/issues/98831 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/b4bd60dd76b866f55ed21e758187831f98f47492b26742dca4b1d5a342c3dc20/python/cpython/issues/98831 |
| og:image:alt | Overview Over in faster-cpython/ideas we've been exploring the idea of generating the interpreter from a set of instruction definitions. This will eventually enable having multiple versions of the ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | gvanrossum |
| hostname | github.com |
| expected-hostname | github.com |
| None | 54182691a21263b584d2e600b758e081b0ff1d10ffc0d2eefa51cf754b43b51d |
| 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 | d69ac0477df0f87da03b8b06cebd187012d7a930 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width