Ich weiß nicht, woher das "Stackless ist 10% schneller" im Wiki stammt, aber andererseits habe ich nie versucht, diese Leistungszahlen zu messen. Ich kann mir nicht vorstellen, was Stackless tut, um einen so großen Unterschied zu machen.
Stackless ist ein erstaunliches Werkzeug mit mehreren organisatorischen / politischen Problemen.
Der erste stammt aus der Geschichte. Christian Tismer begann darüber zu sprechen, was vor etwa 10 Jahren schließlich stapellos wurde. Er hatte eine Vorstellung davon, was er wollte, aber es fiel ihm schwer zu erklären, was er tat und warum die Leute es benutzen sollten. Dies liegt zum Teil daran, dass sein Hintergrund nicht über das CS-Training für Ideen wie Coroutinen verfügte und dass seine Präsentationen und Diskussionen sehr implementierungsorientiert sind, was für jeden, der noch keine Erfahrung in der Fortsetzung hat, schwer zu verstehen ist, wie man es als Lösung verwendet Ihre Probleme.
Aus diesem Grund war die Erstdokumentation schlecht. Es gab einige Beschreibungen zur Verwendung, wobei die besten von Drittanbietern stammen. Auf der PyCon 2007 hielt ich einen Vortrag über " Using Stackless ", der laut den PyCon-Umfragewerten recht gut ankam. Richard Tew hat großartige Arbeit geleistet , diese gesammelt , stackless.com aktualisiert und die Distribution beibehalten, wenn neue Python-Versionen erscheinen. Er ist Mitarbeiter von CCP Games , Entwickler von EVE Online, das Stackless als wesentlichen Bestandteil seines Spielesystems verwendet.
CCP-Spiele sind auch das größte reale Beispiel, das Menschen verwenden, wenn sie über Stackless sprechen. Das Haupt-Tutorial für Stackless ist Grant Olsons " Einführung in die gleichzeitige Programmierung mit Stackless Python ", das ebenfalls spielorientiert ist. Ich denke, dies gibt den Leuten eine verzerrte Vorstellung davon, dass Stackless spielorientiert ist, wenn es mehr darum geht, dass Spiele leichter fortlauforientiert sind.
Eine weitere Schwierigkeit war der Quellcode. In seiner ursprünglichen Form erforderte es Änderungen an vielen Teilen von Python, was Guido van Rossum, den Python-Anführer, vorsichtig machte. Ich denke, ein Teil des Grundes war die Unterstützung für call / cc, die später entfernt wurde, weil sie "zu sehr der Unterstützung eines goto ähnelt, wenn es bessere übergeordnete Formulare gibt". Ich bin mir über diesen Verlauf nicht sicher. Lesen Sie diesen Absatz einfach als "Stapellos erforderte früher zu viele Änderungen."
Spätere Versionen erforderten keine Änderungen, und Tismer drängte weiterhin auf die Aufnahme in Python. Obwohl einige Überlegungen angestellt wurden, ist die offizielle Haltung (soweit ich weiß), dass CPython nicht nur eine Python-Implementierung ist, sondern auch als Referenzimplementierung gedacht ist und keine stapellose Funktionalität enthält, da es von Jython nicht implementiert werden kann oder Iron Python.
Es gibt absolut keine Pläne für " wesentliche Änderungen an der Codebasis ". Das Zitat und der Referenz-Hyperlink von Arafangion (siehe Kommentar) stammen aus dem Jahr 2000/2001. Die strukturellen Veränderungen sind seit langem durchgeführt worden, und das habe ich oben erwähnt. Stackless wie es jetzt ist, ist stabil und ausgereift, mit nur geringfügigen Änderungen an der Codebasis in den letzten Jahren.
Eine letzte Einschränkung bei Stackless - es gibt keinen starken Befürworter für Stackless. Tismer ist jetzt tief in PyPy involviert , eine Implementierung von Python für Python. Er hat die Stackless-Funktionalität in PyPy implementiert und hält sie für viel besser als Stackless selbst und ist der Meinung, dass PyPy der Weg der Zukunft ist. Tew behauptet Stackless, aber er interessiert sich nicht für Anwaltschaft. Ich überlegte, in dieser Rolle zu sein, konnte aber nicht sehen, wie ich damit ein Einkommen erzielen könnte.
Wenn Sie in Stackless trainieren möchten, können Sie mich gerne kontaktieren ! :) :)
Die Antworten hier interessieren mich auch. Ich habe ein bisschen mit Stackless gespielt und es sieht so aus, als wäre es eine gute, solide Ergänzung zu Standard-Python.
In PEP 219 werden mögliche Schwierigkeiten beim Aufrufen von Python-Code aus C-Code erwähnt, wenn Python auf einen anderen Stapel wechseln möchte. Es müsste Möglichkeiten geben, dies zu erkennen und zu verhindern (um zu vermeiden, dass der C-Stapel weggeworfen wird). Ich denke, das ist nachvollziehbar, deshalb frage ich mich auch, warum Stackless für sich allein stehen muss.
quelle