我们很高兴能支持哈斯克尔基金会规划苏黎世前2023年6月7日至9日在苏黎世为新GHC贡献者举办的研讨会(以及在线研讨会)。在此处了解更多信息并表达兴趣.
这是我们GHC活动报告的第十六版,其中描述了我们在Well-Typed开展的GHC和相关项目的工作。当前版本大致涵盖2022年12月和2023年1月的月份。您可以在ghc-activities-report标签.
我们很高兴Juspay公司正在赞助这项工作。非常感谢他们和我们的其他赞助商,包括github通过哈斯克尔基础、和IOG公司.我们还与哈苏拉和水银与GHC相关的具体改进,例如具有核心定义的接口文件.
然而,我们的一些赞助协议即将结束我们需要更多的赞助以维持团队!如果贵公司能够出资以确保我们能够请继续这项宝贵的工作阅读有关如何提供帮助的信息或联系.
当然,GHC是一项大型社区工作,Well-Typed捐款只是其中的一小部分。本报告的目的不是提供详尽的图片全部的GHC工作正在进行中这里省略了目前正在开发的一些很棒的功能,原因很简单目前我们没有人以任何方式参与其中。此外,我们做提到的仍然是许多人的工作。在许多情况下,我们只是在帮助解决最后几个问题集成步骤。我们非常感谢为GHC做出贡献的每一个人!
团队
现有GHC团队包括本·加马里,安德烈亚斯·克莱宾格,马修·皮克林,祖宾·达加尔和萨姆·德比郡.Well-Typed内部的许多其他人更偶尔地为GHC做出贡献。
我们很高兴欢迎罗德里戈·梅斯基塔为团队提供未来六个月的实习期。罗德里戈将致力于实现安全重新安装温室气体
和template-haskell模板
图书馆(#20742). 这个是一个关键步骤,它将解锁更好的交叉编译,更健壮工具支持,以及GHC中库兼容性的潜在改进版本。
发布
驾驶员
Matt完成并从一个贡献者那里获得了一个补丁,修改了插件初始化点,以便插件可以安装挂钩(#21279,!9824).
Matt修复了发现的多家庭单元支持中的各种错误测试新Cabal对启动多单元会话的支持时(!9618).
前端
Andreas诊断出一个问题不透明
杂注触发了编译器死机(#22502).
Sam提出了一个补丁,添加了Template Haskell对explicit的支持对于所有人
实例中的量词(!9840).
Matt修复了中某些定义的模块位置全球总部。类型
s用于可输入
(#22510,!9459).
错误消息
运行时系统
Ben调查了MacOS Ventura上反复出现的运行时崩溃(#22497个),其中原来是GMP库,需要回传到9.2,9.4和9.6分支。
Ben开始考虑改进RTS符号的链接故事,这是分销包装商长期以来头疼的问题(#17157).
Ben修复了运行时系统的C源代码中的警告清理问题,并修复了Hadrian以确保它们保持干净(!9579)
垃圾收集器
Andreas修复了GCing的火花问题(#22528)有时会产生火花按顺序计算而不是并行计算。
Andreas在对从TH评估的CAF进行GCing时调查并修复了一次碰撞(#22417).这修复了在静态构建目标(如Windows)上涉及TH的一些长期存在的虚假段错误。
Ben对非移动垃圾收集器进行了重大改进:
- 修复了在非移动写屏障中对空数组的处理(#22931).
- 大大改进了
弱#
对象,这些对象以前可能没有及时完成(#22327).
- 修复了与
setNum功能
(#22926,#22927).
- 确定并修复了GC选择器优化实现中缺少的写入障碍(#22930).
- 通过限定同步暂停中的标记工作,显著改善了某些程序的暂停时间(#22929).
- 继续实施并行标记支持。
- 提高了派驻报告的准确性。
在处理GC时,Ben还通过ThreadSanitizer工具识别并修复了RTS中的一些数据争用(!6232,!9371,!9372,!9482).
代码生成
Sam改进了GHC如何跟踪使用Cmm寄存器的类型。特别是,这有助于确保SIMD向量寄存器以一致的方式使用(!9167).
Ben诊断并修复了一个AArch64后端问题,该问题导致图形着色寄存器分配器在编译时崩溃(-弗雷格图
)正在使用中(#22798).
Andreas修复了由于Cmm和Bytecode后端之间的差异导致的标记推断分析中的错误导致的运行时崩溃(#22840).
Andreas错误地避免了将包含未装箱元组的大型构造函数拆箱到其他构造函数中(#22309,!9724).如果需要,它们仍然可以显式取消装箱。
Ben固定-fsplit截面
在Windows上(#22834).
Ben修复了MacOS上与链接相关的编译失败(#21972).
测试套件
Andreas更新了无纤维蛋白纤维
基准测试套件,以确保它可用于即将发布的9.6版本,以及其他一些小的调整。
Ben改进了无光纤比较
实用程序。
Matt增加了9.4.4版的问题测试,但已经修复。
Ben发现测试套件出现故障-有螺纹的
并且启用了健全性检查,并开始修复这些问题。
包装
Matt修复了未安装手册页的问题。
Matt对构建系统和打包进行了各种修复,包括为发布构建启用分割。
Matt添加了一个标志,用于从接口文件中省略自我编译信息您永远不会尝试重新编译包的情况。这个避免生成中出现非确定性。
Ben撞上了GHC附带的Windows工具链(#21293,!9683).
Matt添加了对LLVM 15的支持,同时删除了对LLVM 10的支持。此后,GHC将支持LLVM 11至15。
Zubin修复了二进制分发配置脚本的一个问题,该脚本没有检查找到
命令可用(!9777).
Matt添加了用于自动生成的元数据的脚本GH杯
。当一个新的发布后,元数据将发送到GH杯
容易维护的人员使用它添加对新版本的支持GH杯
。元数据生成于夜间和释放管道,现在用于测试许多不同的二进制分布平台。
CI公司
Matt将CI跑步者升级为对CI使用GHC 9.4.3。
Matt修复了达尔文CI跑步者的各种问题,因此他们可以重新启用,增加CI容量。
Matt添加了Ubuntu 18.04夜间发布作业。
本增加了一份Rocky Linux CI工作,填补了Centos 7退休后留下的空缺。
Ben原型基础设施,用于收集CI中的硬件性能计数器指标,以更可靠地捕获代码生成回归(!7414).
头部黑客攻击
ghc调试
- Matt添加了对跟踪静态引用表(SRT)的支持
ghc调试
.
支持用户/贡献者
稳定性
Ben撰写并领导了核心图书馆委员会的提案,增加了新的国外。C.ConstPtr.公司。ConstPtr公司
类型,有助于解决#22043.
Ben开始评估基础
的全球总部*
模块名称空间是在公共API和GHC-内部API之间实现更清晰分离的第一步基础
.
Ben引入了CI支持,用于跟踪基础
帮助确保核心库的更改得到应有的审查(!9816).
Sam做了一个CLC提案关于弱指针终结期间出现的异常的报告。在就这个问题达成协议之前,GHC的错误报告已恢复原状,用户可以根据自己的意愿自由更改。