The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Первый выпуск компилятора Perl 5 в JVM от проекта Perlito

15.05.2017 09:51

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


  1. Главная ссылка к новости (http://blogs.perl.org/users/fl...)
  2. OpenNews: Увидел свет RPerl 1.0, компилятор кода Perl5
  3. OpenNews: Проект по развитию компилятора для языка Perl
  4. Защита perl скриптов от несанкционированного копирования и модификации
  5. Как скомпилировать Perl скрипт в бинарный вид, чтобы другие не смогли увидеть исходный текст
  6. OpenNews: B-C - модуль для компиляции perl скриптов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46549-perl
Ключевые слова: perl, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 10:04, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >для обеспечения интеграции с Node.js:

    Модностильно, молодёжно.

     
  • 1.5, Аноним (-), 10:29, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я давно ждал этого!
     
     
  • 2.8, Аноним (-), 11:09, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ыыыыы, залогинься!
     
     
  • 3.25, Аноним (-), 20:53, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    сегодня на anon.fm
     

  • 1.6, Аноним (-), 10:57, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    npm install -g cpan
     
  • 1.7, Аноним (-), 11:07, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    JVM на коне.
     
  • 1.9, omnomnin (?), 11:28, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    хАчу такой же, только брэйнфак->JVM
     
  • 1.10, Аноним (-), 11:39, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Теперь ты сможешь запускать свой перловый код везд... Wait a minute!
     
  • 1.11, Zdorovenniy_Krab (?), 11:47, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    У меня только один вопрос: "ЗАЧЕМ?"
     
     
  • 2.17, Andrey Mitrofanov (?), 12:43, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > У меня только один вопрос: "ЗАЧЕМ?"

    Чужие мозгти - потёмки.  Исследование, компьтер-сайнс, вероятно.  Может быть, для резюме хорошо.  Не диссертация, но типа?  https://lists.gnu.org/archive/html/guile-devel/2017-05/msg00021.html //"ачивка"........

    //и кста, brainfuck там https://git.savannah.gnu.org/cgit/guile.git/tree/module/language/brainfuck есть -- кто тут спрашивал, налетай.

     

  • 1.12, Comdiv (ok), 11:54, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > не доведена до конца поддержка таких средств, ..., оператор goto

    Складывается впечатление, что они воплотили трансляцию не в bytecode, а в Java.

     
     
  • 2.13, Аноним (-), 12:00, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мсье никогда не копал бинарник java? А там много goto, очень много.
     
     
  • 3.14, Comdiv (ok), 12:05, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В том-то и дело, что в двоичным коде нет проблем с воплощением goto, а вот в исходном коде Java нет возможности использовать goto в чистом виде.

    Впрочем, я почитал o goto в Perl, и причина сложностей его воплощения стала понятна - в этом языке это слишком навороченный оператор.

     
     
  • 4.22, Аспарагус (?), 16:41, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я через goto делал разворачивание стека из любого места.
    Задача: самописное подобие веб фреймворка в standalone хттп сервере на самом перле.
    Можно пройти метку, вызвать 100500 функций и там из любого места дернуть $request->end(); внутри которого готу к той самой метке и весь стек развернется.
    В перле готу как исключения может разматывать стек, а не просто в пределах одной функции прыгать.
     
     
  • 5.24, Аноним (-), 18:29, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно бы глянуть пример. Я goto использую для перегрузки функции и для управления кодом.
     

  • 1.15, Аноним (-), 12:25, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Имеются отличия в реализации регулярных выражений, sprintf(), pack() и unpack().

    Не порядок, не должно быть отличии.

     
     
  • 2.16, Crazy Alex (ok), 12:36, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не выйдет без отличий
     
     
  • 3.19, Аноним (-), 14:00, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Но тогда цель затеи не обретет законченный вид.
     
     
  • 4.26, Crazy Alex (ok), 21:04, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Разумеется. Но "только перл может парсить перл".
     

  • 1.20, vaka (?), 16:24, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А в бэйсик слабО было перевести?
     
  • 1.21, Аноним (-), 16:34, 15/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Как-то слабо верится в перспективность Perl вообще...
     
     
  • 2.23, Qaq be (?), 16:54, 15/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как бы он и не перспективен давно. Разве что ради легаси
     
     
  • 3.27, Аноним (-), 00:58, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Как бы обновления на metacpan говорят об обратном. Хотя и стоит конкретизировать, что перспективен он только для перл-сообщества.
     
  • 3.30, Аноним (-), 04:23, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Пишу на Перле каждый день, сегодня начал делать систему сборки пакетов для Андроида. Что я делаю не так?
     
     
  • 4.31, Аноним (31), 07:20, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Если вы не знаете ответ на этот вопрос, то у вас большие проблемы.
     
     
  • 5.36, Аноним (-), 16:37, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Если вы не знаете ответ на этот вопрос, то у вас большие
    > проблемы.

    Какие?

     
  • 4.33, Аноним (-), 12:36, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    https://metacpan.org/pod/Android::Build ?
     
     
  • 5.35, Аноним (-), 16:37, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ух ты! Опять я не нужен стал. Пойду полежу.
     
  • 2.28, Вареник (?), 02:01, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Perl для узкой тусовки олдскульных фанатиков, из 90-х.

    Такая же тусовка через лет 20 будет вокруг забытого всеми Хруста.

     
     
  • 3.29, Аноним (-), 04:22, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Скорее перл не перспективен для петушков с новомодными растами и голангами. Они каждый год новый язык учат.
     
     
  • 4.34, angra (ok), 12:52, 16/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ты так говоришь про изучение новых ЯП, как будто это что-то плохое.
     
     
  • 5.37, Аноним (-), 15:37, 17/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Perl - язык на котором можно писать несколько стилями. Он сам как несколько языков. А за десятилетия там столько модулей накопилось, даже и не придумаешь, что на нём не сделать.
     
     
  • 6.38, omnomnom (?), 22:04, 17/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Код, который можно прочитать через пару месяцев после его написания?
     
     
  • 7.39, Аноним (-), 11:01, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если я в очередной раз напишу что я способен читать свой код написанный годами ранее и также могу читать, понимать и дорабатывать модули из CPAN, то в следующий раз найдется очередной новый нуб который будет снова постить чушь про нечитаемость perl. Ни ума, ни фантазии.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру