Pontiff:一种Haskell式的鸡计划构建系统

2020-05-17 05:00:26

Pontiff做了一个核心假设/强加:一个模块是一个文件是一个编译单元在此基础上,它自动解析构建顺序,并行构建,获取和沙箱所有依赖项最终将允许用户指定依赖项版本约束它还将控制编译器和运行时,允许跨平台和所有时间的可重复构建。

Pontiff目前正在内部开发中,直到它的功能集和接口被锁定,Pull请求将被礼貌地拒绝,通过问题提出的功能请求将被考虑。非常感谢错误报告。我的目标是以向后兼容的方式开发Pontiff,可以跨Pontiff文件版本进行功能迁移,但是如果我破坏了您的项目,请随意在#FICE ON FREENODE中对我(Alicemaz)大喊大叫。

目前,Pontiff在Linux(可能还有BSD?)上工作。并且需要lang lld和git‘我很快就会支持GCC和gnu ld。我会支持SVN,可能很快就会支持。我想支持pijul如果仅仅出于美学原因,我可能会在某一天勉强支持Windows,但不会在不久的将来的任何时候引导脚本在ArchLInux上不起作用,除非您将FICE-CSI别名为CSI,但这是一个简单的修复方法。

依赖关系必须通过存储库和目录对象指定为长格式,但这应该不是什么大问题,因为除了我之外,没有人很快发布过PIOTFF项目。我很快就会有一个基本解析器,这样您就可以指定一个符号,然后以某种方式转换为回购。最终,我会有一种方法来发布版本化的tarball,并允许半个模式(或类似的东西)将它们拉下。

要开始,请运行bootstrap.scm。它将构建一个最小可行Pontiff,然后使用该Pontiff正确构建PINTIFF它调用鸡肉-安装-s,因此如果从那里调用了您不喜欢的东西,请小心,将生成的(静态链接的)PANTIFF二进制文件放入某个路径PATH新的[项目名]将创建一个hello world项目,其中包含一个可执行的Pontiff Build和Pontiff run。正如您所期望的,我最终会有更多关于Pontiff.ix文件的kawaii文档,但是它的类型规范可能是相当可读的。

记住,文件是模块是一个编译单元,更具体地说,模块的路径唯一地确定其名称:src/a/b/c.scm必须是包含一个且只包含一个模块的文件,名为a.bc。有些东西我们是故意不支持的(比如函数器;期望表格中的类型类系统迟早会出现!)。同样重要的是,不能使用宏来扰乱导入列表,因为我们必须在编译之前对它们进行解析,以便对模块进行排序。

这是我们的第一个重要的软件版本,还有更多版本即将发布!希尔夫将主要建立在哈斯克尔计划和AGDA计划之上,我们希望尽我们所能为未来做出合理的贡献。