Опубликован первый выпуск Java-бэкенда компилятора Perlito5, предназначенного для обеспечения компиляции исходных текстов на языке Perl 5 в байткод JVM, который может быть выполнен в виртуальной машине Java 7. Проект Perlito также предоставляет бэкенды для компиляции Perl 5 в JavaScript, Perl 6 в Perl 5, JavaScript и Python 2.6. В разработке находятся бэкенды для Ruby, Go и Common.

Java-бэкенд поддерживает не все возможности Perl, например, невозможно использовать XS-модули, написанные на языке Си, а также пока не доведена до конца поддержка таких средств, как обработка сигналов, оператор goto, tie array/hash, "local @", "~~" и многопоточность. Имеются отличия в реализации регулярных выражений, sprintf(), pack() и unpack(). Вместо XS предлагаются средства для подключения расширений на языке Java - из Perl-кода можно обращаться к классам Java, а из Java-кода запускать функции на языке Perl. Используя данную возможность подготовлены Java-аналоги таких XS-модулей, как Digest::SHA1/MD5, List::Util, MIME::Base64 и Scalar::Util.

Perlito осуществляет прозрачную компиляцию в оперативной памяти с последующим запуском подготовленного байткода в JVM при помощи eval. Например, для выполнения Perl-скрипта в JVM можно выполнить:


java -jar perlito5.jar -I src5/lib -e 'print "hello, World!\n"'

По аналогии можно использовать бэкенд для компиляции Perl в JavaScript, который подходит для организации запуска Perl-кода в браузере или для обеспечения интеграции с Node.js:


nodejs perlito5.js -I src5/lib -e ' print "hello, World!\n" '


Источник: http://www.opennet.ru/opennews/art.shtml?num=46549