https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Stackless_Python Stackless Python - Revision history 2025-05-25T19:48:50Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.2 https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1289742878&oldid=prev TetrarchTurtle: Fixed grammar 2025-05-10T15:11:42Z <p>Fixed grammar</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:11, 10 May 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 29:</td> <td colspan="2" class="diff-lineno">Line 29:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', was a [[Python (programming language)|Python programming language]] interpreter<del style="font-weight: bold; text-decoration: none;">,</del> <del style="font-weight: bold; text-decoration: none;">since</del> <del style="font-weight: bold; text-decoration: none;">Februrar</del> <del style="font-weight: bold; text-decoration: none;">2025</del> <del style="font-weight: bold; text-decoration: none;">is</del> <del style="font-weight: bold; text-decoration: none;">its</del> <del style="font-weight: bold; text-decoration: none;">Github</del> <del style="font-weight: bold; text-decoration: none;">repository</del> <del style="font-weight: bold; text-decoration: none;">archived</del>, and <del style="font-weight: bold; text-decoration: none;">has</del> <del style="font-weight: bold; text-decoration: none;">officially</del> <del style="font-weight: bold; text-decoration: none;">announced</del> <del style="font-weight: bold; text-decoration: none;">that</del> <del style="font-weight: bold; text-decoration: none;">the project is</del> discontinued. </div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', was a [[Python (programming language)|Python programming language]] interpreter<ins style="font-weight: bold; text-decoration: none;">.</ins> <ins style="font-weight: bold; text-decoration: none;">Its</ins> <ins style="font-weight: bold; text-decoration: none;">Github</ins> <ins style="font-weight: bold; text-decoration: none;">repository</ins> <ins style="font-weight: bold; text-decoration: none;">has</ins> <ins style="font-weight: bold; text-decoration: none;">been</ins> <ins style="font-weight: bold; text-decoration: none;">archived</ins> <ins style="font-weight: bold; text-decoration: none;">since February</ins> <ins style="font-weight: bold; text-decoration: none;">2025</ins>, and <ins style="font-weight: bold; text-decoration: none;">the</ins> <ins style="font-weight: bold; text-decoration: none;">project</ins> <ins style="font-weight: bold; text-decoration: none;">has</ins> <ins style="font-weight: bold; text-decoration: none;">been</ins> <ins style="font-weight: bold; text-decoration: none;">officially</ins> discontinued. </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It was so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (computing)|threads]]. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It was so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (computing)|threads]]. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> </tr> </table> TetrarchTurtle https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1289275584&oldid=prev 185.17.14.5 at 15:41, 7 May 2025 2025-05-07T15:41:48Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:41, 7 May 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 29:</td> <td colspan="2" class="diff-lineno">Line 29:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', <del style="font-weight: bold; text-decoration: none;">is</del> a [[Python (programming language)|Python programming language]] interpreter, so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (computing)|threads]]. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', <ins style="font-weight: bold; text-decoration: none;">was</ins> a [[Python (programming language)|Python programming language]] interpreter,<ins style="font-weight: bold; text-decoration: none;"> since Februrar 2025 is its Github repository archived, and has officially announced that the project is discontinued. </ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">It was</ins> so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (computing)|threads]]. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> </tr> </table> 185.17.14.5 https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1268124943&oldid=prev JJMC89 bot III: Moving :Category:Software using the PSF license to :Category:Software using the Python Software Foundation License per Wikipedia:Categories for discussion/Speedy 2025-01-08T07:17:54Z <p>Moving <a href="/w/index.php?title=Category:Software_using_the_PSF_license&amp;action=edit&amp;redlink=1" class="new" title="Category:Software using the PSF license (page does not exist)">Category:Software using the PSF license</a> to <a href="/wiki/Category:Software_using_the_Python_Software_Foundation_License" title="Category:Software using the Python Software Foundation License">Category:Software using the Python Software Foundation License</a> per <a href="/wiki/Wikipedia:Categories_for_discussion/Speedy" title="Wikipedia:Categories for discussion/Speedy">Wikipedia:Categories for discussion/Speedy</a></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:17, 8 January 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 64:</td> <td colspan="2" class="diff-lineno">Line 64:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Concurrent computing]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Concurrent computing]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Python (programming language) implementations]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Python (programming language) implementations]]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Software using the <del style="font-weight: bold; text-decoration: none;">PSF</del> <del style="font-weight: bold; text-decoration: none;">license</del>]]</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Software using the <ins style="font-weight: bold; text-decoration: none;">Python</ins> <ins style="font-weight: bold; text-decoration: none;">Software Foundation License</ins>]]</div></td> </tr> </table> JJMC89 bot III https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249397307&oldid=prev Comp.arch at 18:16, 4 October 2024 2024-10-04T18:16:30Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:16, 4 October 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 36:</td> <td colspan="2" class="diff-lineno">Line 36:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[global interpreter lock]] (GIL), nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016 |archive-date=23 June 2020 |archive-url=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home |url-status=dead }}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[global interpreter lock]] (GIL), nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016 |archive-date=23 June 2020 |archive-url=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home |url-status=dead }}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[plug-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=<del style="font-weight: bold; text-decoration: none;">http</del>://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[plug-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=<ins style="font-weight: bold; text-decoration: none;">https</ins>://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Although the whole Stackless is a separate distribution, its switching functionality has been successfully packaged as a [[CPython]] extension called greenlet.&lt;ref&gt;{{cite web|url=<del style="font-weight: bold; text-decoration: none;">http</del>://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}&lt;/ref&gt; It is used by a number of libraries (e.g. gevent&lt;ref&gt;{{cite web|url=<del style="font-weight: bold; text-decoration: none;">http</del>://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}&lt;/ref&gt;) to provide a [[<del style="font-weight: bold; text-decoration: none;">Green</del> thread|green threading]] solution for CPython. Python since has received a native solution for green threads: [[Async/await|await]]/async.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Although the whole Stackless is a separate distribution, its switching functionality has been successfully packaged as a [[CPython]] extension called greenlet.&lt;ref&gt;{{cite web|url=<ins style="font-weight: bold; text-decoration: none;">https</ins>://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}&lt;/ref&gt; It is used by a number of libraries (e.g. gevent&lt;ref&gt;{{cite web|url=<ins style="font-weight: bold; text-decoration: none;">https</ins>://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}&lt;/ref&gt;) to provide a [[<ins style="font-weight: bold; text-decoration: none;">green</ins> thread|green threading]] solution for CPython. Python since has received a native solution for green threads: [[Async/await|await]]/async.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Stackless is used extensively in the implementation of the ''[[Eve Online]]'' massively multiplayer online game as well as in [[IronPort]]'s mail platform.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Stackless is used extensively in the implementation of the ''[[Eve Online]]'' massively multiplayer online game as well as in [[IronPort]]'s mail platform.</div></td> </tr> </table> Comp.arch https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249396853&oldid=prev Comp.arch at 18:13, 4 October 2024 2024-10-04T18:13:17Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:13, 4 October 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 34:</td> <td colspan="2" class="diff-lineno">Line 34:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (operating system)|kernel]]—[[context switch]]ing and [[scheduling (computing)|task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (operating system)|kernel]]—[[context switch]]ing and [[scheduling (computing)|task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[<del style="font-weight: bold; text-decoration: none;">Global</del> <del style="font-weight: bold; text-decoration: none;">Interpreter</del> <del style="font-weight: bold; text-decoration: none;">Lock</del>]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016 |archive-date=23 June 2020 |archive-url=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home |url-status=dead }}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[<ins style="font-weight: bold; text-decoration: none;">global</ins> <ins style="font-weight: bold; text-decoration: none;">interpreter</ins> <ins style="font-weight: bold; text-decoration: none;">lock</ins>]]<ins style="font-weight: bold; text-decoration: none;"> (GIL)</ins>, nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016 |archive-date=23 June 2020 |archive-url=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home |url-status=dead }}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[<del style="font-weight: bold; text-decoration: none;">Plug</del>-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[<ins style="font-weight: bold; text-decoration: none;">plug</ins>-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> </tr> </table> Comp.arch https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249396671&oldid=prev Comp.arch at 18:12, 4 October 2024 2024-10-04T18:12:05Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:12, 4 October 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 15:</td> <td colspan="2" class="diff-lineno">Line 15:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest release version = {{wikidata|property|edit|reference|P348}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest release version = {{wikidata|property|edit|reference|P348}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest release date = {{Start date and age|2020|01|22}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest release date = {{Start date and age|2020|01|22}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| latest preview version = {{start date and age|{{wikidata|qualifier|P348|P577}}}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| latest preview version =<ins style="font-weight: bold; text-decoration: none;"> 3.9.0 alpha 0 &lt;!--</ins> {{start date and age|{{wikidata|qualifier|P348|P577}}}}<ins style="font-weight: bold; text-decoration: none;"> --&gt;</ins></div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest preview date = </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| latest preview date = </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| frequently updated = </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| frequently updated = </div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 26:</td> <td colspan="2" class="diff-lineno">Line 26:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| genre = [[Interpreter (computing)|Interpreter]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| genre = [[Interpreter (computing)|Interpreter]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| license = [[Python Software Foundation License]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| license = [[Python Software Foundation License]]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| website = {{URL|<del style="font-weight: bold; text-decoration: none;">http</del>://<del style="font-weight: bold; text-decoration: none;">www</del>.stackless.com/}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| website = {{URL|<ins style="font-weight: bold; text-decoration: none;">https</ins>://<ins style="font-weight: bold; text-decoration: none;">github</ins>.<ins style="font-weight: bold; text-decoration: none;">com/</ins>stackless<ins style="font-weight: bold; text-decoration: none;">-dev/stackless/wiki/|github</ins>.com/<ins style="font-weight: bold; text-decoration: none;">stackless-dev</ins>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Comp.arch https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1207052469&oldid=prev Lollipoplollipoplollipop: Importing Wikidata short description: "Alternative Python implementation" 2024-02-13T21:14:30Z <p>Importing Wikidata <a href="/wiki/Wikipedia:Short_description" title="Wikipedia:Short description">short description</a>: &quot;Alternative Python implementation&quot;</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:14, 13 February 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Alternative Python implementation}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{multiple|</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{multiple|</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{primary sources|date=December 2017}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{primary sources|date=December 2017}}</div></td> </tr> </table> Lollipoplollipoplollipop https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1146802785&oldid=prev InternetArchiveBot: Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.3) (Whoop whoop pull up - 12960 2023-03-27T01:30:29Z <p>Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.3) (<a href="/wiki/User:Whoop_whoop_pull_up" title="User:Whoop whoop pull up">Whoop whoop pull up</a> - 12960</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 01:30, 27 March 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 33:</td> <td colspan="2" class="diff-lineno">Line 33:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (operating system)|kernel]]—[[context switch]]ing and [[scheduling (computing)|task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (operating system)|kernel]]—[[context switch]]ing and [[scheduling (computing)|task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016<ins style="font-weight: bold; text-decoration: none;"> |archive-date=23 June 2020 |archive-url=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home |url-status=dead </ins>}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[Plug-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[Plug-in (computing)|extension]] or [[library (computing)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> </tr> </table> InternetArchiveBot https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1143975990&oldid=prev Bumm13: formatting fixes 2023-03-11T02:11:36Z <p>formatting fixes</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 02:11, 11 March 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 28:</td> <td colspan="2" class="diff-lineno">Line 28:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', is a [[Python (programming language)|Python programming language]] interpreter, so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (<del style="font-weight: bold; text-decoration: none;">computer science</del>)|<del style="font-weight: bold; text-decoration: none;">thread</del>]]<del style="font-weight: bold; text-decoration: none;">s</del>. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Stackless Python''', or '''Stackless''', is a [[Python (programming language)|Python programming language]] interpreter, so named because it avoids depending on the [[C (programming language)|C]] [[call stack]] for its own stack. In practice, Stackless Python uses the C stack, but the stack is cleared between function calls.&lt;ref&gt;Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]{{cbignore}}: {{cite AV media| url = https://www.youtube.com/watch?v=pDkrkP0yf70| title = The story of stackless Python | website=[[YouTube]]}}{{cbignore}}&lt;/ref&gt; The most prominent feature of Stackless is [[microthread]]s, which avoid much of the overhead associated with usual operating system [[Thread (<ins style="font-weight: bold; text-decoration: none;">computing</ins>)|<ins style="font-weight: bold; text-decoration: none;">threads</ins>]]. In addition to Python features, Stackless also adds support for [[coroutine]]s, communication [[channel (programming)|channels]], and task [[serialization]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 35:</td> <td colspan="2" class="diff-lineno">Line 35:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[<del style="font-weight: bold; text-decoration: none;">Software</del> <del style="font-weight: bold; text-decoration: none;">extension</del>|extension]] or [[library (<del style="font-weight: bold; text-decoration: none;">computer science</del>)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[<ins style="font-weight: bold; text-decoration: none;">Plug-in</ins> <ins style="font-weight: bold; text-decoration: none;">(computing)</ins>|extension]] or [[library (<ins style="font-weight: bold; text-decoration: none;">computing</ins>)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[Just-in-time compilation|JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Although the whole Stackless is a separate distribution, its switching functionality has been successfully packaged as a [[CPython]] extension called greenlet.&lt;ref&gt;{{cite web|url=http://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}&lt;/ref&gt; It is used by a number of libraries (e.g. gevent&lt;ref&gt;{{cite web|url=http://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}&lt;/ref&gt;) to provide a [[Green <del style="font-weight: bold; text-decoration: none;">threads</del>|green threading]] solution for CPython. Python since has received a native solution for green threads: [[await]]/async.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Although the whole Stackless is a separate distribution, its switching functionality has been successfully packaged as a [[CPython]] extension called greenlet.&lt;ref&gt;{{cite web|url=http://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}&lt;/ref&gt; It is used by a number of libraries (e.g. gevent&lt;ref&gt;{{cite web|url=http://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}&lt;/ref&gt;) to provide a [[Green <ins style="font-weight: bold; text-decoration: none;">thread</ins>|green threading]] solution for CPython. Python since has received a native solution for green threads: [[<ins style="font-weight: bold; text-decoration: none;">Async/await|</ins>await]]/async.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Stackless is used extensively in the implementation of the ''[[Eve Online]]'' massively multiplayer online game as well as in [[IronPort]]'s mail platform.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Stackless is used extensively in the implementation of the ''[[Eve Online]]'' massively multiplayer online game as well as in [[IronPort]]'s mail platform.</div></td> </tr> </table> Bumm13 https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1143975733&oldid=prev Bumm13: /* Design */ formatting fixes 2023-03-11T02:08:29Z <p><span class="autocomment">Design: </span> formatting fixes</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 02:08, 11 March 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 31:</td> <td colspan="2" class="diff-lineno">Line 31:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Design==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (<del style="font-weight: bold; text-decoration: none;">computer</del> <del style="font-weight: bold; text-decoration: none;">science</del>)|kernel]]—[[context switch]]ing and [[task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[<del style="font-weight: bold; text-decoration: none;">green threads|</del>green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>With Stackless Python, a running program is split into microthreads that are managed by the language interpreter itself, not the operating system [[kernel (<ins style="font-weight: bold; text-decoration: none;">operating</ins> <ins style="font-weight: bold; text-decoration: none;">system</ins>)|kernel]]—[[context switch]]ing and [[<ins style="font-weight: bold; text-decoration: none;">scheduling (computing)|</ins>task scheduling]] is done purely in the interpreter (these are thus also regarded as a form of [[green thread]]). Microthreads manage the execution of different subtasks in a program on the same CPU core. Thus, they are an alternative to event-based asynchronous programming and also avoid the overhead of using separate threads for single-core programs (because no mode switching between user mode and kernel mode needs to be done, so CPU usage can be reduced).</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Although microthreads make it easier to deal with running subtasks on a single core, Stackless Python does not remove CPython's [[Global Interpreter Lock]], nor does it use multiple threads and/or processes. So it allows only [[cooperative multitasking]] on a shared CPU and not [[parallel computing|parallelism]] (preemption was originally not available but is now in some form&lt;ref&gt;{{cite web |url=https://bitbucket.org/stackless-dev/stackless/wiki/Home |title=About Stackless |quote=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. |accessdate=26 August 2016}}&lt;/ref&gt;). To use multiple CPU cores, one would still need to build an interprocess communication system on top of Stackless Python processes.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[Software extension|extension]] or [[library (computer science)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Due to the considerable number of changes in the source, Stackless Python cannot be installed on a preexisting Python installation as an [[Software extension|extension]] or [[library (computer science)|library]]. It is instead a complete Python distribution in itself. The majority of Stackless's features have also been implemented in [[PyPy]], a [[Self-hosting (compilers)|self-hosting]] Python interpreter and [[<ins style="font-weight: bold; text-decoration: none;">Just-in-time compilation|</ins>JIT compiler]].&lt;ref&gt;{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Use==</div></td> </tr> </table> Bumm13