平台通讯:2023年8月

欢迎阅读第五期 OCaml 平台通讯!

深入了解8月份的最新更新,并发现 OCaml 平台 如何发展。就像我们的 之前的通讯 一样,我们将重点介绍 OCaml 开发工作流程的最新发展和增强功能。

8月份,我们发布了 OCaml 平台路线图的初步草案,遵循最近通过的 指导原则用户画像。该话题引发了大量讨论,我们很高兴看到如此多的参与者讨论 OCaml 开发工具的方向。感谢您积极参与讨论并分享您的反馈!这促使我们与平台维护者进行了大量讨论,我们正在考虑您的所有反馈意见,并正在努力修订路线图。

8月份的另一个重要事件是将 wasm_of_ocaml 集成到 Dune 中,以将 OCaml 程序编译为 WebAssembly (Wasm)。这紧随最近的 ocaml-wasm 组织的公告。这是一个激动人心的时刻!将 OCaml 程序编译为 WebAssembly 正在成为现实!

但更多内容将在下面介绍。让我们深入了解上个月取得的所有进展。

发布

以下是本月发布的所有新版本平台工具

有关详细的发布说明和公告,请探索 OCaml 变更日志

构建包

[Dune] 探索 Dune 中的包管理

贡献者:@rgrinberg (Tarides), @Leonidas-from-XIV (Tarides), @gridbugs (Tarides), @kit-ty-kate (Tarides), @Alizter

本月,通过为各种 opam 功能添加支持,在为更多 opam 包支持生成锁定目录方面取得了良好的进展。值得注意的是,团队实现了一个新的 when 操作,以支持 opam 的条件构建步骤,以及相应的 PR 来 将 opam 过滤器转换为 when 操作

同时开始着手 从锁定文件初始化 Dune 的上下文。这是将所有已实现的功能(源代码获取、opam 仓库管理、锁定目录生成等)整合在一起的最后一块拼图。这使得能够运行 dune build 来构建具有 opam 依赖项的项目。

上述工作——扩展生成锁定目录时 opam 包的覆盖范围以及从锁定文件初始化 Dune 的上下文——将在下个月继续进行。团队还开始更全面地跟踪 Dune backlog 中的缺失功能。您可以查看 GitHub 上的待办问题列表

活动

[opam] opam 2.2 中对 Windows 的原生支持

贡献者:@rjbou (OCamlPro), @kit-ty-kate (Tarides), @dra27 (Tarides), @AltGr (OCamlPro)

在上个月发布了 opam 2.2 的第二个 alpha 版本 之后,opam 团队开始着手第三个 alpha 版本,并合并了 许多错误修复和改进

他们还开始着手 为 Windows 生成静态二进制文件

下一步,为了迎接 opam 2.2 的第一个 beta 版本,需要使 opam-repository 与 Windows 兼容,方法是从 ocaml-opam/opam-repository-mingwdra27/opam-repository 上游这些补丁。

这项工作将在下个月继续进行,但在此期间,请随时 安装 opam 2.2~alpha2 并报告您遇到的任何问题!

[Dune] 使用 wasm_of_ocaml 编译为 WebAssembly

贡献者:@vouillon (Tarides), @hhugo

继最近的 ocaml-wasm 组织的公告 之后,wasm_of_ocaml 团队在 Dune 上落地了一个 PR,它支持将 OCaml 程序编译为 WebAssembly (Wasm)!

目标用户体验将类似于 Dune 上的 JavaScript 编译;也就是说,您可以在 Dune 可执行文件中添加 wasm 作为一种模式

(executable (name foo) (modes wasm))

运行 dune build 将生成一个 Wasm 二进制文件。

这个 PR 处于早期阶段,正在积极审核中,但鉴于 wasm_of_ocaml 团队在 运行时实现 上取得的令人印象深刻的进展,请继续关注未来几周和几个月内的更多更新。

活动

[Dune] dune monitor:连接到正在运行的 Dune 构建

贡献者:@Alizter

7月份,@Alizter 开始着手开发一个新的 dune monitor 命令,用于连接到正在运行的 Dune 构建。

这项工作在本月继续进行,其中对 Dune RPC 进行了大量改进,包括 失败作业的报告更好的错误消息

这个 PR 已合并,新命令将在即将发布的 Dune 3.11 中提供,预计于 9 月发布。

活动

[Dune] Dune 终端用户界面

贡献者:@Alizter, @rgrinberg (Tarides)

回到 4 月,Dune 引入了新的 tui 显示模式,由 @Alizter 贡献,旨在为 Dune 带来类似 GUI 的体验。

这场传奇在 8 月份继续,@Alizter 将 TUI 移植到 Nottui,这是一个基于终端的用户界面库,为 tui 模式添加了更多交互性。特别是,错误消息现在可以滚动,并且可以展开/最小化。

这些功能将在即将发布的 Dune 3.11 中提供。请尝试新的 TUI,并将您的反馈意见告知 Dune 团队!

活动:

生成文档

[odoc]odoc 添加搜索功能

贡献者:@panglesd (Tarides), @EmileTrotignon (Tarides), @julow (Tarides), @jonludlam (Tarides)

在修复了上个月发现的一些问题后,odoc 团队开始积极审查为 odoc 的 HTML 输出添加搜索栏 的 Pull Request。

在审查过程中,发现了一些相关问题,这些问题已被解决,作为向前推进搜索功能的先决条件。值得注意的是,需要改进 链接到源代码 的稳定性,方法是 实现语义锚点

下个月,odoc 团队计划继续审查不同的 Pull Requests,目标是在接下来的几周内发布支持搜索功能的主要版本。

活动

[odoc] odoc 中图像和资产的语法

贡献者:@panglesd (Tarides)

继七月开始的讨论之后,odoc 团队开始实施工作,以在 odoc 中添加对图像和资产的支持。

正在进行的工作是实现一个语法来引用任意资产,这是搜索功能和图像支持的必要条件。

我们越来越接近在 OCaml.org 的集中式软件包文档中拥有图像了!

编辑和重构代码

[Merlin] Merlin 中对项目范围引用的支持

贡献者:@voodoos (Tarides),@trefis (Tarides),@Ekdohibs (OcamlPro)

正如上个月宣布的那样,八月的重点是将必要的更改向上游到编译器。一个 编译器上的 PR 已被打开,目前正在积极审查中。Merlin 团队希望它能在下一个 OCaml 5.2 版本发布之前合并。

该团队还考虑将补丁移植到编译器的早期版本,并在 opam 上提供它们。这将允许人们尽早开始测试该功能,而无需等待 OCaml 5.2 的发布。

活动