这是我们GHC活动报告的第十八版,其中描述了我们在Well-Typed开展的GHC和相关项目的工作。当前版本大致涵盖2023年4月和5月的月份。您可以在ghc-activities-report标签.

非常感谢我们的赞助商,他们使这项工作成为可能:安督瑞尔,哈苏拉,Juspay公司github通过哈斯克尔基金会此外,我们很感激水银为改进的特定工作提供资金GHC、HLS和相关项目的绩效。然而,我们需要更多的赞助以维持团队!如果您的公司能够提供资金来维持这项工作,请阅读有关如何提供帮助的信息联系.

当然,GHC是一项大型社区工作,Well-Typed捐款只是其中的一小部分。本报告的目的不是提供详尽的图片全部的GHC工作正在进行中这里省略了目前正在开发的一些很棒的功能,原因很简单目前我们没有人以任何方式参与其中。此外,我们提到的仍然是许多人的工作。在许多情况下,我们只是在帮助解决最后几个问题集成步骤。我们非常感谢为GHC做出贡献的每一个人!

团队

Well-Typed的GHC团队包括本·加马里,安德烈亚斯·克莱宾格,马修·皮克林,祖宾·达加尔,萨姆·德比郡罗德里戈·梅斯基塔此外,我们很高兴Jaro Reinders能够在接下来的几个月里加入团队进行实习。Well-Typed内部的许多其他人更偶尔地为GHC做出贡献。

发布

  • Ben编制并发布了GHC 9.6.2。
  • 祖宾编制并发布了GHC 9.2.8。

前端

  • Sam已实施GHC提案#433添加无法满足。这是对类型错误,但有更可预测的行为,以及一些可用性增强(例如不需要手动写出实例,带有无法满足上下文)。

  • Sam解决了恐慌(ltP大小)在类型检查器中,与终止有关检查涉及类型族的超类(#23171).

  • Matthew最小化了一个约束求解速度非常慢的程序(#23158). 该问题随后由Simon Peyton Jones在年解决他对等式约束处理的重构(!10123).

  • 马修修复了一个错误-Wunused包装有时会不正确警告一下全球总部。Prim公司未使用(!10278).

  • Sam修复了无效newtype的类型检查中的各种恐慌递归组中涉及的声明(#23308).

  • Sam修复了模式匹配检查器无法传播的错误生成代码中的远程信息(#23445).实际上,这修复了某些不正确的无穷无尽的模式警告用于记录更新体中发生的模式匹配。

错误消息和警告

  • Sam完成了Soham Chowdhury改进错误消息的工作对于不正确的导入语句(!8895).例如,导入数据。类型。等式(~)现在给出错误消息建议“也许你的意思是类型(~)“,而不是简单地说那个(~)不在范围内。

  • Sam改进了错误消息中不明确的地方,例如提到当多个数据构造函数有一个带有作用域中的名称(!10355).

  • Sam在中迁移了错误消息全球总部。Tc.模块到新诊断基础设施。在此过程中,将检查hs-启动hsig(兴奋剂)文件及其实现被收紧了一点,修复了几个背包中有效性检查的不足(#23342,#23344).

  • Sam帮助两个贡献者完成了将错误消息迁移到新的诊断基础设施。多亏了Hai Nguyen Quang处理全球总部。Tc.有效性(!6511)和格雷戈里·杰拉塞夫用于搬运全球总部。重命名。剪接全球总部。重命名。帕特(!8292).

后端

  • Finley支持信息源条目的压缩(IPE)。这个减少使用生成的二进制文件的大小-查找表映射大约使用20%zstd标准(!9893).

  • Zubin确保GHC在以下情况下使用压缩字符串表示将内容序列化为接口文件,并且这些字符串不会多次重复和重新分配(#22744,!10403).

  • Matthew发现并修复了一个错误-fdicts-严格这可能导致使用编译时的运行时循环-氧气(!10282).

  • Ben和Rodrigo修复了null数据构造函数的标记问题可能导致分段故障(#23231,!10165).

  • Andreas诊断出GHCi段故障(#23404),识别失踪人员后端口(!10061).

  • 罗德里戈更新了未提取外国金融机构说明对…的抨击阵列阵列#(!10344).

运行时系统

  • Ben一直在调查中观察到的内存排序问题#23222相信他现在已经找到了罪犯。

  • Andreas研究了克隆堆对象与调试的兼容性运行时系统。这在调试RTS的过程中暴露了一些不兼容性处理可能导致分段错误的静态thunk。

  • Matthew改进了记忆保持行为,以解释钉住和压缩对象。这确保RTS不会高估内存量当有很多这样的物体时(#23221).

  • Ben修复了对齐分配代码路径中的一个错误,其中大型对齐可以导致块溢出(#23400)

包装

  • Matthew修复了指向下载.haskell.org网页(#23121).

  • Matthew添加了一个CI作业来创建香草(非全静态)阿尔卑斯二进制分配。

  • Zubin确保我们在测试GHCup时实际测试32位GHC二进制文件配置。

GHC构建系统

  • Rodrigo致力于多工具链选择支持(#一九八七年),铺砌实现运行时可重定向GHC的方法。这项正在进行的工作包括许多补丁GHC如何配置和使用工具链(#23361,!10431,!10513).

  • Matthew和Rodrigo在Hadrian构建的包中添加了unit-id散列(!10119).这使我们转向可重新安装的引导包(例如,可重新安装温室气体库),因为它允许我们检测潜在的不安全情况(#20742).

  • 马修做的哈德良呼叫黑线鳕使用响应文件,以避免Windows上的过长行错误(!10307).

头部黑客攻击

  • Matthew添加了一个aarch64作业到头部黑客攻击CI。

  • 本一直在搬家头部黑客攻击的构建基础设施以替代优秀的树叶工具,允许冻结头部黑客攻击黑客存储库电缆安装指数状态字段。

核心库

  • Ben一直在与核心图书馆委员会和其他利益相关者合作开始将GHC的内部实现与基础。请参阅哈斯克尔基金会技术建议书#47.

  • Ben一直致力于引入基础设施来更紧密地测试接口的稳定性基础和相关包。

GHC提案