平台電子報:2023 年 8 月
歡迎來到 OCaml 平台電子報第五版!
深入了解八月份的最新更新,並探索 OCaml 平台的發展。就像我們之前的電子報一樣,我們將重點介紹 OCaml 開發工作流程的最新發展和增強功能。
八月份,我們在最近採用的指導原則和使用者角色之後,公開了 OCaml 平台路線圖的初始草案。該討論串引發了很多活動,我們很高興看到這麼多人參與討論 OCaml 開發人員工具的方向。非常感謝您積極參與對話並分享您的回饋!這促使與平台維護者進行了多次討論,當我們修改路線圖時,我們正在考慮您的所有回饋。
八月份的另一個頭條新聞是啟動將 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 後續工作中的缺失功能。您可以查看 GitHub 上的問題清單。
活動
- 巨集可以採用多個引數 ocaml/dune#8353
- 針對套件變數使用
%{pkg:...}
巨集 -- ocaml/dune#8372 - 開始從 opam 檔案複製命令 -- ocaml/dune#8336
- 測試
0install
解算器是否可以正確解析|
相依性 -- ocaml/dune#8363 - opam 命令中的變數內插 -- ocaml/dune#8391
- 精簡的 pkg 巨集 -- ocaml/dune#8399
- 將儲存庫的識別碼寫入中繼資料 -- ocaml/dune#8414
- 新增鎖定檔案中可用的
when
動作 -- ocaml/dune#8443 - 新增
run-with-conditional-terms
動作 -- ocaml/dune#8486 - 將 opam 命令篩選器轉換為 Dune blang -- ocaml/dune#8502
- 向上游傳送到 opam
OpamFilter
檔案替換,使用來源和目的地 -- ocaml/opam- 公開 string_interp_regex ocaml/opam#5633
[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 版本,下一步是透過向上游傳送 ocaml-opam/opam-repository-mingw 和 dra27/opam-repository 中的修補程式,使 opam-repository
與 Windows 相容。
這方面的工作將在下個月繼續進行,但同時,請隨時安裝 opam 2.2~alpha2 並報告您遇到的任何問題!
wasm_of_ocaml
編譯為 WebAssembly
[Dune] 使用 貢獻者:@vouillon (Tarides)、@hhugo
繼最近宣布 ocaml-wasm 組織後,wasm_of_ocaml
團隊在 Dune 上新增了一個PR,該 PR 支援將 OCaml 程式編譯為 WebAssembly (Wasm)!
目標使用者體驗將類似於 Dune 上的 JavaScript 編譯;也就是說,您將能夠將 wasm
新增為 Dune 可執行檔的模式
(executable (name foo) (modes wasm))
執行 dune build
將產生 Wasm 二進位檔。
PR 尚處於早期階段,並且正在積極審查中,但鑑於 wasm_of_ocaml
團隊在執行階段實作方面取得了令人矚目的進展,請持續關注未來幾週和幾個月的更多相關更新。
活動
wasm_of_ocaml
支援 -- ocaml/dune#8278
dune monitor
:連線到正在執行的 Dune 建置
[Dune] 貢獻者:@Alizter
7 月,@Alizter 開始處理新的 dune monitor
命令,以連線到正在執行的 Dune 建置。
這項工作在本月繼續進行,並且作為其中的一部分,Dune RPC 進行了許多改進,包括報告失敗的工作和更好的錯誤訊息。
PR 已合併,新命令將在即將於 9 月推出的 Dune 3.11 中提供。
活動
- Dune 監控 -- ocaml/dune#8152
[Dune] Dune 終端使用者介面
貢獻者:@Alizter、@rgrinberg (Tarides)
早在 4 月,Dune 推出了由 @Alizter 貢獻的新 tui
顯示模式,該模式旨在為 Dune 帶來類似 GUI 的體驗。
此進展在八月繼續,@Alizter 將 TUI 移植到 Nottui,這是一個基於終端的使用者介面程式庫,以便為 tui
模式新增更多互動性。特別是,錯誤訊息現在可以捲動,並且可以展開/最小化。
這些功能將在即將推出的 Dune 3.11 中提供。請試用新的 TUI,並讓 Dune 團隊知道您是否有任何回饋!
活動:
- 互動式 TUI -- ocaml/dune#8429
產生文件
odoc
[odoc] 將搜尋功能新增至 貢獻者:@panglesd (Tarides)、@EmileTrotignon (Tarides)、@julow (Tarides)、@jonludlam (Tarides)
在修正上個月發現的一些問題後,odoc
團隊開始積極審查 將搜尋列新增至 odoc
的 HTML 輸出的提取請求。
由於審查的結果,發現了一些相關問題,並且已將其作為在搜尋功能方面取得進展的先決條件加以解決。值得注意的是,連線到原始碼的穩定性需要透過實作語義錨點來改善。
下個月,odoc 團隊計劃繼續審查不同的提取請求,目標是在接下來的幾週內發布支援搜尋的 odoc 主要版本。
活動
- 支援
odoc
中的搜尋 -- ocaml/odoc#972 - 收集出現次數資訊 -- ocaml/odoc#976
- 連線到實作中的穩定錨點 -- ocaml/odoc#993
odoc
] odoc
中影像和資產的語法
[貢獻者:@panglesd (Tarides)
繼 7 月開始的討論之後,odoc
團隊開始實作工作,以在 odoc
中新增對影像和資產的支援。
目前正在進行實作參照任意資源的語法,這是搜尋功能和支援圖片的必要條件。
我們離在 OCaml.org 的中央套件文件中加入圖片越來越近了!
程式碼編輯與重構
[Merlin] Merlin 中對專案範圍參考的支援
貢獻者:@voodoos (Tarides), @trefis (Tarides), @Ekdohibs (OcamlPro)
如同上個月宣布的,八月份的重點是將必要的變更上游到編譯器。一個在編譯器上的 PR 已開啟,目前正在積極審查中。Merlin 團隊希望它能及時合併到 OCaml 5.2 的下一個版本中。
團隊也在考慮將修補程式回溯到編譯器的先前版本,並使其在 opam 上可用。這將允許人們提早開始測試此功能,而無需等待 OCaml 5.2 的發布。
活動
- 新增對專案範圍出現次數的支援 -- ocaml/ocaml#12508
- 使用 CMT 檔案中的新編譯資訊來建立和彙總索引 -- voodoos/ocaml-uideps#5
- Dune 編排索引生成 -- voodoos/dune#1
- 使用新的 CMT 資訊來為專案範圍的出現次數提供緩衝區出現次數和索引 -- voodoos/merlin#7
- 在
ocaml-lsp
中支援專案範圍的出現次數 -- voodoos/ocaml-lsp#1