Perl 6 в Sisyphus

30 окт 2015 17:02


На днях собрал rpm-пакет компилятора Perl 6 Rakudo 2015.10 для ALTLinux SIsyphus. Это первая официальная бета-версия, поэтому мне показалось важным подготовить готовую сборку, которую можно быстро и просто поставить в систему и сразу начать играться. К моменту выхода официального релиза, можно будет уже вытоптать какие-то огрехи и успеть исправить.

↓↓↓↓↓↓↓↓

При сборке обнаружил довольно неприятную проблему: rakudo собирает бинарное расширение libperl6_ops_moar.so и кидает его вместе с архитектурно-независимыми модулями в /usr/share/perl6, тем самым нарушая принятые традиции Unix FHS по разделению архитектурно-зависимых и архитектурно-независимых компонент. Пока пробросил симлинк в %_libdir/perl6/runtime/dynext, но это обход проблемы. Скорее всего нужно создавать отдельный libpath для архитектурно-зависимых расширений.

К тому же libperl6_ops_moar.so оказался недолинкованным с libmoar.so, но это легко исправлялось и мой pull-request практически моментально приняли.

По поводу скорости работы. Работает всё гораздо быстрее чем раньше, например

$ time perl6 -e 'say "hello world!"'
hello world!
perl6 -e 'say "hello world!"' 0,29s user 0,08s system 99% cpu 0,379 total

Стартует за треть ceкунды, это уже быстрее чем java ;-)

Мой любимый пример с рациональными числами:

$ perl6 -e 'say 0.3 - 0.2 - 0.1'
0

Посмотрим как у других языков программирования с этим:

$ python -c 'print 0.3 - 0.2 - 0.1' 
-2.77555756156e-17

$ ruby -e 'puts 0.3 - 0.2 - 0.1'
-2.7755575615628914e-17

$ perl -e 'print 0.3 - 0.2 - 0.1'
-2.77555756156289e-17

Печально ;-)

Собран также пакет perl6-Panda — это аналог cpanm для установки Perl 6 модулей с github. Panda хранит индекс всех доступных Perl 6 пакетов и может их устанавливать в домашний каталог пользователя в папку ~/.perl6:

$ panda search URI
URI                      v0.1.1     A URI implementation using Perl 6 
                                    grammars to implement RFC 3986 BNF
Plosurin                 0.02       Perl 6 implementation of Closure 
                                    Templates
Acme::Addslashes         0.1.2      PHP security. Now in Perl 6.
URI::Encode              0.03       Encode and decode URIs according to RFC 
                                    3986

$ panda install URI
==> Fetching URI
==> Building URI
==> Testing URI
t/01.t ................... ok
t/escape.t ............... ok
t/november-urlencoded.t .. ok
t/rfc-3986-examples.t .... ok
All tests successful.
Files=4, Tests=92,  9 wallclock secs ( 0.08 usr  0.03 sys +  8.56 cusr  1.05 csys =  9.72 CPU)
Result: PASS
==> Installing URI
Copying blib/lib/URI.pm to /home/crux/.perl6/2015.10/lib/URI.pm
Copying blib/lib/URI/DefaultPort.pm to /home/crux/.perl6/2015.10/lib/URI/DefaultPort.pm
Copying blib/lib/URI/Escape.pm to /home/crux/.perl6/2015.10/lib/URI/Escape.pm
Copying blib/lib/IETF/RFC_Grammar.pm to /home/crux/.perl6/2015.10/lib/IETF/RFC_Grammar.pm
Copying blib/lib/IETF/RFC_Grammar/IPv6.pm to /home/crux/.perl6/2015.10/lib/IETF/RFC_Grammar/IPv6.pm
Copying blib/lib/IETF/RFC_Grammar/URI.pm to /home/crux/.perl6/2015.10/lib/IETF/RFC_Grammar/URI.pm
==> Successfully installed URI

Класс, будем тестировать.

Теги: perl perl6 ALT

Обновлён: 2015-10-30 17:17


Оставить комментарий