【问题标题】:What is the current state of Perl 6? [closed]Perl 6 的当前状态是什么? [关闭]
【发布时间】:2010-04-19 09:57:35
【问题描述】:

Perl 6 的当前状态是什么,是否可以投入生产? 我们现在站在哪里? 有很多程序员对 Perl 6 目前的进展感到好奇。

on reddithttp://perlmonks.org/?node_id=835419 上还有两个关于此的其他主题。

【问题讨论】:

  • 我个人的理论是 perl 6 将永远是 perl 5 特性的一种测试平台,这些特性将通过新版本的 perl 5 和 Moose 等模块进行反向移植。
  • 我投票结束这个问题,因为它包含WILDLY过时的信息。

标签: raku


【解决方案1】:

首先,也是最重要的,关注Planet Six 新闻聚合器。包括来自主要开发人员和社区许多成员的 Perl 6 每周会议和博客,这是跟上 Perl 6 进展的好方法。

要了解领先的 Perl 6 实现 Rakudo Perl 的工作方式,请查看Perl 6 Advent Calendar。每天都会展示 Perl 6 的不同方面,以及 Rakudo 现在在多大程度上实现它。

更新(2012 年 3 月):perl6.org's feature comparison 显示了 Rakudo 和 Niecza(针对 CLR 的编译器,例如 .NET、Mono)的实施进度。


作为规范,Perl 6 仍在不断完善和重构。规范不清楚的一些例子:对象层次结构,核心库应该和不应该是什么,日期处理,懒惰,连接的“自动线程”。但是大部分语言已经完成。该规范非常雄心勃勃,恕我直言,这是 Perl 6 花了这么长时间才开始的主要原因之一。

在实施方面,领先的项目是建立在 Parrot VM 之上的 Rakudo Perl 6。可能有十几个专门的开发人员和更多的人正在帮助测试、编写库、代码和文档。大多数开发工作都是由 Perl 基金会和社区的资助资助的,所以没有理由期望它会逐渐消失。

Rakudo 有很多错误和很多缺失的功能。它最近才经历了一次巨大的重构——“ng”分支。浏览任何现有的 Perl 6 源代码,你会发现很多 cmets 说“Rakudobug”或“Rakudo 还没有实现这个……”

即便如此,这还是描绘了 Rakudo 的不公平画面。 Perl 6 规范至少可以说是雄心勃勃的。该语言具有如此多的功能,以至于实现了多年的发展才能达到今天的水平。 Rakudo 确实已经足够完善,人们可以在其中编写基于文本的游戏、wiki 和其他 Web 应用程序,而且它每天都在变得更好。到目前为止,开发人员已经为 Perl 6 编写了大约 40,000 个单元测试,因此很容易看到实现方面的改进(Rakudo 目前通过了大约 30k 测试,或 79% 的测试套件)

Rakudo 的第一个“可用”(稳定)版本被称为“Rakudo Star”。目前计划在 2010 年第二季度(4 月至 6 月)发布。总的想法是实现 Perl 6 的大部分——不是整个语言,而是它的一个有用的子集——并最大限度地减少错误。至于生产就绪,Perl 6 的发布日期一直是“圣诞节”。也许今年圣诞节,更有可能是别的什么。您还需要很长时间才能使用完整的 Perl 6,并且没有错误,但我们至少会看到一个稳定的版本很快,并希望 Perl 6 大肆宣传一旦人们发现它是真实的,就会从那里滚雪球。

如果您对 Perl 6 感兴趣,您可以考虑加入社区。根据我的经验,它是一个非常友好的社区(它几乎让我觉得每个人都很好,即使在 IRC 上也是如此)。安装 Rakudo,尝试破解它,提交错误。编写测试用例。编写核心功能的实现,编写模块。有很多事情要做!

【讨论】:

  • @rjh - 非常详细。哎呀,如果我今年夏天可以腾出一些时间,这篇文章可能会成为我尝试您建议的内容(安装 Rakudo 并尝试实现缺失的东西)的一根稻草。 +1
  • 现在是 2013 年 12 月。任何更新?这是一个死项目吗?我刚刚注意到 ActiveState 不再提供 Perl 6。
  • @Uri 我上次听说,Rakudo 正在从 Parrot 作为主要后端转移,因为这给他们带来了很多问题,包括实现难度和性能。 (尽管它已经赶上了 .NET 的竞争对手 Niecza。)正在努力删除 PIR 代码并将 NQP 后端移植到 JVM。除此之外,完成整个 Perl 6 规范需要大量工作,而且需要很长时间。他们仍在发布月度版本,所以它远未结束。
【解决方案2】:

注意:请检查原始答案的日期。自 2020 年 4 月起,情况不再如此。

使用最常见的definitions of "producion ready" as per SO's own thread,Perl 6 尚未准备好生产 - 实现不稳定,可能缺少规范的全部功能。

Please see this SO answer for details on the status as of 2008。语言规范似乎很稳定(至少根据链接帖子中的 brian d foy 所说),但尚未实现。

至于具体日期,as per this post 于 04/08/2010,最领先的 Perl 6 实现的第一个主要版本 - Rakudo(在 Parrot VM 上) - 暂定名为“Rakudo Star 1.0”目标是 2010 年第二季度(原计划是在 2010 年 4 月左右,但由于涉及首席开发人员的个人情况而改变)。

当然,YMMV - 我看到人们在生产中使用的代码/项目(包括他们自己编写的)比 Perl 6 的当前状态低很多。但在 Perl 6 被广泛发布一段时间之前,我个人甚至不会开始梦想部署 Perl 6。

但是,请注意非常重要的一点:以上内容并不意味着 Perl 6 是蒸汽软件或不应该学习它 - 听起来它确实进展顺利,因此我个人打算提前开始深入研究(嗯,已经感谢 SO)所以我准备好在它稳定一点时使用它。

另外,我想补充的是,Perl 6 的一大块很棒的功能被反向移植到 Perl 5(在 5.10-5-12 中,请参阅Perl6:: modules),所以上面关于学习 Perl6 的观点即使您没有立即部署 Perl 6 本身的计划,也非常相关。

【讨论】:

  • 谢谢,因为很多与 Perl6 相关的人倾向于说“取决于你对生产就绪的定义是什么”这是什么废话,因为对此并没有太大的分歧......明确生产就绪意味着什么
  • @David - 一点也不矛盾。正在生产中的东西并不符合“生产就绪”的条件。不是根据我的定义,但定义被投票为 SO 上的公认答案。
  • @David - 谁专门指责“很多与 Perl6 有关的人”在说“废话”?要么您将我与其他人混淆,要么您正在阅读我的答案中的上下文,该上下文与我实际尝试传达的上下文完全相反。此外,您没有提供自己的定义,例如在 Rakudo 上实施的生产(根据您的定义)项目示例和示例
  • 然而,在没有具体证据的情况下——比如一个大制作(你可以把它读作“钱搭上它”)项目在 Rakudo 上稳定并成功实施——声明“这取决于你的定义of what is is”听起来完全是克林顿式的;如果我得到这样的答案,我会礼貌地回复说不应该由项目团队完成。这只会让那些真正关心稳定性和正常运行时间等事情的人完全失去兴趣。而不是像“我们缺少 X、Y 和 Z,并感谢帮助”那样欢迎他们提供帮助。
  • 我个人对“Perl 6 生产是否准备好”的回答是“当我可以向我的管理层指出几个在大公司稳定运行的重大项目示例时,没有主要流错误报告和已解决/最终确定的 API 和接近 100% 的测试覆盖率”。因为没有所有这些,管理层将拒绝我的任何请求,甚至远程考虑在生产中使用 Perl 6。
【解决方案3】:

Perl 6 几天前刚刚正式发布,也就是 2015 年圣诞节。实际上发布了两个非常重要的东西。

首先也是最重要的官方语言规范 Perl 6.c(c 代表圣诞节)发布了。该规范是一组超过 120,000 个测试,称为 Perl 6 Roast (Repository of All Spec Tests) 可以在 Github 的 perl6/roast 下找到。

其次,发布了称为 Rakudo 的 Perl 6 实现的新版本。 Rakudo 是一个在 MoarVM 和 JVM 虚拟机上运行的 Perl 6 编译器。这个新版本的 Rakudo 以 6.c 语言规范为目标,并通过了几个主要架构的所有测试。有关该版本的更多信息,请访问 Github 的 rakudo/rakudo,尤其是 rakudo/rakudo/blob/nom/docs/announce/2015.12.md 下的 2015.12 公告。

Rakudo 安装起来相当简单,我个人推荐使用 Rakudo 安装管理器 rakudobrew。按照此处的说明进行操作https://github.com/tadzik/rakudobrew。除了安装 Rakudo 和 MoarVM,它还可以安装 Panda,这是一个 Perl 6 模块安装程序。

作为一名资深的 Perl 5 和 Python 软件开发人员,我不得不说 Perl 6 看起来是一种极其强大和深入的语言,它解决了我在现有动态语言中发现的许多问题。直接从 Rakudo 公告中获取:

  • 保留 Perl 的核心价值观:表现力、完成工作、接受自然语言的影响以及突破语言设计的界限。
  • 具有简洁、现代的语法,植根于熟悉的结构,但会重新审视和修改需要它的东西。
  • 是真正的多范式,支持优雅的面向对象、函数式、过程式和并发编程
  • 用作出色的粘合语言,允许轻松调用 C/C++(使用 NativeCall)并保持与 Perl 5 的兼容性(通过 Inline::Perl5)。
  • 为处理异步数据和并行计算提供可组合的结构
  • 在正则表达式语法方面进行了戏剧性的改革并设立了新标准,可扩展到完整的语法,强大到足以解析 Perl 6 本身
  • 具有出色的 Unicode 支持,字符串在字素级别工作
  • 重视词法范围和封装,便于重构
  • 可通过元对象编程、用户定义的运算符和特征进行扩展

您想了解的有关 Perl 6 的所有信息都可以在这里找到http://perl6.org/

【讨论】:

    【解决方案4】:

    Leon Timmermans 今天发表的一篇有趣的博客,讲述了 Perl 6 中出现的一些差异。
    Why Perl 6 Is Different 没有太多谈论这些差异何时会出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2010-09-09
      • 2012-12-21
      • 2010-10-09
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多