Jump to content

Виртуальная машина Попугая

(Перенаправлено с Parrot VM )
Виртуальная машина Попугая
Финальный выпуск
8.1.0 / 16 февраля 2016 г .; 8 лет назад ( 16 февраля 2016 ) [1]
Репозиторий
Написано в С
Операционная система Кросс-платформенный
Преемник МоарВМ (для Раку)
Тип Виртуальная машина
Лицензия Художественная лицензия 2.0
Веб-сайт www .попугай .org Отредактируйте это в Викиданных

Parrot — это снятая с производства на основе регистров, виртуальная машина процессов предназначенная для эффективной работы с динамическими языками . Можно скомпилировать ассемблерный язык Parrot и промежуточное представление Parrot (PIR, промежуточный язык) в байт-код Parrot и выполнить его. Parrot — бесплатное программное обеспечение с открытым исходным кодом . [2]

Parrot был создан сообществом Perl и разработан при помощи сообществ открытого и бесплатного программного обеспечения . В результате основное внимание уделялось совместимости лицензий с Perl ( Artistic License 2.0 ), совместимости платформ с широким спектром систем, совместимости архитектуры процессора с большинством современных процессоров, скорости выполнения, небольшому размеру (около 700 КБ в зависимости от платформы) и гибкость для удовлетворения различных требований, предъявляемых Raku и другими современными динамическими языками .

Версия 1.0 со стабильным интерфейсом программирования приложений (API) для разработки была выпущена 17 марта 2009 года. [3] Последней версией является выпуск 8.1.0 «Андский попугай». [1] Официальное прекращение поддержки Parrot было прекращено в августе 2021 года после того, как его заменил MoarVM в его основном использовании (Raku) и он так и не стал основной виртуальной машиной ни для одного из других поддерживаемых языков. [4]

Название Parrot произошло от первоапрельской шутки, в которой было объявлено о создании гипотетического языка Parrot , который объединит Python и Perl . [5] [6] Позже это название было принято проектом Parrot (первоначально являвшимся частью разработки Raku), целью которого была поддержка Raku, Python и других языков программирования.

Фонд Parrot Foundation был распущен в 2014 году. [7] Фонд был создан в 2008 году для владения авторскими правами и товарными знаками проекта Parrot, для помощи в разработке языковых реализаций и основной кодовой базы, для обеспечения базы для роста сообщества Parrot и для взаимодействия с другими языковыми сообществами. [8]

Исторические проектные решения документируются в форме проектных документов Parrot или PDD в репозитории Parrot. [9]

До конца 2005 года Дэн Сугальски был ведущим дизайнером и главным архитектором Parrot. Чип Зальценберг , давний хакер Perl, ядра Linux и C++, занял пост до середины 2006 года, когда он стал ведущим разработчиком. Эллисон Рэндал , ведущий разработчик Punie и главный архитектор инструментов компилятора Parrot, была главным архитектором до середины октября 2010 года, когда она ушла в отставку и выбрала Кристофа Отто новым главным архитектором. [10]

Целью виртуальной машины Parrot было размещение клиентских языков и обеспечение взаимодействия между ними. На пути достижения этой цели существует несколько препятствий, в частности, сложность сопоставления концепций высокого уровня, данных и структур данных между языками.

Статические и динамические языки

[ редактировать ]

Различные свойства статически и динамически типизированных языков послужили причиной создания Parrot. Современные популярные виртуальные машины, такие как виртуальная машина Java и Common Language Runtime для платформы .NET , были разработаны для статически типизированных языков, в то время как языки, на которые нацелен Parrot, являются динамически типизированными.

Виртуальные машины, такие как виртуальная машина Java и текущая виртуальная машина Perl 5, также основаны на стеке . Разработчики Parrot выбрали дизайн на основе регистров, мотивируя это тем, что он больше напоминает аппаратный дизайн, что позволяет использовать обширную литературу по оптимизации компилятора при генерации байт-кода для виртуальной машины Parrot, которая может работать на скоростях, близких к машинному коду . [ нужна ссылка ] Другие виртуальные машины на основе регистров вдохновили часть дизайна Parrot, включая LLVM , Lua VM от Inferno и Dis .

Функциональные концепции

[ редактировать ]

Parrot имеет богатую поддержку нескольких функций функционального программирования, включая замыкания и продолжения , обе из которых может быть особенно сложно реализовать правильно и переносимо, особенно в сочетании с обработкой исключений и многопоточностью . Самым большим преимуществом является динамическая расширяемость объектов с помощью методов, что позволяет использовать полиморфные контейнеры (PMC) и связанные с ними коды операций . Реализация решений этих проблем на уровне виртуальных машин избавляет от необходимости решать их на отдельных клиентских языках.

Инструменты компилятора

[ редактировать ]

Parrot предоставляет набор инструментов для написания компиляторов. [11] который включает в себя Parser Grammar Engine (PGE), гибридный анализатор-генератор, который может выражать анализатор рекурсивного спуска , а также анализатор с приоритетом операторов , обеспечивая свободный переход между ними в одной грамматике. PGE передается в механизм древовидной грамматики (TGE), который дополнительно преобразует дерево синтаксического анализа, сгенерированное PGE, для оптимизации и, в конечном итоге, для генерации кода.

Реализации

[ редактировать ]

Наиболее полными языковыми реализациями, предназначенными для виртуальной машины Parrot, были Raku (известный в то время как Rakudo Perl 6), Lua и новый язык под названием «Winxed». [12] Были начаты проекты по реализации многих других языков, включая PHP , Python и Ruby ; наряду с эзотерическими и демонстрационными языками, такими как Befunge и учебный язык « скквак ». [13] Ни один из этих проектов не стал первичным внедрением соответствующих языков. [4]

Внутренности

[ редактировать ]

Существует три формы программного кода для Parrot:

  • Байт-код [14] является двоичным и изначально интерпретируется Parrot. Байт-код обычно хранится в файлах с расширением имени файла «.pbc».
  • Язык ассемблера Parrot (PASM) — это язык низкого уровня, который компилируется в байт-код. Код PASM обычно хранится в файлах с расширением имени файла «.pasm».
  • Промежуточное представление попугая (PIR [15] ) — это язык немного более высокого уровня, чем PASM, который также компилируется в байт-код. Это основная цель языковых реализаций. PIR прозрачно управляет соглашениями о межпрограммных вызовах Parrot, обеспечивает улучшенный синтаксис, распределение регистров и многое другое. Код PIR обычно хранится в файлах с расширением имени файла «.pir».

Регистры

[ редактировать ]

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

Parrot предоставляет произвольное количество регистров; это число фиксируется во время компиляции каждой подпрограммы.

Арифметические операции

[ редактировать ]

В ПАСМ

    set I1, 4
    inc I1        # I1 is now 5
    add I1, 2     # I1 is now 7
    set N1, 42.0
    dec N1        # N1 is now 41.0
    sub N1, 2.0   # N1 is now 39.0
    print I1
    print ', '
    print N1
    print "\n"
    end

В ПИР

 .sub 'main' :main
    $I1 = 4
    inc $I1     # $I1 is now 5
    $I1 += 2    # $I1 is now 7
    $N1 = 42.0
    dec $N1     # $N1 is now 41.0
    $N1 -= 2.0  # $N1 now 39.0
    print $I1
    print ', '
    print $N1
    print "\n"
 .end

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Новая поддерживаемая версия 8.1.0 «Андский попугай» » . Фонд попугаев. 16 февраля 2016 г. Проверено 26 сентября 2016 г.
  2. ^ «Лицензионное соглашение для участников Parrot 1.0» (PDF) . Фонд попугаев. Архивировано из оригинала (PDF) 16 августа 2010 г. Проверено 18 марта 2009 г.
  3. ^ «Дорожная карта попугаев» . Фонд попугаев. 20 ноября 2008 г. Архивировано из оригинала 15 апреля 2010 г. Проверено 20 ноября 2008 г.
  4. ^ Перейти обратно: а б «Неактивный попугай | Parrot VM» . www.parrot.org .
  5. ^ «История розыгрыша с попугаем - O'Reilly Media» . Орейли.com. 6 апреля 2001 г. Проверено 25 февраля 2014 г.
  6. ^ «Программирование попугая» . Perl.com. Архивировано из оригинала 18 июля 2010 г. Проверено 25 февраля 2014 г.
  7. ^ «Расширенный поиск корпораций» . Департамент лицензирования штата Вашингтон . УБИ 602 839 536 . Проверено 9 апреля 2021 г.
  8. Объявление о создании Parrot Foundation. Архивировано 29 июня 2008 г. в Wayback Machine.
  9. ^ «Parrot 6.1.0 — Проектная документация Parrot (PDD)» . Docs.parrot.org . Проверено 25 февраля 2014 г.
  10. ^ Отто, Кристоф (21 октября 2010 г.). "reparrot: У Попугая новый архитектор. Что теперь?" . Reparrot.blogspot.com . Проверено 25 февраля 2014 г.
  11. ^ [1] Архивировано 9 мая 2009 г., в Wayback Machine.
  12. ^ «Языки — Попугай В.М.» . сайт попугая . Проверено 18 ноября 2023 г.
  13. ^ «Языки – Попугай» . Wiki по разработке Parrot . Проверено 18 ноября 2023 г.
  14. ^ «Формат байт-кода Parrot (PBC) — код попугая» . Архивировано из оригинала 24 декабря 2008 г. Проверено 15 июля 2009 г.
  15. ^ [2] Архивировано 20 июля 2009 г., в Wayback Machine.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c38090bbbe09d5693673d7e8fcef112c__1716958320
URL1:https://arc.ask3.ru/arc/aa/c3/2c/c38090bbbe09d5693673d7e8fcef112c.html
Заголовок, (Title) документа по адресу, URL1:
Parrot virtual machine - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)