- Parrot
-
Parrot Тип Разработчик The Perl Foundation
Операционная система Последняя версия Тестовая версия 4.7.0 (22 августа 2012)
Лицензия Artistic License и GNU GPL
Сайт http://parrot.org (англ.)
Parrot (пэррот или паррот; от англ. parrot — попугай) — виртуальная машина, используемая интерпретируемыми языками для эффективного исполнения байт-кода. Название происходит от первоапрельской шутки (англ.), когда было объявлено о создании нового языка, объединяющего Perl и Python.
Одной из важных причин для разработки новой виртуальной машины стало различие между языками со статическими и динамическими типами данных. Современные распространенные виртуальные машины, как, например Java VM и .NET CLR были разработаны для языков со статическими типами данных, тогда как языки, на поддержку которых нацелен Parrot используют динамические типы. Виртуальная машина Parrot основана на использовании регистров, а не стека, так как, по мнению разработчиков, это увеличивает скорость и лучше отражает устройство современных процессоров.
Parrot будет являться основой интерпретатора Perl, а также целевой платформой для компиляции кода Perl 6. Кроме реализованной части Perl 6, в байткод можно скомпилировать программы на других языках, включая APL, BASIC, Befunge, Brainfuck, Cola, Forth, Jako, Lisp, m4, Miniperl, Ook!, Parakeet, OpenComal, PHP, Plot, Pheme, Punie, Python, Ruby, Scheme, Span, Tcl, URM и YAL, но большая часть реализаций этих языков для Parrot неполна и находится в экспериментальном состоянии.
Содержание
Примеры
Регистры
Parrot основан на использовании регистров, в отличие от большинства виртуальных машин, основанных на стеке. Parrot предоставляет 4 типа регистров:
- I: целые числа (от англ. integer)
- N: числа с плавающей точкой (от англ. number)
- S: расширенные строковые регистры с поддержкой Юникода (от англ. string)
- P: PMC, или Parrot Magic Cookie — специальный тип объектов Parrot
До версии 0.3.0 включительно, Parrot обычно предоставлял программам по 32 регистра каждого типа, с возможностью увеличения этого числа до 64. Более поздние версии стали предоставлять неограниченное число регистров; каждая функция может запросить столько регистров, сколько ей требуется.
Parrot Assembly Language
Кроме, непосредственно, байткода в Parrot есть специальный язык низкого уровня Parrot Assembly Language (PASM). Ниже приведен пример небольшой программы на нём:
set I1, 4 # Запись в регистр I1 числа 4 inc I1 # Инкремент I1 add I1, 2 # Добавление к I1 двойки; значение в I1 станет равным 7 set N1, 42.0 # Запись в N1 значения 42.0 dec N1 # Декремент N1, новое значение будет 41.0 sub N1, 2.0 # N1 станет равным 39.0 print I1 # Вывод содержимого I1 print ", " # Вывод строки «, » print N1 # Вывод значения N1 print "\n" # Вывод символа перевода строки end
Поддерживаемые платформы
Parrot компилируется и запускается на большом числе платформ, включая все самые распространенные, в том числе Linux (x86), Cygwin, Win32, Tru64, OpenVMS (Alpha), Solaris (Sparc), FreeBSD (x86).
См. также
- Библиотека libJIT для компиляции на лету от Риза Везерли, Клауса Трейчела, Алексея Демакова и Кирилла Кононенко
Примечания
Ссылки
- Parrot Virtual Machine (англ.). — официальная страница проекта. Архивировано из первоисточника 19 мая 2012. Проверено 30 сентября 2011.
- Parrot (29 февраля 2004). — перевод части документации. Проверено 18 июля 2011.
- LXF73: Что такое...Parrot? (рус.). — статья в LinuxFormat. Архивировано из первоисточника 19 мая 2012.
- Как использовать виртуальную машину Parrot: Часть 1, Часть 2, Алексей Снастин, IBM developerWorks
Perl Люди Ларри Уолл • Рэндел Шварц • Дэмиэн Конуэй • Эллисон Рэндел • Audrey Tang • Simon Cozens • Шон Берк • chromatic • Адам Кеннеди • brian d foy • Mark Jason Dominus Things The Perl Foundation • Perl Mongers • PerlMonks • архивы • модули • Perl VM • Parrot • YAPC • Bioperl • Plack • PSGI Фреймворки Catalyst • Mason • Maypole • Dancer • Moose • Mojolicious Outline • Категория Lua Интерпретаторы и компиляторы Lua • Parrot Фреймворки и библиотеки IUP • Kepler • LÖVE Порты и дистрибутивы Plua • Lua Player • Corona IDE Decoda SciTE • Сравнение Приложения Prosody PHP Люди Энди Гутманс • Расмус Лердорф • Зеев Сураски Ресурсы Zend Engine • Библиотеки • PEAR • Редакторы • Акселератор Реализации HipHop • Quercus • Project Zero • Phalanger • Parrot Фреймворки AppFlower • CakePHP • CodeIgniter • Drupal • FuelPHP • Horde • Joomla! • Lithium • Midgard • MODx • Qcodo • Seagull • SilverStripe • Symfony • TYPO3 • Xaraya • Yii • Zend Framework • Zeta Components Тестирование PHPUnit • PHP Unit Testing Framework • SimpleTest ORM Propel • Doctrine IDE AppFlower • Eclipse PDT • PhpStorm • NetBeans • RadPHP • PHP DevelStudio • PHPEdit • Zend Studio Компилятор Phalanger Widget toolkit wxPHP • PHP-GTK • PHP-Qt • Категория
Категории:- Программное обеспечение по алфавиту
- Виртуальные машины
- Программное обеспечение с лицензией Artistic License
- Программное обеспечение с лицензией GNU GPL
- Perl
Wikimedia Foundation. 2010.