René's URL Explorer Experiment


Title: hard switching using Stackman · Issue #278 · stackless-dev/stackless · GitHub

Open Graph Title: hard switching using Stackman · Issue #278 · stackless-dev/stackless

X Title: hard switching using Stackman · Issue #278 · stackless-dev/stackless

Description: The idea to share the stack switching code between different projects is not new, see issue #10. Last year Kristján Valur Jónsson made another attempt: pull request #230: The Stackman project (http://github.com/kristjanvalur/stackman) ai...

Open Graph Description: The idea to share the stack switching code between different projects is not new, see issue #10. Last year Kristján Valur Jónsson made another attempt: pull request #230: The Stackman project (http...

X Description: The idea to share the stack switching code between different projects is not new, see issue #10. Last year Kristján Valur Jónsson made another attempt: pull request #230: The Stackman project (http...

Opengraph URL: https://github.com/stackless-dev/stackless/issues/278

X: @github

direct link

Domain: patch-diff.githubusercontent.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"hard switching using Stackman","articleBody":"The idea to share the stack switching code between different projects is not new, see issue #10. Last year Kristján Valur Jónsson made another attempt: pull request #230: \r\n\r\n\u003e The Stackman project (http://github.com/kristjanvalur/stackman) aims to provide simple\r\nstack switching code for modern platforms. The aim is to have application-agnostic code that\r\nperforms the basic functionality of saving machine registers and switching stack pointer, leaving the custom code of saving/restoring stack and choosing stack pointer to a user callback.\r\n\u003e \r\n\u003e The resulting switching code is very succinct and easy to verify.\r\n\r\nI open this issue to discuss those aspects, that are unrelated to a particular implementation.\r\n\r\n**What**\r\n\r\nMake it possible to use Stackman to implement stack-switching instead of the current Stackless code.\r\n\r\n**Why - Benefits and Drawbacks**\r\n\r\nargument \\ stakeholder | Stackless maintainer | Python developer | end user\r\n------------------------------ | ---------------------------- | ------------------------ | -----------\r\nStackman is simpler to maintain. | + |   |\r\nSupporting a new platform / architecture / compiler does not require changes to Stackless, only to Stackman |  | + |  |\r\nStackless own hard switching code works well, Stackman adds complexity to the overall project | - |  |  |\r\nPerformance is better / worse  |  |  | +/- | \r\n\r\n_Are there any arguments, why the performance of Stackman is better/worse than legacy Stackless stack switching?_\r\n\r\n**When**\r\n\r\nNow. Stackless 3.7 is near its eol and Stackless 3.8 hasn't been released. Stackman seems to be sufficiently mature.\r\n\r\n**How**\r\n\r\nPull request #230 proves that Stackman can be used, but there are many more ways to do it.\r\n\r\n_Options_\r\n\r\n1. Install Stackman as an external project. Add a `make install` option to Stackman. In Stackless add an option `--with-stackman` to configure. \r\n2. Like option 1, but automatically detect Stackman and use an option to disable Stackman (`--without-stackman`).\r\n3. Add Stackman as a git submodule to Stackless. That's what pull request #230 does.\r\n4. Add a full copy of Stackman source (archive) to a sub-directory in the Stackless source code.\r\n5. Add a partial copy of Stackman to the Stackless source code and automatically use it.\r\n\r\nThere might be more options.\r\n\r\n**Requirements**\r\n\r\nSome requirements. There might be more.\r\n\r\n1. Using Stackman is a compile time **option**. It is still possible to use the legacy Stackless hard switching code.\r\n2. No user visible changes in API, stability, usage, if Stackless uses Stackman.\r\n3. Do not break a working build process, if building from a Stackless source archive. E.g. \r\n   `./configure \u0026\u0026 make \u0026\u0026 make test \u0026\u0026 make install` still works. Especially important for the Windows build process.\r\n   As a consequence, Stackless should adhere to the Include-directory layout from C-Python. \r\n4. If Stackman is not bundled with Stackless source (options 1 and 2), there should be a mechanism to detect, if the found/specified version of Stackman is compatible with Stackless.\r\n5. No legal risk. Stackless currently is a leisure time project. (Currently I don't expect any problems here, it is just for completeness.)\r\n\r\n**Discussion**\r\n\r\n_Just some preliminary thoughts_\r\n\r\nWe can divide the possible options into two goups:\r\n\r\n* option 1,2: Stackman is only available, if separately installed\r\n* option 3...5: Stackman is always available\r\n\r\nCurrently Stackless is mostly used on Windows amd64 and Linux amd64 (32bit versions are fading away). On these platforms the existing hard switching code and building Stackless just works. Unless Stackman improves the performance, using Stackman or legacy Stackless stack-switching makes no difference. If there was a performance gain, we would prefer option 3...5.\r\n\r\nAdvantages of option 1 and 2:\r\n\r\n* Implementation of option 1 or 2 is probably simpler than option 3 or 4. Adding a complete copy of the Stackman source causes its header files to live outside of ./Include. Therefore we would need to modify the installation process (make install and Windows Tools/msi) or the build process.\r\n* Selecting the right library is a concern of the Stackman installation.\r\n* Stackless source does not contain any precompiled binary.\r\n\r\nOption 5 would be fairly similar to the legacy solution. Upgrading to a newer Stackman version become complicated.","author":{"url":"https://github.com/akruis","@type":"Person","name":"akruis"},"datePublished":"2021-06-24T21:25:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":13},"url":"https://github.com/278/stackless/issues/278"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:37fa5df4-f87d-724a-76ff-e55141f06a1d
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idDF1A:2E9DA1:401017:57BE2A:6981032D
html-safe-noncef37f9c7200ae00e96c0b219a0022ae1b967e08b49595ab185fc80452e20f7a55
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERjFBOjJFOURBMTo0MDEwMTc6NTdCRTJBOjY5ODEwMzJEIiwidmlzaXRvcl9pZCI6IjI0MTk0NDYwMTk5OTUwODI2OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac3ca6aeb259738f8c0d15e42fa44ddaac665a8baf066dad8ddcc12fc02680d4ea
hovercard-subject-tagissue:929623624
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/stackless-dev/stackless/278/issue_layout
twitter:imagehttps://opengraph.githubassets.com/1d86ef9ccd646db643e1df6cdc9dc98b46ce773f9a72fb6d7c81011c09e24b34/stackless-dev/stackless/issues/278
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/1d86ef9ccd646db643e1df6cdc9dc98b46ce773f9a72fb6d7c81011c09e24b34/stackless-dev/stackless/issues/278
og:image:altThe idea to share the stack switching code between different projects is not new, see issue #10. Last year Kristján Valur Jónsson made another attempt: pull request #230: The Stackman project (http...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameakruis
hostnamegithub.com
expected-hostnamegithub.com
None39fe8101494cbb823c09b619b68c80cd4d05ab7279997038dbe06bb91608abe1
turbo-cache-controlno-preview
go-importgithub.com/stackless-dev/stackless git https://github.com/stackless-dev/stackless.git
octolytics-dimension-user_id27702805
octolytics-dimension-user_loginstackless-dev
octolytics-dimension-repository_id102492542
octolytics-dimension-repository_nwostackless-dev/stackless
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forktrue
octolytics-dimension-repository_parent_id81598961
octolytics-dimension-repository_parent_nwopython/cpython
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
released5b34a4e4898b066c629879feb4b184bc471d6a7
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/stackless-dev/stackless/issues/278#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fstackless-dev%2Fstackless%2Fissues%2F278
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://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fstackless-dev%2Fstackless%2Fissues%2F278
Sign up https://patch-diff.githubusercontent.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=stackless-dev%2Fstackless
Reloadhttps://patch-diff.githubusercontent.com/stackless-dev/stackless/issues/278
Reloadhttps://patch-diff.githubusercontent.com/stackless-dev/stackless/issues/278
Reloadhttps://patch-diff.githubusercontent.com/stackless-dev/stackless/issues/278
stackless-dev https://patch-diff.githubusercontent.com/stackless-dev
stacklesshttps://patch-diff.githubusercontent.com/stackless-dev/stackless
python/cpythonhttps://patch-diff.githubusercontent.com/python/cpython
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fstackless-dev%2Fstackless
Fork 64 https://patch-diff.githubusercontent.com/login?return_to=%2Fstackless-dev%2Fstackless
Star 1.1k https://patch-diff.githubusercontent.com/login?return_to=%2Fstackless-dev%2Fstackless
Code https://patch-diff.githubusercontent.com/stackless-dev/stackless
Issues 12 https://patch-diff.githubusercontent.com/stackless-dev/stackless/issues
Pull requests 3 https://patch-diff.githubusercontent.com/stackless-dev/stackless/pulls
Actions https://patch-diff.githubusercontent.com/stackless-dev/stackless/actions
Wiki https://patch-diff.githubusercontent.com/stackless-dev/stackless/wiki
Security 0 https://patch-diff.githubusercontent.com/stackless-dev/stackless/security
Insights https://patch-diff.githubusercontent.com/stackless-dev/stackless/pulse
Code https://patch-diff.githubusercontent.com/stackless-dev/stackless
Issues https://patch-diff.githubusercontent.com/stackless-dev/stackless/issues
Pull requests https://patch-diff.githubusercontent.com/stackless-dev/stackless/pulls
Actions https://patch-diff.githubusercontent.com/stackless-dev/stackless/actions
Wiki https://patch-diff.githubusercontent.com/stackless-dev/stackless/wiki
Security https://patch-diff.githubusercontent.com/stackless-dev/stackless/security
Insights https://patch-diff.githubusercontent.com/stackless-dev/stackless/pulse
hard switching using Stackmanhttps://patch-diff.githubusercontent.com/stackless-dev/stackless/issues/278#top
enhancementhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22enhancement%22
main-slphttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22main-slp%22
majorhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22major%22
stackless pythonhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22stackless%20python%22
https://github.com/akruis
https://github.com/akruis
akruishttps://github.com/akruis
on Jun 24, 2021https://github.com/stackless-dev/stackless/issues/278#issue-929623624
#10https://github.com/stackless-dev/stackless/issues/10
#230https://github.com/stackless-dev/stackless/pull/230
http://github.com/kristjanvalur/stackmanhttps://github.com/kristjanvalur/stackman
#230https://github.com/stackless-dev/stackless/pull/230
implement switching using the Stackman submodule #230https://github.com/stackless-dev/stackless/pull/230
enhancementhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22enhancement%22
main-slphttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22main-slp%22
majorhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22major%22
stackless pythonhttps://github.com/stackless-dev/stackless/issues?q=state%3Aopen%20label%3A%22stackless%20python%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.