19 октября на конференции SPLASH 2021 состоится выступление [ Джонатана Уортингтона ](
https://www.jnthn.net/story.html ) , основного разработчика виртуальной машины [ MoarVM ](
https://www.moarvm.org/ ) для языка программирования [ Raku ](
https://raku.org/ ) .MoarVM явилась результатом юношеского максимализма. Я участвовал в разработке компилятора Raku (на тот момент Perl 6), и рассматривая виртуальную машину Parrot, на которую мы ориентировались тогда, видя все её проблемы (особенно в части производительности и многопоточности), думал: а не попробовать ли создать что-то получше? Благо на тот момент свободного времени было предостаточно... В течение нескольких лет, с помощью десятков добровольцев, удалось полностью заменить Parrot и сделать MoarVM предпочтительной средой исполнения. [прим. пер. существует [ официальный набор тестов ](
https://github.com/Raku/roast ) для языка программирования Raku. Любая реализация проходящая эти тесты может называться Raku. В предыдущем предложении имеется ввиду, что предпочтительной виртуальной машиной для «эталонной» реализации считается MoarVM].Почти десять лет прошло с момента начала работы над MoarVM.Простой интерпретатор байт-кода, реализованный на первых порах, неустанно обрастал профессиональным инструментарием: типо-ориентированными оптимизациями, [ деоптимизацией ](
https://www.youtube.com/watch?v=3umNn1KnlCY ) , подстановками (inlining), заменами на стеке, динамической компиляцией (JIT), статическим анализом времени жизни (области достижимости) объекта ( [ escape analysis ](
https://www.youtube.com/watch?v=nyULDBBqe8w ) ).За перечисленными улучшениями последовали новые: были переработаны некоторые горячие операции, ранее реализованные в целях повышения производительности в виде примитивов уровня виртуальной машины, и обернувшиеся бутылочным горлышком, будучи невидимыми для механизмов оптимизации.Совсем недавно появился новый [ механизм диспетчеризации ](
https://www.youtube.com/watch?v=yRFyGDVHl0E ) , позволивший заменить ряд алгоритмов для обработки особых случаев (например, методов и функций с [ множественной диспетчеризацией ](
https://docs.raku.org/language/functions#Multi-dispatch ) ) на единый стандартный способ. Хотя многоязычность никогда не предполагалась при разработке MoarVM, в процессе улучшения производительности и попытке справиться с её растущей сложностью, проект пришел в состояние достаточно сильного абстрагирования от языка программирования Raku.В выступлении будет сделан обзор пройденного в ходе работы над MoarVM пути, освещены наиболее интересные вызовы, извлечённые уроки и компромиссы на которые пришлось пойти.Будет описана концепция возобновляемой диспетчеризации, позволившая ускорить некоторые неподдающиеся ранее оптимизации участки. Так же будет рассказано и о проблемах которые повлекли указанные подходы.
Ссылка:
https://www.linux.org.ru/news/conference/16559986