-Поиск по дневнику

Поиск сообщений в rss_rss_linux_org_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 24.08.2007
Записей: 8221
Комментариев: 1
Написано: 1


Мысли о десятилетии развития MoarVM -- виртуальной машины языка Raku

Среда, 29 Сентября 2021 г. 03:57 + в цитатник

19 октября на конференции SPLASH 2021 состоится выступление Джонатана Уортингтона — основного разработчика виртуальной машины MoarVM для языка программирования Raku.

MoarVM явилась результатом юношеского максимализма. Я участвовал в разработке компилятора Raku (на тот момент Perl 6) и, рассматривая виртуальную машину Parrot, на которую мы ориентировались тогда, видя все её проблемы (особенно в части производительности и многопоточности), думал: а не попробовать ли создать что-то получше? Благо, на тот момент свободного времени было предостаточно... В течение нескольких лет с помощью десятков добровольцев удалось полностью заменить Parrot и сделать MoarVM основной средой исполнения. [прим. пер.: существует официальный набор тестов для языка программирования Raku. Любая реализация, проходящая эти тесты, может называться Raku. Уортингтон имеет в виду, что предпочтительной виртуальной машиной для «эталонной» реализации считается MoarVM].

Почти десять лет прошло с момента начала работы над MoarVM.

Простой интерпретатор байт-кода, реализованный на первых порах, неустанно обрастал профессиональным инструментарием: типо-ориентированными оптимизациями, деоптимизацией, подстановками (inlining), заменами на стеке, динамической компиляцией (JIT), статическим анализом времени жизни (области достижимости) объекта (escape analysis).

За перечисленными улучшениями последовали новые: были переработаны некоторые горячие операции, ранее реализованные в целях повышения производительности в виде примитивов уровня виртуальной машины и обернувшиеся бутылочным горлышком, будучи невидимыми для механизмов оптимизации.

Совсем недавно появился новый механизм диспетчеризации, позволивший заменить ряд алгоритмов для обработки особых случаев (например, методов и функций с множественной диспетчеризацией) на единый стандартный способ. Хотя многоязычность никогда не предполагалась при разработке MoarVM, в процессе улучшения производительности и попытке справиться с её растущей сложностью, проект пришел в состояние достаточно сильного абстрагирования от языка программирования Raku.

В выступлении будет сделан обзор пройденного в ходе работы над MoarVM пути, освещены наиболее интересные вызовы, извлечённые уроки и компромиссы на которые пришлось пойти.

Будет описана концепция возобновляемой диспетчеризации, позволяющая ускорить некоторые не поддающиеся ранее оптимизации участки. Также будет рассказано и о проблемах, которые повлекли указанные подходы.

http://feedproxy.google.com/~r/org/LOR/~3/py-hQEqJIac/16559986


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку