Non so da dove provenga "Stackless è del 10% più veloce" sul Wiki, ma poi non ho mai provato a misurare quei numeri delle prestazioni. Non riesco a pensare a cosa fa Stackless per fare la differenza così grande.
Stackless è uno strumento straordinario con diversi problemi organizzativi / politici.
Il primo viene dalla storia. Christian Tismer ha iniziato a parlare di ciò che alla fine è diventato Stackless circa 10 anni fa. Aveva un'idea di ciò che voleva, ma non riusciva a spiegare cosa stesse facendo e perché la gente dovesse usarlo. Ciò è in parte dovuto al fatto che il suo background non ha avuto la formazione CS in merito a idee come le coroutine e perché le sue presentazioni e discussioni sono molto orientate all'implementazione, il che è difficile per chiunque non sia già alla moda nelle continuazioni per capire come usarlo come soluzione per i loro problemi.
Per tale motivo, la documentazione iniziale era scarsa. Ci sono state alcune descrizioni di come usarlo, con il meglio da collaboratori di terze parti. Al PyCon 2007 ho tenuto un discorso su " Usare Stackless " che è andato abbastanza bene, secondo i numeri dell'indagine PyCon. Richard Tew ha fatto un ottimo lavoro nel collezionarli, aggiornando stackless.com e mantenendo la distribuzione quando arrivano nuove versioni di Python. È un dipendente di CCP Games , sviluppatori di EVE Online, che utilizza Stackless come parte essenziale del proprio sistema di gioco.
I giochi del PCC sono anche il più grande esempio nel mondo reale che le persone usano quando parlano di Stackless. Il tutorial principale di Stackless è " Introduzione alla programmazione concorrente con Stackless Python " di Grant Olson , anch'esso orientato al gioco. Penso che questo dia alle persone un'idea distorta che Stackless sia orientato ai giochi, quando è più che i giochi sono più facilmente orientati alla continuazione.
Un'altra difficoltà è stata il codice sorgente. Nella sua forma originale ha richiesto modifiche a molte parti di Python, il che ha reso Guido van Rossum, il protagonista di Python, diffidente. Parte del motivo, penso, era il supporto per call / cc che è stato successivamente rimosso come "troppo simile al supporto di un goto quando ci sono moduli di livello superiore migliori". Non sono sicuro di questa storia, quindi leggi questo paragrafo come "Stackless utilizzato per richiedere troppe modifiche".
Le versioni successive non hanno richiesto le modifiche e Tismer ha continuato a spingere per la sua inclusione in Python. Sebbene ci fosse qualche considerazione, la posizione ufficiale (per quanto ne so) è che CPython non è solo un'implementazione di Python ma è intesa come un'implementazione di riferimento e non includerà la funzionalità Stackless perché non può essere implementata da Jython o Iron Python.
Non ci sono assolutamente piani per " modifiche significative alla base di codice ". Quella citazione e collegamento ipertestuale di riferimento di Arafangion (vedi il commento) risalgono all'incirca al 2000/2001. I cambiamenti strutturali sono stati fatti da tempo, ed è quello che ho menzionato sopra. Impilabile come è ora è stabile e maturo, con solo lievi modifiche alla base di codice negli ultimi anni.
Un'ultima limitazione con Stackless: non esiste un forte sostenitore di Stackless. Tismer è ora profondamente coinvolto con PyPy , che è un'implementazione di Python per Python. Ha implementato la funzionalità Stackless in PyPy e la considera molto superiore alla stessa Stackless, e ritiene che PyPy sia la via del futuro. Tew mantiene Stackless ma non è interessato alla difesa. Ho considerato di essere in quel ruolo, ma non riuscivo a vedere come avrei potuto ricavarne un reddito.
Ma se vuoi allenarti in Stackless, sentiti libero di contattarmi ! :)