В отличие от прошлых выпусков версия Pyston 2 помечена как стабильный, а не тестовый выпуск. Проведена большая работа по оптимизации производительности и Pyston 2 теперь быстрее штатного Python 3.8 примерно на 20% при прохождении тестового набора python-macrobenchmarks. Наиболее заметный выигрыш в производительности отмечается для нагрузок, свойственных web-приложениям. В отдельных тестах, таких как chaos.py и nbody.py, Pyston 2 опережает Python 3.8 в два раза. Ценой использования JIT является незначительное увеличение потребления памяти.
С точки зрения совместимости со штатным Python, проект Pyston преподносится как наиболее совместимая с CPython альтернативная реализация, так как Pyston является ответвлением от основной кодовой базы CPython. В Pyston поддерживаются все возможности CPython, в том числе C API для разработки расширений на языке Си. Изначально Pyston развивался компанией Dropbox, которая в 2017 году приняла решение прекратить разработку своими силами. В начале 2020 года основные разработчики Pyston основали свою компанию, полностью переосмыслили проект и стали заниматься Pyston полный рабочий день.
Технические подробности о начинке Pyston 2 пока не приводятся, упомянуто только использование DynASM JIT, inline-кэширования и общих оптимизаций CPython. Прошлая версия Pyston использовала JIT на основе трансляции отдельных методов (method-at-a-time), близкий к JIT современных JavaScript-движков. В JIT код на языке Python разбирался и транслировался в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходило обработку в оптимизаторе LLVM и передавалось для исполнения в JIT-движок LLVM, который преобразовывал IR-представление в машинный код.
Для получения информации о типах переменных для программ на динамическом языке Python применялась техника вероятностного предсказания типов объектов с последующим уточнением правильности выбора типа в процессе выполнения. Таким образом Pyston постоянно варьировал выполнение между двумя ветками — быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе. Работа могла осуществляться в многопоточном режиме, допускающем параллельное выполнение нескольких нитей кода на языке Python и избавленном от глобальной блокировки интерпретатора (GIL, global interpreter lock).
Источник: http://www.opennet.ru/opennews/art.shtml?num=53987