Недавно на своем стареньком компьютере обнаружил parrot 2002 года (версия 0.0.9)!
Да, много воды утекло. Тогда parrot ничего не знал о PASM, а PBC создавался при помощи perl:
perl assemble.pl -o foo.pbc foo.pasm
parrot foo.pbc
Конечно этот байт-код не понятен текущей версии parrot (1.3.0).
Да что говорить о PBC, если даже PASM того времени уже большей частью не совместим с современным. Например, полностью убран "классический" вариант вызова подпрограмм - следует использовать стиль передачи продолжений (Continuation-passing style), что позволило писать более компактно.
Убрали также пользовательский стек и стеки регистров, вместо них следует использовать Array PMC.
Полностью изменились Parrot Calling Conventions. Что сделало Parrot совершенно другим, а не тем, которым я знал его в 2002 году.
Текущие состояние parrot позволяет сказать:
Да здравствуют продолжения и сопрограммы!
Да здравствуют легковесные user-level потоки!
Да здравствуют возможность dataflow execution!
И самое главное, появился PIR (Parrot Intermediate Representation), за которым прячутся все тонкости работы с подпрограммами, и с которым отпадает необходимость жонглировать регистрами.
На PASM уже никто не пишет и его не развивают. Все используют PIR!
PIR - это:
+ subroutine linkage
+ named, optional, and slurpy parameters
+ method calls
+ multimethod dispatch
+ register allocation
+ macros
Имеется также Parrot Compiler Tools - набор инструментов для написание компиляторов с различных языков. Rakudo уже давно использует его. Вероятно, скоро и сам Parrot не будет нуждаться в perl.
Parrot набрал силу. Это уже не ребенок, а отрок.
Настала пора посмотреть в сторону Perl6 (Rakudo) с практической точки зрения.
Комментариев нет:
Отправить комментарий