平台新聞信:2024 年 6 月至 8 月

歡迎來到 OCaml 平台新聞信的第十二期!

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

重點

  • Dune 套件管理即將推出公開測試版:開發者預覽計畫擴展,已有 60 多個訪談註冊(目前已進行 16 個),淨推薦值 (NPS) 從 +9 飆升至 +28!公開測試版即將推出,包含自動依賴鎖定和開發工具管理等令人興奮的功能。觀看實際操作
  • Opam 2.2 已發布:原生 Windows 支援來了!使用 opam init 進行無縫設定,opam-repository 與 Windows 相容。OCaml 在 Windows 上現在成為現實。
  • Odoc 3.0 即將發布: 全域側邊欄和媒體支援等新功能已在 odoc 中準備就緒。正在進行與 Dune 和 OCaml.org 管道的整合 - 準備好測試新的文件體驗!查看 RFC
  • 專案範圍參考已上線:Merlin 5.1 和 OCaml LSP 1.18.0 為您的編輯器帶來強大的程式碼導覽功能。它建立在多年的編譯器工作基礎上,對於大型程式碼庫來說是一大變革。
  • 開始縮小 Merlin 和 OCaml LSP 之間的差距: 針對類型封閉、文件等的新 LSP 查詢。我們正努力在由 OCaml LSP 驅動的所有編輯器中實現一致且功能豐富的體驗。

版本

Dune 套件管理(W4

貢獻者:@rgrinberg (Jane Street)、@Leonidas (Tarides)、@gridbugs (Tarides)、@maiste (Tarides)、@ElectreAAS (Tarides)、@moyodiallo (Tarides)、@Alizter

概要: 將套件管理整合到 Dune 中,使其成為 OCaml 開發所需的唯一工具。這種統一消除了安裝時間(只需下載 Dune 的預先建置二進位檔),自動化外部工具管理(例如,用於 dune fmtdune ocamllsp),並透過快取顯著縮短建置時間(套件和編譯器在專案中只建置一次)。

摘要

繼我們在上一期新聞信中宣布 Dune 套件管理達到最低可行產品 (MVP) 階段後,我們在既定目標上取得了實質性進展。正如承諾的那樣,我們已將重點從原型設計轉移到使用者測試和完善開發人員體驗 (DX)。

開發人員預覽計畫(請參閱最新更新)已從早期階段大幅擴展。在 60 個註冊中,我們進行了約 16 個開發人員訪談,代表了 OCaml 社群中不同的橫截面。受訪者包括新手和經驗豐富的 OCaml 使用者。值得注意的是,約 40% 的參與者擁有超過 3 年的 OCaml 經驗,而 35% 是經驗不足 1 年的相對新手。大多數人來自 Linux 和 macOS 環境,參與者代表各種部門,包括科技公司、研究機構和獨立開發人員。

這些會議提供了重要的回饋意見並推動了改進。這項廣泛的使用者測試已見成效,淨推薦值從 +9 跳升至估計的 +28,這清楚地表明社群對我們所做的改進感到興奮。

自上次更新以來的重點發展包括

  • 啟用套件管理的 Dune 夜間二進位發行版,將在未來幾週內公開提供。
  • 我們開始研究自動處理開發人員工具 (ocamlformat、ocamllsp、odoc) – 使用者將能夠執行 dune fmtdune ocamllsp,如果它們不可用,Dune 將自動負責安裝 OCamlFormat 和 OCaml LSP。
  • 實作專案依賴項變更時的自動依賴項鎖定 – 您現在可以在監看模式下執行 Dune,並讓它在更新您的 dune-project 後安裝您的依賴項,無需任何干預
  • 我們已預設啟用 Dune 快取,它適用於您的套件依賴項。有了這個變更,在建置新專案(包括編譯器)時,Dune 不會多次重新編譯依賴項!

團隊不僅僅使用 OCaml.org 和 Bonsai 進行測試,現在還在整個 opam 儲存庫中進行更廣泛的相容性測試。初步結果顯示,大約 50% 的套件可以使用具有套件管理的 Dune 來撰寫,並且正在努力提高覆蓋率(我們預計解決少數幾個基礎套件上的問題將顯著提高此百分比)。

為了履行準備首次發佈的承諾,該團隊計劃在未來幾週內推出公開測試版。這標誌著從我們目前與選定的測試人員進行的私人開發人員預覽測試,到更廣泛的社群發佈的重要一步。

請繼續關注即將發佈的公告,同時,請查看演示和來自測試人員的一些熱情訊息

活動

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

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

概要: 發布具有原生 Windows 支援的 opam 2.2,以增強 OCaml 在 Windows 上的可行性,使官方的 opam-repository 可在 Windows 上使用,並鼓勵更多 Windows 友好的套件。

摘要

在 7 月初在 Discuss 上宣布的 opam 2.2.0 發布,標誌著 OCaml 生態系統的一個重要里程碑。此版本在 Windows 上為 opam-repository 中的 opam 用戶端和編譯器套件帶來了原生支援,為此平台上的 OCaml 開發開闢了新的可能性。

opam 2.2.0 正式支援 Cygwin,並與 MSYS2 相容。Windows 使用者現在可以在他們喜歡的控制台中執行 opam init 以進行引導式設定,從而獲得功能齊全的 OCaml 環境。此版本代表了社群廣泛貢獻的多年努力的結晶。

OCaml 生態系統已經在適應這種新功能。一個針對 Windows 編譯的 CI 檢查已新增至 opam-repository,並且GitHub Action ocaml/setup-ocaml 現在使用 opam 2.2.0,方便在 GitHub 專案中進行 Windows 上的 OCaml 開發。

社群成員正積極努力改進整個生態系統的 Windows 相容性。值得注意的努力包括 Hugo Heuzard 的關於 OCamlBuild 和其他幾個與 Windows 相關的 PR 的工作。

我們鼓勵套件作者為其專案設定 Windows CI 並解決與 Windows 相關的問題。這種集體努力對於擴大 OCaml 在 Windows 平台上的覆蓋範圍和可用性至關重要。

活動

使用 Odoc 3.0 升級 OCaml 套件文件 (W25)

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

概要:使用 odoc 3 升級 OCaml 套件文件體驗,具有改進的導航、跨套件參照、媒體支援等功能。此升級旨在改進本地和 OCaml.org 上的文件體驗,鼓勵更高品質的套件文件。

摘要

在完成 odoc 3.0 的 RFC 並經過社群審查後,我們在新設計和功能實施方面取得了重大進展。在過去的幾個月裡,我們的進展使我們接近 odoc 3.0 功能集的完整實施。隨著我們完成開發並接近首次發佈,我們的重點正在轉向與生態系統的其他部分整合。

過去幾個月的主要進展包括

  • odoc CLI 新增選項以開始實施 odoc 3 CLI
  • 實施了新的語法,例如路徑參照
  • 開發了具有獨立頁面和套件模組層次的 TOC 的全域側邊欄

隨著我們接近核心 odoc 3.0 功能集的完成,我們的重點正在轉向完成與 Dune 和 OCaml.org 文件管道的整合。我們很高興能將所有這些改進交付給您,並獲得您對新文件體驗的回饋。請繼續關注有關測試機會和即將發佈的 odoc 3.0 的公告!

活動

OCaml 編輯器中的專案範圍參照 (W19)

貢獻者: @vds (Tarides)

概要:在 Merlin 和 OCaml LSP 中引入專案範圍參照功能,以增強程式碼導航和重構功能,使 OCaml 的編輯器體驗與其他現代程式設計語言保持一致。

摘要

如六月宣布的那樣,Merlin 專案範圍參照現在已在 Merlin 5.1 和 OCaml LSP 1.18.0 的預覽版中提供。使用支援 LSP 的編輯器(例如,使用 OCaml Platform 擴充功能的 VSCode)和傳統 Emacs 和 Vim 外掛程式的用戶現在可以查詢 OCaml 術語的專案範圍參照。這需要使用新的 Dune 別名 @ocaml-index 來建立索引。

此版本代表了 Merlin 團隊多年努力的成果,包括在編譯器上進行大量工作,以便為在 Merlin 中實施此功能提供必要資訊。

我們很高興能與社群分享此功能,並期待您的回饋。

雖然此功能在大多數情況下應該運作良好,但我們意識到一些限制。我們的下一步包括新增對介面檔案和模組路徑的支援。請繼續關注!

活動

縮小 Merlin 和 OCaml LSP 之間的差距 (W19)

貢獻者: @xvw (Tarides), @vds (Tarides)

概要:致力於在 Merlin 和 OCaml LSP 之間實現功能對等,以便在所有編輯器中提供一致、功能豐富的開發體驗,使 OCaml LSP 成為 OCaml 編輯器支援的全面後端。

摘要

在六月,我們開始致力於縮小 OCaml LSP 和 Merlin 之間的差距。我們首先在 OCaml LSP 中公開 Merlin 的類型封閉請求。該功能現在以 ocamllsp/typeEnclosing 提供,我們接下來將致力於編輯器整合。

提醒一下,Merlin 的 type-enclosing 功能允許使用者取得游標下識別碼的類型。它會反白顯示識別碼並顯示其類型。使用者可以攀爬類型化的樹狀結構,以顯示游標周圍較大表達式的類型。

自六月以來,我們致力於多個新的 LSP 查詢和程式碼動作,包括

  • 一個自訂的 ocamllsp/getDocumentation 查詢,以請求 odoc 文件
  • 一個自訂的 ocamllsp/construct 查詢,以瀏覽和填寫類型孔 (_)
  • 基於 Merlin 的 Jump 命令的語法和語義移動快捷方式的程式碼動作

活動