使用Visual Studio 2013构建Perl 6

我想我上次尝试玩与Perl 6相关的事情至少是两年前了。最近,Fosdem‘15日程中的一个低调的条目引起了Perl社区的注意

最后的几块拼图终于到位了。经过多年的设计和实现,2015年将是Perl 6正式投入生产使用的年份。

从那时起,微软已经将Visual Studio 2013免费提供给个人和小团队使用。到目前为止,我一直在使用Windows SDK 7.1附带的编译器,效果还不错,但当然,我无法抗拒使用新编译器构建Perl 5.20.1的诱惑。

随后是David Farrell提出的鼓舞人心的问题:“你考虑过编译Rakudo吗?”

嗯,我没有。

我担心如果不使用*nix工具会带来很多头疼的问题,但我决定试一试。Perl 6真的准备好了吗?我能只获取源代码并构建它,不是吗?

我从Rakudo Star开始,这是一个Perl 6发行版,捆绑了一些有用的模块和包管理器。我下载了rakudo-star-2014.09.tar.gz,解压缩它并运行配置脚本

C:\Src> perl Configure.pl --gen-moar

这配置了Perl 6使用MoarVM,Perl 6可以为其构建的几个虚拟机之一。从那时起,只需遵循几个提示,很快我就有一个正在执行规范测试的perl6

这些确实花了一些时间。最后大约有十二个测试失败,这代表了总测试数量的一小部分。

从源码编译Rakudo

使用两个月的Rakudo Star发行版让我意犹未尽。所以我去了Rakudo的GitHub仓库,并继续检出并构建默认分支。

如果您想从源代码构建Rakudo,您将需要Git。有几个选项可供选择,包括GitHub WindowsGit for Windows。我更喜欢使用通过将Cygwin的可执行文件位置添加到我的%PATH%末尾来添加Cygwin版本的*nixy工具。

一旦您安装了Git版本,请按照以下步骤操作

打开“VS2013 x64 Native Tools Command Prompt”。您可以在以下位置找到快捷方式:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts(在Visual Studio 2015中,快捷方式位于:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts)。

运行以下命令以获取Rakudo源代码并将其构建为MoarVM

> git clone https://github.com/rakudo/rakudo.git
> cd rakudo
> perl Configure.pl --gen-moar --gen-nqp --backends=moar --prefix=C:/opt/Perl6

注意。请确保这是一个本地的Windows perl,而不是路径中可能存在的Cygwin版本。如果您想绝对确定,请指定完整路径。例如,在我的情况下,C:\opt\perl-5.20.1\bin\perl Configure.pl ...。您可能还需要调整--prefix路径以适应您的系统。

运行Configure.pl将拉入构建Rakudo所需的所有其他组件。其余的就很简单了

> nmake
> nmake test
> nmake spectest
> nmake install

只有在您真的有耐心或好奇时才运行spectest。当这些测试完成时,我有七个spectest失败。在这个阶段,我对这些并不太关心。我的目的是有一个足够好的perl6,让我尝试(第一次!)一些Perl 6示例。

您还可以将 Perl6\bin 路径添加到您的用户路径中。如果一切如我一样顺利,尝试

> perl6 -v
This is perl6 version 2014.10-114-gf8f6feb built on MoarVM version
2014.10-17-g05b25a6

只是为了好玩

> perl6 -e "'Hello World!'.say"
Hello World!

安装 Perl 6 模块

没有利用他人的辛勤工作为自己谋利的能力,Perl 又是什么呢?

Perl 6,就像 Perl 5 一样,有一个模块系统。您可以在 modules.perl6.org 找到贡献的模块,并使用 panda 安装它们。遗憾的是,由于 File::Find 的测试失败,我无法成功启动 panda。

我不确定这是否表明了底层库的问题,或者是测试编写方式的问题。我怀疑是后者,但那要等以后再说。在 meantime,我将 探索基本语言,以更好地了解 Perl 6。

更新 - 添加了 VS2015 指令。 2016-01-04


这篇文章最初发布在 PerlTricks.com

标签

Sinan Unur

Sinan Unur 是一位专注于医疗保健经济的经济学家和开发者。您经常可以在他的 博客 上找到关于编程的文章,或者在 StackOverflow 上回答问题。

浏览他们的文章

反馈

这篇文章有什么问题吗?请通过在 GitHub 上打开一个 issue 或 pull request 来帮助我们。