Rakudo desde el código

Una de las formas de usar Perl 6 es con la implementación llamada Rakudo, que usa

Se necesita el siguiente software instalado :

    • Git
    • Subversion (SVN)
    • GCC
    • Perl 5.8 o superior

Si estás detrás de un proxy, necesitás configurar Git y SVN para que lo usen.

Luego los pasos a seguir son:

    • abrir un shell
    • ejecutar los siguientes comandos

$ git clone http://github.com/rakudo/rakudo.git

$ cd rakudo
$ perl Configure.pl --gen-parrot
$ make
$ make install

Este últino paso instala perl 6 en el directorio rakudo/parrot_install/bin

Si querés también podés ejecutar los tests, para asegurarte que en tu máquina funciona bien

$ make test
/usr/bin/perl t/harness t/00-parrot t/01-sanity
t/00-parrot/01-literals............ok                                       
t/00-parrot/02-op-math.............ok                                       
t/00-parrot/03-op-logic............ok                                       
t/00-parrot/04-op-cmp..............ok                                       
t/00-parrot/05-var-array...........ok                                       
t/00-parrot/05-var.................ok                                       
t/00-parrot/06-op-inplace..........ok                                       
t/00-parrot/07-op-string...........ok                                       
t/00-parrot/08-regex...............ok                                       
t/00-parrot/09-pir.................ok                                       
t/01-sanity/01-tap.................ok                                       
        2/10 skipped: various reasons
t/01-sanity/02-counter.............ok                                       
t/01-sanity/03-equal...............ok                                       
t/01-sanity/04-if..................ok                                       
t/01-sanity/05-sub.................ok                                       
t/01-sanity/06-use.................ok                                       
t/01-sanity/07-binding.............ok                                       
t/01-sanity/07-defined.............ok                                       
t/01-sanity/07-end-blocks..........ok                                       
t/01-sanity/07-for.................ok                                       
t/01-sanity/07-isa.................ok                                       
t/01-sanity/07-range...............ok                                       
t/01-sanity/07-ref.................ok                                       
t/01-sanity/07-simple-multisubs....ok                                       
t/01-sanity/07-split...............ok                                       
t/01-sanity/07-substr..............ok                                       
t/01-sanity/07-try.................ok                                       
t/01-sanity/08-say.................ok                                       
t/01-sanity/09-types...............ok                                       
All tests successful, 2 subtests skipped.
Files=29, Tests=236, 134 wallclock secs (87.95 cusr +  4.64 csys = 92.59 CPU)

Para tener más seguridad que todo anda bienm podés hacer make spectest, que va a bajar a tu máquina (usando SVN) los test oficiales de Perl 6.

# make spectest
/home/bit-man/hackaton/rakudo/parrot_install/bin/parrot perl6.pbc --target=pir --output=Test.pir Test.pm
svn co "http://svn.pugscode.org/pugs/t/spec" t/spec
A t/spec/S02-builtin_data_types
A t/spec/S02-builtin_data_types/hash_ref.t
A t/spec/S02-builtin_data_types/nil.t

... y después de un rato ...

A S32-str/append.t
A S32-str/uc.t
A S32-str/p5chomp.t
A S32-str/trim.t
Updated to revision 28220.
/usr/bin/perl t/harness --fudge --keep-exit-code --icu=0 --jobs --tests-from-file=t/spectest.data
t/spec/S02-builtin_data_types/anon_block..................ok
        5/42 skipped: various reasons
t/spec/S02-builtin_data_types/array.......................ok
        36/100 skipped: various reasons
t/spec/S02-builtin_data_types/array_extending.............ok
        1/21 skipped: various reasons
t/spec/S02-builtin_data_types/array_ref...................ok
t/spec/S02-builtin_data_types/assigning-refs..............ok
t/spec/S02-builtin_data_types/bool........................ok

... y más tarde ...

t/spec/integration/role-composition-vs-attribute..........ok
t/spec/integration/say-crash..............................ok
t/spec/integration/substr-after-match-in-gather-in-for....ok
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/spec/S12-attributes/class.rakudo 0 6 28 0 ??
t/spec/S14-roles/basic.rakudo 0 6 33 0 ??
(1 subtest UNEXPECTEDLY SUCCEEDED), 2376 subtests skipped.
Failed 2/422 test scripts. 0/15219 subtests failed.
Files=422, Tests=15219, 2478 wallclock secs (2357.72 cusr + 61.18 csys = 2418.90 CPU)
Failed 2/422 test programs. 0/15219 subtests failed.
make: *** [spectest] Error 255

No se asustn si hay tests que fallan, seguramente eso les va a pasar. Ocurre que Perl 6 está en constante movimiento y siempre hay alguna que otra cosa que rreglar.

Links