Saya tidak tahu dari mana asal "Stackless 10% lebih cepat" dari Wiki, tetapi saya tidak pernah mencoba mengukur angka-angka kinerja itu. Saya tidak bisa memikirkan apa yang dilakukan Stackless untuk membuat perbedaan sebesar itu.
Stackless adalah alat yang luar biasa dengan beberapa masalah organisasi / politik.
Yang pertama berasal dari sejarah. Christian Tismer mulai berbicara tentang apa yang akhirnya menjadi Stackless sekitar 10 tahun yang lalu. Dia punya ide tentang apa yang dia inginkan, tetapi kesulitan menjelaskan apa yang dia lakukan dan mengapa orang harus menggunakannya. Ini sebagian karena latar belakangnya tidak memiliki pelatihan CS tentang ide-ide seperti coroutine dan karena presentasi dan diskusinya sangat berorientasi pada implementasi, yang sulit bagi siapa pun yang belum terlalu dalam untuk memahami bagaimana menggunakannya sebagai solusi untuk Masalah mereka.
Karena alasan itu, dokumentasi awal buruk. Ada beberapa deskripsi tentang cara menggunakannya, dengan yang terbaik dari kontributor pihak ketiga. Di PyCon 2007 saya memberi ceramah tentang " Menggunakan Stackless " yang berjalan cukup baik, menurut angka survei PyCon. Richard Tew telah melakukan pekerjaan luar biasa mengumpulkan ini, memperbarui stackless.com , dan mempertahankan distribusi ketika rilis Python baru muncul. Dia adalah karyawan Game PKC , pengembang EVE Online, yang menggunakan Stackless sebagai bagian penting dari sistem permainan mereka.
Game CCP juga merupakan contoh dunia nyata terbesar yang digunakan orang ketika mereka berbicara tentang Stackless. Tutorial utama untuk Stackless adalah Grant Olson " Pengantar Pemrograman Bersamaan dengan Stackless Python ", yang juga berorientasi pada game. Saya pikir ini memberi orang ide miring bahwa Stackless berorientasi pada game, saat itu lebih banyak game yang lebih mudah berorientasi pada kelanjutan.
Kesulitan lain adalah kode sumber. Dalam bentuk aslinya diperlukan perubahan ke banyak bagian Python, yang membuat Guido van Rossum, pemimpin Python, waspada. Sebagian alasannya, saya pikir, adalah dukungan untuk panggilan / cc yang kemudian dihapus sebagai "terlalu banyak seperti mendukung goto ketika ada bentuk tingkat tinggi yang lebih baik." Saya tidak yakin tentang sejarah ini, jadi baca saja paragraf ini sebagai "Stackless dulu membutuhkan terlalu banyak perubahan."
Rilis selanjutnya tidak memerlukan perubahan, dan Tismer terus mendorong untuk dimasukkan dalam Python. Meskipun ada beberapa pertimbangan, sikap resmi (sejauh yang saya tahu) adalah bahwa CPython tidak hanya implementasi Python tetapi juga dimaksudkan sebagai implementasi referensi, dan itu tidak akan mencakup fungsi Stackless karena tidak dapat diimplementasikan oleh Jython atau Iron Python.
Sama sekali tidak ada rencana untuk " perubahan signifikan pada basis kode ". Tautan kutipan dan referensi dari Arafangion (lihat komentar) berasal dari sekitar 2000/2001. Perubahan struktural telah lama dilakukan, dan itulah yang saya sebutkan di atas. Stackless seperti sekarang stabil dan matang, dengan hanya sedikit perubahan pada basis kode selama beberapa tahun terakhir.
Satu batasan terakhir dengan Stackless - tidak ada pendukung kuat untuk Stackless. Tismer sekarang sangat terlibat dengan PyPy , yang merupakan implementasi dari Python untuk Python. Dia telah mengimplementasikan fungsi Stackless di PyPy dan menganggapnya jauh lebih unggul daripada Stackless itu sendiri, dan merasa bahwa PyPy adalah jalan masa depan. Tew mempertahankan Stackless tetapi dia tidak tertarik pada advokasi. Saya dianggap berada di peran itu, tetapi tidak bisa melihat bagaimana saya bisa mendapat penghasilan darinya.
Meskipun jika Anda ingin pelatihan di Stackless, jangan ragu untuk menghubungi saya ! :)
Saya juga tertarik dengan jawabannya di sini. Saya telah bermain sedikit dengan Stackless dan sepertinya itu akan menjadi tambahan yang bagus untuk standar Python.
PEP 219 menyebutkan potensi kesulitan dengan memanggil kode Python dari kode C, jika Python ingin mengubah ke tumpukan yang berbeda. Perlu ada cara untuk mendeteksi dan mencegah hal ini (untuk menghindari membuang tumpukan C). Saya pikir ini bisa ditelusuri, jadi saya juga bertanya-tanya mengapa Stackless harus berdiri sendiri.
sumber