这是我们GHC活动报告的第十九版,其中描述了我们在Well Typed正在进行的GHC和相关项目的工作。当前版本大致涵盖2023年6月和7月的月份。您可以在ghc-activities-report标签.
非常感谢我们的赞助商,他们使这项工作成为可能:安督瑞尔,哈苏拉和Juspay公司此外,我们很感激水银为改进的特定工作提供资金GHC、HLS和相关项目的绩效。然而,我们需要更多的赞助支持团队!如果贵公司能够出资支持这项工作,请阅读有关如何提供帮助的信息或联系.
当然,GHC是一个大型的社区努力,而Well Typed的捐款只是其中的一小部分。本报告的目的不是提供详尽的图片全部的GHC工作正在进行中这里省略了目前正在开发的一些很棒的功能,原因很简单目前我们没有人以任何方式参与其中。此外,我们做提到的仍然是许多人的工作。在许多情况下,我们只是在帮助解决最后几个问题集成步骤。我们非常感谢为GHC做出贡献的每一个人!
团队
Well-Typed的GHC团队包括本·加马里,安德烈亚斯·克莱宾格,马修·皮克林,祖宾·达加尔,萨姆·德比郡和罗德里戈·梅斯基塔,使用Jaro Reinders公司加入团队实习。Well-Typed内部的许多其他人更偶尔地为GHC做出贡献。
发布
类型检查器和重命名器
Sam和Matthew重构了ZonkerTcLclEnv公司
分别用于解耦编译器的各个部分,大大减少了模块Haskell语法树和解析器的依赖项。
Sam改进了模式匹配检查做
-符号,这意味着GHC将不再在代码中虚假地发出不完整的模式匹配警告例如做{x@(右{})<-;设z={右y->y}的情形x;…}
Jaro转换了独特
从国际
到64字
(!10568). 这避免了在32位平台上耗尽uniques的问题,这困扰了一些大型软件包,例如潘多克
或阿格达
.
Sam彻底改变了对表示-多态标识符。这使我们能够执行表示-对不在参数位置的类型进行多态性检查,如有必要捕捉#
primop(参见#21906和#21868).这也允许接受更多的程序,例如(#,#)@(RR Int)x y
可以接受,其中相对应力
是这样的类型族RR积分
减少到混凝土运行时代表
(例如国际代表处
).
记录
Sam修复了GHC 9.6中导致记录更新不完整的回归不再发出警告。
Sam修复了记录字段弃用中的回归(!10761).
Sam确保记录字段无字段选择器
不由导入导入列表中的顶级变量导入(!10759). 他也这样做了导入列表中拼写错误的项目现在会引起类似名称的建议。
错误消息和警告
Matthew使用新的错误消息基础结构打印中的不同错误消息全球温室气体排放指数
(!10305),以避免提出以下建议:set-程序包文本
除此之外没有任何意义全球温室气体排放指数
.
Matthew修复了一些有关精美打印和显示的问题警告
秒(!10595,!10752).
Sam已完成将错误消息迁移到新的诊断基础结构(!10908).
Sam为GHC添加了列出它可以发出的所有错误代码的功能(!10857). 这允许编写检查错误覆盖率的测试测试套件中的代码。
Sam修复了一个回归,其中不可接触的类型变量信息自9.6以后不再包含在错误消息中(!10800).
简化程序
驾驶员
Matthew修复了-S公司
编译时的标志.cmm(厘米)
文件(!10817). 这个组合很可能从未被普通用户使用,但它被用于测试-演示
测试套件。
Zubin调整了GHC API,以允许HLS等客户对查找缓存
(#23604,!10897).
运行时系统
Matthew在即时评测中实现了一些缺失的功能应该有助于调试由于堆栈分配更改而导致的回归(!10483).
Ben确保-恐怖分子
在生成时正确传递给C编译器运行时系统,并修复了由此出现的错误(!9579).
本取代了老式的显性屏障负载
/商店
/写
功能从RTS,选择使用C11样式的获取/释放操作。特别是,这为GHC增加了C11型围栏操作(!10628).
Ben通过确保分配固定
考虑到对齐,这样我们就不会超出块大小进行分配(!10524).
Ben修复了由调用导致的死锁出口
从信号处理器内部发出,这是不安全的;相反,我们打电话给_退出
只执行最小的清理(#23417,!10511).
Ben引入了对捕获输入的thunk信息表的支持堆栈,由-forig thunk信息
标志。这样做更容易调试线程在黑洞上被阻塞的原因(#23255,!10271).
Ben修复了一个达尔文
错误,其中FFI_GO_关闭
未定义宏尽管被依赖(#23568,!10750).
代码生成
Andreas确定了问题的根本原因,其中AVX指令集在某些平台上未正确启用(#23718).
Ben和Rodrigo确保数据构造函数包装器得到正确的Lambda表单信息
,以避免撞车(#23146,!10165).
Ben修复了处理MulMayOflo公司
AArch64上的primop(#23721个)并改进了该操作的测试基础设施测试-演示
.
Ben开始合并和移植各种内存排序修复程序他在过去几个月里收集了很多。
链接
Matthew调试了GHCi链接问题(#23580)追溯到缺乏支持对于地址#
文字。已经添加了对这些功能的支持,以及后台移植这个改变解决了这个问题。
Ben实现了几个与分割
,允许在Windows上重新启用此标志(!9810,!10959).
Ben描述并确定了动态链接性能缓慢的原因关于达尔文(#23415).
Ben使用离线原子修复了运行时系统链接器对AArch64工具链的支持(#22012).
Ben致力于为nullary数据构造函数工人修复字节码生成(#23210).
包装
Matthew让GHC发出必要的构建元数据信息需要用于GH杯
为夜间GHC发布提供支持(!10473,!10705,!10808).
马修修正了emsdk公司
在损坏后的构建图像中使用由于工具链的意外升级而引入(#23641).
Matthew升级了i386 CI跑步者,使用Debian 10构建绑定列表(!10769).
GHC构建系统
罗德里戈在运行时可重定向GHC方面取得了重大进展他的工作ghc工具链
(!9263). 我们计划很快发布一篇包含更多细节的博客文章。
本通过规范化修正了哈德良在符号链接存在的情况下的行为top目录
(#22451,!10559).
Ben在CentOS平台上修复了Hadrian的几个问题(!10760).
Ben到处工作ld.黄金
生成无效的静态构造函数表拒绝使用i386ld.黄金
(!10764).
Ben修复了一个Hadrian错误,其中C源的依赖信息可能是使用与编译不同的标志生成,导致中断避免重新编译。
哈多克
芬利最终晋级hi-haddock公司
工作,允许Haddock重复使用接口GHC创建的文件,以生成文档(!10469). 他还对Haddock实现了其他内存使用改进。
Matthew修复了Haddock中默认方法显示错误的错误输出(#23616).
芬利确保Haddock注释正确插入AST用于背包签名模块(!10370).
CI和测试
Matthew发现一些性能测试对微小的变化很敏感由于位于堆栈溢出边界上,并按顺序添加了一些选项稳定这些测试(!10507).
Matthew声明依赖蟒蛇3-dev
和轮
-程序包修复运行linting作业的CI计算机的构建环境问题(ci-图像MR 121).
Ben添加了一个测试,用于测试基础
包装(!9816).这将确保对GHC的任何捐款不会在无意中产生任何对的更改基础
为了改进开发人员的工作流程,他还使CI作业能够将意外的测试输出保存为CI人工制品(!10535).
Ben改进了测试-演示
testsuite和支持x86-64上i386代码生成的测试(试验方案MR 10)
Matthew致力于整合测试-演示
测试套件到默认CI管道中。目标是能够在可能的合并请求上运行测试套件影响代码生成。在补丁开始和完成之间,有些补丁是merged引入了test-primops捕获的错误!(!10910)
Matthew精简了合并请求验证管道。最近出现了几个需要排队的情况合并请求的CI,我们希望尽可能减少此延迟。因此,现在每个合并请求上默认运行的作业更少,但开发人员可以请求通过应用~完整ci
标签。完整CI仍在上运行每个合并批处理以防止任何错误提交进入树。
头部黑客攻击
核心库
GHC提案
- GHC指导委员会接受了Adam的提案581:特定名称空间进口(#23781).这将更容易区分类型和数据导入和导出列表中的名称空间,并将修复的设计
显式命名空间
扩展。它建立在Artyom的努力之上库兹涅佐夫和其他人在之前的提案中。