你应该试试哈德良

这是针对GHC开发商的公告:

您应该尝试使用Hadrian作为GHC构建系统,因为它(希望如此!)将成为GHC 8.8的默认版本。

哈德良是什么?我该如何尝试?

哈德良是Glasgow Haskell编译器的一个新构建系统,该编译器是用哈斯克尔语言编写的。它位于GHC树中的目录“hadrian”中,我们在过去一年中一直在积极开发它,以达到与现有基于Make的构建系统相同的功能和正确性。虽然我们还没有完全达到这个目标(更多信息请参见下文),但Hadrian已经工作得很好,自最近迁移到GitLab以来,我们在CI管道中与Make作业一起运行Hadrian作业。

在这一点上,我们鼓励每个人尝试使用Hadrian完成他们通常的GHC开发任务。Hadrian的文档位于GHC的源代码树中,下面是您最感兴趣的文档:

  • 这个自述文件是哈德良文档的根源。它解释了基本知识,并在适当的情况下指向更具体的文档。
  • A类记事本式文档对于使用Make构建系统的GHC开发人员,显示了许多任务的等效Make/Hadrian命令。
  • A类“用户设置”机制的描述在Hadrian中,您可以定制构建风格,选择要构建的包,添加文件/包/平台特定的命令行标志等。
  • A类“测试”规则的描述以及它支持的所有选项。

文档当然可以改进,因此请毫不犹豫地在此处向我们发送反馈和建议,或者更好地GHC追踪; 确保在创建新票据时选择组件“Build System(Hadrian)”。

你需要哈德良

哈德良是一个新手,需要时间来学习,仍然有一些粗糙的边缘,但它的发展是为了让你的生活变得更好。以下是哈德良相对于基于制造的构建系统的一些优势:

1) 哈德良更可靠

Hadrian可以更准确地捕获构建依赖项,这意味着您很少(如果有)需要进行干净的重建。

2) 哈德良更快

Hadrian速度更快有两个原因:(i)更准确的构建依赖性,(ii)跟踪文件内容而不是文件修改时间。两者都可以避免大量不必要的重建。构建Hadrian本身可能需要一段时间,但只需完成一次。

3) 哈德良更容易理解和修改

您不再需要处理Make的可变字符串变量的全局命名空间。哈德良是用你喜欢的语言写的;它有模块、类型和纯功能。

如果您遇到Hadrian在上述任何方面都比Make构建系统差的情况,这是一个错误,您应该报告它。

帮助哈德良

最好的帮助方式是尝试Hadrian,让我们知道它是如何运行的,什么不起作用,您缺少什么,您认为什么应该更容易,等等。下面是我们正在修复或即将解决的已知问题列表:

  • 第2阶段GHC在大多数情况下应该是动态链接的,但目前从来没有。参见票据#15837
  • GHC测试套件中大约有十几个失败的测试,其中一些与#15837
  • 二进制发行版还没有在许多平台上进行彻底测试(只有一些Linux版本)。这里肯定会有一些问题。例如,二进制分布规则当前在Windows上失败
  • 目前还没有“验证”规则,只有“测试”规则,但我们拥有实现这一点的所有组件,并且具有很高的优先级。
  • 问题通过构建交叉编译器。

与Make构建系统相比,我们可能会缺少一些功能,但在这一点上,这些功能都不需要花费太多时间来实现。如果你发现了一个,请告诉我们!我们将尽最大努力尽快实施(或帮助您实现)。查看现有哈德良门票在提交新问题之前,确保您想讨论的问题或想法尚未被提出。

当然,我们也欢迎您的代码贡献!几个GHC开发人员对Hadrian代码库有很好的理解,将能够帮助您。要查找他们的姓名,请查看最近Hadrian提交的列表如你所见,哈德良正由许多人积极发展,我们希望你也能加入。

留下回复

您的电子邮件地址将不会被发布。 已标记必填字段*