平台新聞稿:2024 年 3 月至 5 月

歡迎來到 OCaml 平台新聞稿第十一期!

在 2024 年 3 月至 5 月的這一期中,我們很高興為您帶來 OCaml 平台的最新消息,延續我們在先前版本中強調近期發展的傳統。若要了解我們的前進方向,特別是關於開發工作流程和使用者體驗的改進,請查看我們的路線圖

重點

  • 關於 Dune 套件管理的探索已達到最小可行產品 (MVP) 階段:一個可以建置像 OCaml.orgBonsai 等非簡單專案的 Dune 版本。有了可用的 MVP,團隊正將重心轉移到將 Dune 套件管理交到社群手中。為此,我們已啟動 Dune 開發者預覽計畫,我們將在此計畫中與使用者一起測試 Dune 套件管理,並在最終發布前完善使用者體驗。
  • opam 團隊發布了 opam 2.2 的第二個 beta 版本,並隨之開啟了 最終 PR,將 Windows OCaml 的支援新增至 opam-repository。一旦 PR 合併,opam 2.2 將可在 Windows 上與上游 opam-repository 搭配使用,為即將推出的第三個 beta 版本和後續的候選版本鋪路。
  • odoc 團隊已完成 Odoc 3.0 的初始設計,並開啟多個 RFC 以收集社群意見。我們實作了一個新的 Odoc 驅動程式,該驅動程式遵循 Odoc 3.0 的設計,並已開始原型化設計的關鍵部分。
  • Merlin 的專案範圍參考查詢即將發布。必要的 編譯器 PR 已合併並包含在 OCaml 5.2 中,而 Dune 規則 PR 已合併並包含在 Dune 3.16 中。接下來的步驟是合併 Merlin 本身中的 PR 和 OCaml LSP 中的小型修補程式。
  • ppx_deriving.std 一起提供的標準衍生器組(例如 [@@deriving show, make, ord, eq, ...])以及 ppx_deriving_yojson 現在直接針對 Ppxlib 的 API 撰寫。這會以兩種方式影響開發人員。首先,它可讓您在使用這些衍生器的專案中享受可靠的編輯器功能 (Ppxlib 會保留 Merlin 的位置不變性)。其次,您可以透過使用 Ppxlib 的 deriving_inline 功能來避免對這些衍生器的硬性相依性。非常感謝 @sim642 的所有工作和非常好的耐心、@NathanReb 的審閱和發布管理,以及所有其他參與者!

發布版本

[Dune] 探索 Dune 中的套件管理 (W4)

貢獻者: @rgrinberg (Tarides)、@Leonidas-from-XIV (Tarides)、@gridbugs (Tarides)、@Alizter

原因: 將 OCaml 工具統一在單一命令列下,以用於所有開發工作流程。這解決了社群回報的最重要痛點之一。

內容: 原型化將套件管理整合至 Dune 的工作,使用 opam 作為函式庫。我們將導入 dune pkg lock 命令以產生鎖定檔案,並增強 dune build 以處理鎖定檔案中的相依性。如需更多詳細資訊,請參閱 Dune RFC

摘要

在過去三個月中,在新增 Dune 對套件管理的支援方面取得了重大進展。我們很高興地報告,我們的原型已達到最小可行產品 (MVP) 階段:一個實驗性的 Dune 套件管理版本,可用於建置非簡單專案,包括 OCaml.org 和 Bonsai,我們正將這些專案用於測試中。

雖然還有很長的路要走,但隨著達到這個里程碑,我們現在正將重心從原型化轉移到將此功能交到社群手中。我們正準備與使用者一起測試新的 Dune 功能,特別是現在我們對技術阻礙及其解決方法有了很好的了解,我們將專注於驗證和完善 Dune 套件管理的開發人員體驗 (DX),以準備首次發布。

為此,Dune 團隊已啟動 Dune 開發者預覽計畫。我們目前正與選定的 beta 測試人員一起測試套件管理的開發者預覽版,一旦解決了最大的問題,我們將向更廣泛的社群開放。

活動

[opam] opam 2.2 中對 Windows 的原生支援 (W5)

貢獻者: @rjbou (OCamlPro)、@kit-ty-kate (Ahrefs)、@dra27 (Tarides)、@AltGr (OCamlPro)

原因: 藉由整合原生 opam 和 opam-repository 支援來增強 OCaml 在 Windows 上的可行性,培養更大的社群和更多 Windows 友善的套件。

內容: 發布具有原生 Windows 支援的 opam 2.2,使官方 opam-repository 可在 Windows 平台上使用。

摘要

opam 團隊正接近最終發布支援 Windows 的 opam 2.2。在過去幾個月中,我們發布了 opam 2.2 的第二個 beta 版本,解決了使用者在先前版本中回報的一些問題,包括 Windows 問題。

令人興奮的是,我們也開啟了 最終 PR,將 Windows OCaml 的支援新增至 opam-repository。一旦 PR 合併,opam 團隊預計將能在 6 月轉至候選發布版本。

敬請期待未來數週和數月內更多令人興奮的消息和發布版本!

活動

[odoc] Odoc 3.0:統一 OCaml.org 和本機套件文件 (W25)

貢獻者: @jonludlam (Tarides)、@julow (Tarides)、@panglesd (Tarides)、Luke Maurer (Jane Street)

原因:改進本機文件生成工作流程將有助於套件作者為其套件撰寫更好的文件,而整合不同的 odoc 文件產生器將有助於使 odoc 的持續改進適用於更廣泛的受眾。

內容:我們將建立驅動程式必須遵循的慣例,以確保其輸出是可用的。一旦建立,我們將更新 Dune 規則以遵循這些規則,存取新的 odoc 功能(例如,原始碼呈現),並提供與 docs.ocaml.org 類似的功能(例如,導覽側邊欄)。這將有效地使 Dune 可用於產生 OCaml.org 套件文件。

摘要

Odoc 團隊在即將推出的 Odoc 3.0 上取得了重大進展。我們在巴黎舉行了富有成效的親自會議,討論了 CLI、原始碼呈現和參考等關鍵設計方面。這些討論導致了各種設計規格組件的 RFC 發布。

我們還開始實作新的 Odoc 驅動程式,該驅動程式遵循新的設計以進行測試,並開始為一些新功能建立原型。

雖然關於 RFC 和特定功能的討論仍在進行中,但我們很高興能有一套紮實的設計規格供社群審閱,並開始實作新設計的關鍵部分。

活動

[Merlin] Merlin 中對專案範圍參考的支援 (W19)

貢獻者: @vds (Tarides)、@Ekdohibs (OCamlPro)、@Octachron (INRIA)、@gasche (INRIA)、@emillon (Tarides)、@rgrinberg (Jane Street)、@Julow (Tarides)

原因:透過提供專案範圍參考編輯器功能來增強開發人員的程式碼導覽和重構,使 OCaml 與其他語言的編輯器體驗保持一致。

內容:導入 ocamlmerlin server occurrences 和 LSP textDocument/references 支援,擴展編譯器的 Shapes 以取得全域出現次數,並將這些功能整合到 Dune、Merlin 和 OCaml LSP 中。

摘要

過去幾個月,在發布 Merlin 的專案範圍參考查詢方面取得了驚人的進展:編譯器 PR 已合併並包含在現在發布的 OCaml 5.2 中;Dune 規則 PR 已合併,並且在索引工具上取得了顯著的效能改進。Merlin 中的最終 PR 已開放並正在審查中。該 PR 以及支援該功能的小型 LSP 修補程式即將合併。

Merlin 上的 PR 還增加了 Emacs 的 Merlin 伺服器外掛程式中對該功能支援。已另外新增了 Vim 的 Merlin 伺服器外掛程式的支援。所有基於 LSP 的編輯器外掛程式都將自動支援此新功能。

活動

  • 我們跟進了編譯器 PR 以改善形狀別名弱化簡的效能。它已合併,並進入了 OCaml 5.2.0。– ocaml/ocaml#13001
  • 我們改進了驅動索引器的 Dune 規則:簡化了規則、新增了基準測試、討論並改善了效能。該 PR 已合併,並進入了 Dune 3.16。- ocaml/dune#10422
  • 我們完善了索引器 ocaml-index:分析了它並將其速度提高了約 2 倍,並改善了其 CLI。
  • 我們將 :MerlinOccurrencesProjectWide 命令新增到基於 Merlin 伺服器的 Vim 外掛程式中 - ocaml/merlin#1767