https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Stackless_PythonStackless Python - Revision history2025-05-25T19:48:50ZRevision history for this page on the wikiMediaWiki 1.45.0-wmf.2https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1289742878&oldid=prevTetrarchTurtle: Fixed grammar2025-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.<ref>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}}</ref> 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.<ref>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}}</ref> 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>TetrarchTurtlehttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1289275584&oldid=prev185.17.14.5 at 15:41, 7 May 20252025-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.<ref>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}}</ref> 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.<ref>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}}</ref> 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.5https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1268124943&oldid=prevJJMC89 bot III: Moving :Category:Software using the PSF license to :Category:Software using the Python Software Foundation License per Wikipedia:Categories for discussion/Speedy2025-01-08T07:17:54Z<p>Moving <a href="/w/index.php?title=Category:Software_using_the_PSF_license&action=edit&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 IIIhttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249397307&oldid=prevComp.arch at 18:16, 4 October 20242024-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<ref>{{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 }}</ref>). 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<ref>{{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 }}</ref>). 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]].<ref>{{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}}</ref></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]].<ref>{{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}}</ref></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.<ref>{{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}}</ref> It is used by a number of libraries (e.g. gevent<ref>{{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}}</ref>) 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.<ref>{{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}}</ref> It is used by a number of libraries (e.g. gevent<ref>{{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}}</ref>) 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.archhttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249396853&oldid=prevComp.arch at 18:13, 4 October 20242024-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<ref>{{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 }}</ref>). 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<ref>{{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 }}</ref>). 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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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.archhttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1249396671&oldid=prevComp.arch at 18:12, 4 October 20242024-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 <!--</ins> {{start date and age|{{wikidata|qualifier|P348|P577}}}}<ins style="font-weight: bold; text-decoration: none;"> --></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.archhttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1207052469&oldid=prevLollipoplollipoplollipop: 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>: "Alternative Python implementation"</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>Lollipoplollipoplollipophttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1146802785&oldid=prevInternetArchiveBot: Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.3) (Whoop whoop pull up - 129602023-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<ref>{{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}}</ref>). 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<ref>{{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>}}</ref>). 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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></div></td>
</tr>
</table>InternetArchiveBothttps://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1143975990&oldid=prevBumm13: formatting fixes2023-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.<ref>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}}</ref> 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.<ref>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}}</ref> 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<ref>{{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}}</ref>). 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<ref>{{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}}</ref>). 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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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.<ref>{{cite web|url=http://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}</ref> It is used by a number of libraries (e.g. gevent<ref>{{cite web|url=http://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}</ref>) 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.<ref>{{cite web|url=http://greenlet.readthedocs.org/en/latest/|title=greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation|website=greenlet.readthedocs.org}}</ref> It is used by a number of libraries (e.g. gevent<ref>{{cite web|url=http://www.gevent.org|title=What is gevent? — gevent 1.3.0.dev0 documentation|website=www.gevent.org}}</ref>) 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>Bumm13https://en.wikipedia.org/w/index.php?title=Stackless_Python&diff=1143975733&oldid=prevBumm13: /* Design */ formatting fixes2023-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<ref>{{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}}</ref>). 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<ref>{{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}}</ref>). 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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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]].<ref>{{cite web|url=http://pypy.readthedocs.org/en/latest/stackless.html|title=Application-level Stackless features — PyPy documentation|website=pypy.readthedocs.org}}</ref></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