Как стать автором
Обновить

Вышел Parrot 1.4.0 «Mundo Cani»

Время на прочтение2 мин
Количество просмотров1K
Parrot LogoЗа все время чтения хабра видел лишь несколько упоминаний Parrot VM. Тем временем, проект активно развивается, и сегодня вышел релиз 1.4.0. Parrot — виртуальная машина, предназначенная для эффективной компиляции и исполнения байткода для динамических языков программирования. На данный момент существуют реализации нескольких языков для Parrot: Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, а также транслятор байткода .NET.


История


Изначально Parrot задумывался как средство реализации языка Perl 6. Название было выбрано после первоапрельской шутки в 2001 году про создание нового языка на основе Perl и Python. 17 марта 2009 года состоялся релиз Parrot 1.0. К январю 2010 года планируется production-ready Parrot 2.0.

Концепция


Parrot разработан с учетом особенностей динамических языков, и должен исполнять программы на них более эффективно, чем виртуальные машины для статических языков (JVM, .NET). Parrot поддерживает интероперабельность между языками — таким образом, класс, описанный в перле, может быть унаследован в питоне и инстанциирован в Tcl.

Parrot может принимать инструцкии для исполнения в 4 форматах:
  • PASM (Parrot Assembly) — язык самого низкого уровня для Parrot
  • PIL/PIR (Parrot Intermediate Language/Representation) — небольшая абстракция над PASM
  • PAST (Parrot Abstract Syntax Tree)
  • PBC (Parrot Bytecode) — формат, в который преобразовываются первые три. Исполняется непосредственно вирутальной машиной

Также в разработке:
  • LevelOne — новый слой абстракции, дающий большие возможности для оптимизации, такие как кеширование машинного кода, trace-based JIT (используются в TraceMonkey)
  • LLVM в качестве бэкенда для исполнения байткода


PMC


Parrot — регистровая виртуальная машина (в отличие от JVM и .NET). Кроме типов регистров Integer, Number и String существует ещё один — PMC (Polymorphic Container). Через него можно представить любую сложную структуру — массивы, хэш-таблицы, сокеты. PMC могут наследоваться. Так, можно создать PMC Clousure и Coroutine, и они будут обладать всеми свойствами PMC Sub.

Реализации языков программирования для Parrot


Для Parrot существует довольно большое количество реализаций языков программирования той или иной степени завершенности, среди которых есть Pipp (реализация PHP), Pynie (реализация Python), Cardinal (реализация Ruby) и Rakudo (реализация Perl6). Полный список можно посмотреть здесь. Для создания своих реализаций можно использовать PCT (Parrot Complier Tools). Проще всего описывать грамматику языка с помощью PGE (Parrot Grammar Engine — реализация Perl 6 Regexes).

Rakudo


Реализация Perl6, ради которой изначально создавался Parrot. Активно разрабатывается, дата реализа — 2 дня после релиза Parrot (Parrot же релизится каждый третий вторник месяца). Сейчас проходит около 70% спектестов, является самой перспективной реализацией Perl6. Прогресс прохождения спектестов можно посомтреть здесь. Как видно по графику, за год было проделано немало работы.

Web


Разработан mod_parrot для Apache, и любая реализация языка для Parrot может работать с Apache, используя меньше сотни строк кода.

Больше информации про Parrot и Rakudo можно найти на parrot.org и rakudo.org. Я с нетерпением жду января 2010 года, на который запланирован релизы Parrot 2.0 и полностью соответствующего спецификации Perl6 Rakudo.
Теги:
Хабы:
Всего голосов 47: ↑42 и ↓5+37
Комментарии29

Публикации

Истории

Ближайшие события