Представлен компилятор Perl 5 в JVM и JavaScript

1 месяц ago admin 0

Опубликован первый выпуск 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" ' 


Source: pirates.in.ua