Perl笔记

Wednesday, September 13, 2006

Pugs: Interview: Perl 6 on Perl 5

登在Pugs官方blog的采访Pugs: Interview: Perl 6 on Perl 5中,负责开发v6模块的 Flávio Soibelmann Glock(fglock)透露了许多v6开发的情况:

总体上,最终目标——v6-Compiler模块(v6/v6-Compiler),用Perl6实现Perl6。

“v6.pm”是一个自举编译器(perl5/Pugs-Compiler-Perl6)。这意味着v6.pm在Perl 6能自己编译自己前,被用作编译Perl 6的编译器。

v6.pm使用了数个CPAN模块:Pugs::Compiler::Rule (regexes), Data::Bind (signatures), Moose (objects),Parse::Yapp (precedence parser)。

这个模块目前通过了Perl 6测试套件的10%。它提供了语言的基础:语句,表达式,还有类。它还包括正则表达式和语法,这些也是编写编译器所需的。

编译器的若干部分用Perl 6编写,用v6.pm自身编译。CPAN上的Pugs::Compiler::Rule模块的语法用Perl 6编写,用v6.pm编译成Perl 5。

性能:

编译速度是100行每秒,代码有缓存——只编译一次。

生产的代码已经相当的优化,运行在perl5的速度上。


最终目标

v6.pm 的目标是能够编译“真正”的v6-Compiler(p6-on-p6)。但是,因为v6.pm必须“足够正确”和“足够快”,它也能用来编写一般用途的模块或程序。

所使用的“.pmc”文件的角色

".pmc"被用于perl5缓存文件。Perl5同时找到".pm"和".pmc"文件,它执行".pmc"文件。

当v6.pm编译一个".pm"时,它把perl 5代码dump下来作为".pmc"。下次执行,perl5会加载编译后的版本。这将变得很快。

v6项目是帮助继续用Perl5的人还是针对想要用Perl 6的人?

主要是为了perl5程序员,保证Perl5可以兼容Perl 6—双向兼容。

Perl5 程序员可以直接使用底层模块——Moose,和Pugs::Compiler::Rule——v6.pm就是“syntax layer”。

哪部分Perl 6不可能依此实现?

一些perl6功能可能在perl5中很缓慢——如协同进程,但并非不可能。

如何尽早尝试Perl 6?

从CPAN安装v6,依赖的模块可以自动补完。

一些模块,如PadWalker和Data::Bind需要C编译器。Windows用户可以用 vanilla-perl发行版,它带有C编译器。

如何参与和帮助

到freenode的#perl6频道来。

0 Comments:

Post a Comment

<< Home