Каковы варианты использования Perl's C backend для перевода? - PullRequest
3 голосов
/ 11 ноября 2010

Кроме чисто очевидных: «Это переводит Perl в C.»; Существуют ли какие-либо реальные применения (a.k.a. hacks) для оптимизированного для компилятора Perl бэкэнда трансляции C, B :: CC?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Компиляция Perl-программы в optree, которая затем может быть выполнена, иногда может занять некоторое время. Вы можете сохранить часть этого времени, используя perlcc с любым из его бэкэндов. Это так или иначе сериализует скомпилированный optree и сделает его загрузку позже, при выполнении вашего скомпилированного двоичного файла, несколько быстрее. Я вижу, что это полезно, например, в средах CGI, для которых, однако, доступны гораздо лучшие альтернативы, позволяющие избежать затрат на запуск.

Вопреки распространенному мнению, perlcc не делает трудным обратный инжиниринг полученного двоичного файла, как обсуждалось в Как я могу реверс-инжиниринг программы Perl, которая была скомпилирована с perlcc?

2 голосов
/ 11 ноября 2010

Не совсем. Это означает, что вы можете преобразовать (маленький) скрипт Perl в (большую) программу на C, что получателю будет намного сложнее проанализировать. В некоторых параноидальных кругах это может считаться преимуществом (например, если ваш Perl-код смущающе плох, и вы предпочитаете скрывать этот факт от своих платящих клиентов). Но в основном оно имеет отрицательное значение.

...