为什么GHC测试套件是用Python编写的,而不是用Haskell编写的?

时间:2016-07-16 06:20:43

标签: python haskell ghc

我注意到GHC(一种广泛使用的Haskell编译器)有一个用Python编写的测试套件,而不是Haskell(我天真地期待)。这是什么历史?用不同的语言编写测试套件有什么特别的好处吗?

编辑:根据评论中的建议,我在/r/haskell中提到了这一点。它现在已经产生了三个答案,我在下面引用了这些答案:

tathougies 说:

  

测试套件驱动程序似乎是用Python编写的。 Python是一种很好的高级脚本语言。

     

这就像问为什么GHC使用Make而不是haskell'?可能因为make更好地运行内置外部依赖性解析的shell程序。

     

测试本身似乎是用Haskell编写的,验证编译器的某些属性并捕获回归。如果它们失败,看起来就会通知python驱动程序,然后将错误报告给用户。

phadej 补充道:

  

FWIW GHC的构建系统正在被重写以使用shake:Haskell库。

eacameron 说:

  

我不知道。但GHC并不像你和我一样拥有使用Haskell的奢侈品。它必须使用以前版本的自身进行引导,并且它希望避免依赖性。 Python是一个相当轻量级的要求,因为大多数系统(Windows除外)都内置它。

1 个答案:

答案 0 :(得分:5)

介绍Python的commit消息解释了很多内容:

  

修改testsuite框架。以前的框架是一个   有点失控的实验 - 一种全新的语言   用Haskell写的翻译是相当重量级的并且离开了   我们有维护问题。

     

所以新的测试驱动程序是用Python编写的。缺点是你   需要Python来运行测试套件,但我们认为这不是太大了   问题,因为它只会影响开发人员和Python安装   这些天很容易就可以了。

     

亮点:

     
      
  • 790行Python,而5300行Haskell + 720行<奇怪化妆语言>。

  •   
  • 框架支持以各种“方式”运行测试,这应该是   抓住更多的虫子。默认情况下,每个测试都以三种方式运行:   normal,-O和-O -fasm。另外,如果分析库   已经建立,另一种方式(-O -prof -auto-all)被添加。我计划   还要添加“GHCi”方式。

         

    多种方式运行测试已经出现了一些新的错误!

  •   
  • 文档在README文件中,并有所改进。

  •   
  • 该框架的GHC特性较少,而且可能没什么用   难以哄骗使用其他编译器。大部分的   GHC特异性位于单独的配置文件(config / ghc)中。

  •   
     

可能需要一段时间才能安定下来。期待一些意外   故障。