这是我们GHC活动报告的第二十版,其中描述了我们在Well-Typed开展的GHC和相关项目的工作。目前的版本大致涵盖2023年8月和9月。您可以在ghc-activities-report标签.
非常感谢我们的赞助商,他们使这项工作成为可能:安督瑞尔,哈苏拉和Juspay公司.此外,我们感谢水银为GHC、HLS和相关项目改进绩效的具体工作提供资金。
然而,我们需要更多的赞助以维持团队!如果您的公司能够提供资金来维持这项工作,请阅读有关如何提供帮助的信息或联系.
当然,GHC是一项大型社区工作,Well-Typed捐款只是其中的一小部分。本报告的目的不是提供详尽的图片全部的GHC工作正在进行中这里省略了目前正在开发的一些很棒的功能,原因很简单目前我们都没有参与其中。此外,我们做提到的仍然是许多人的工作。在许多情况下,我们只是在帮助解决最后几个问题集成步骤。我们非常感谢为GHC做出贡献的每一个人!
团队
Well-Typed的GHC团队包括本·加马里,安德烈亚斯·克莱宾格,马修·皮克林,祖宾·达加尔,萨姆·德比郡和芬利·麦克尔瓦恩.此外,Jaro Reinders公司最近完成了我们的实习。Well-Typed内部的许多其他人更偶尔地为GHC做出贡献。
发布
前端
类型检查器和重命名器
Sam使用修复了不正确的作用域行为隐式参数
这就是结果约束求解器重构(!11013).
Sam删除了允许GHC的模式同义词错误恢复机制在模式同义词未能进行类型检查后蹒跚而行:我们只是失败了相反,这避免了不可预测的敲打后果(#23467,!11114).
Sam修复了在导出列表(#23570,!11107).
Sam审查、调试并完成!10860GHC贡献者Antoine Leblanc。这项工作防止了.hs(小时)
和.hs-引导
文件来自导致编译器死机。
Sam确保我们始终使用不能满足的
补足缺失的班级类实例的方法无法满足
上下文,即使有默认方法可用,也可以避免意外运行时循环-fdefer类型错误
(!11075).
错误消息和警告
Sam改进了围绕未使用项的逻辑和错误消息类型和数据族实例声明中的类型变量,修复几个问题(#23768,#23778,#23734,#23784).
马修补充道-Winconsistent标志
警告标志,用于控制在以下情况下触发的警告传递给GHC的命令行标志不一致。这允许用户需要时将警告静音(!11213).
Sam添加了查询给定的所有诊断代码的功能GHC版本通过新的哈德良目标发射代码
和代码:过时
(!11079).
优化
驾驶员
后端
运行时系统
Ben确保IO管理器在Windows上可靠关闭(!10905).
Ben重构了非移动垃圾收集器中的并发标记,避免在每个主要GC循环中创建新线程,从而改进堆栈导致的内存使用(!11048).
Ben修复了AArch64上缺少的原子操作符号错误(!11172).
Ben调查了GHC 9.2中可能存在内存泄漏的问题(#23949).
Primops公司
代码生成
Andreas确保AArch64代码生成器不会发出过大的代码条件跳转指令(#23746,!11254).
Ben在使用ThreadSanitizer时修改了寄存器的处理,使ThreadSantizer工具化可用于大型程序。他几乎已经完成了合并他长期运行的ThreadSanitizer工作中的更改(!10203).
Ben改进了描述thunk更新的内存排序属性的文档(!11007).
Ben更改了将堆栈对齐标志传递给LLVM的方式(#23870个,!11124).
Ben修复了AArch64代码生成器对子字长乘法的处理,并改进了在测试-演示
测试套件(#23721).
Ben开始调试一个神秘的运行时崩溃(#23952).
链接
分析
Andreas修复了导致中出现问题的JSON字符转义错误分析报告(#23924).
Finley实现了一个更改,允许用户细化构造函数集-fdistict-constructor表
应用于,它可以显著减少包含可信息来源信息的二进制文件的大小(!10958).
芬利实施了-fd区分结构-表-每个模块
标志,可用于获取包含数据构造函数的per-module分配统计信息的堆配置文件(!11068).
芬利补充道-(f){no-}信息表-使用-{堆栈,回退}
旗帜,它允许用户控制堆栈闭包的信息表还是信息表带有默认源位置的表包含在信息表映射中(!10926).
Finley修复了一个导致某些不受约束的实例字典的IPE信息丢失源位置的错误(!11242).
Finley在使用编译时提高了编译器性能-查找表映射
(!11023).
图书馆
本介绍了两个新的图书馆,ghc内部
和ghc实验
.这些是作为哈斯克尔基金会技术建议书51以帮助稳定基础
库。
Ben重构了例外情况回溯ghc-proposal 330变成不同的供核心图书馆委员会审议的次级方案在下面CLC提案164.
本公开CLC提案209添加对EPOLLRDHUP公司
事件到埃波尔
GHC事件管理器的后端支持此活动围
。这将启用服务器应用程序在客户端关闭时取消正在进行的工作其连接的接收端。
Jaro提交CLC提案187关于使用本机操作加快速度枚举字64
和枚举Int64
在32位平台上。提案的实施(!10825)可以将性能提高1.5倍在i386和5.6x上使用JavaScript后端。
Ben记录了readFloat(读取浮点)
函数需要一个成比例的运行时输入的大小,因此应避免使用不受信任的输入(!11246).
Matthew在基准套件上测试了9.8个预发布版本的性能属于字节删除
,文本
和容器
,确定单一回归(#23822).
构建系统、CI和分发
GHC构建系统
Matthew添加了一个新的重定位二进制dist
允许创建的目标GHC的可重定位二进制分布。这特别有用在Windows上,作为以前创建二进制分发的机制我们都知道它坏了。
Matthew对ghc工具链
确保其生产与configure脚本兼容的结果(!10976),修复了几个问题(#23720,#23689,#23681,#23676).
Matthew在提取Hadrian以允许构建第二阶段交叉编译器。这使得交叉编译器符合我们构建普通编译器,还允许我们构建第三阶段编译器用于新体系结构(#19174).
本加了一张支票C99码
支持ghc工具链
(!11131).
CI和测试
包装
Matthew添加了aarch64-alpine和aarch64-deb11绑定器(!10594).
Matthew修复了一个错误,我们在该错误中安装了同一手册页(!11085).
Ben确保许可证
文件被正确复制到二进制发行版(!11294).
马修撞了MAXOSX_部署_目标
到10.13
(#22938,!11210).
Zubin确保将python文件作为依赖项进行正确跟踪哈德良的文档
目标(!11072).
Ben恢复了用户指南与旧版Sphinx的兼容性(!11073).
Ben固定断裂:base-ref:
用户指南中的参考(!11337).
Zubin调查了由于字节删除
子模块bump和RTS头文件(#23789,!11088).