OCaml 多核心 - 2022 年 3 月
歡迎來到 2022 年 3 月的 多核心 OCaml 月度報告!此更新以及先前的更新皆由我 @ctk21、@kayceesrk 和 @shakthimaan 編譯。
我們持續穩步朝向發布穩定的 OCaml 5.0 版本邁進,您可以從稍後的長串修正清單中看到 -- 感謝您的所有貢獻!先前在 4.x 分支中支援的 OpenBSD、FreeBSD 和 NetBSD 平台設定現在已重新啟用。ARM64 支援(適用於 macOS、Linux 和 BSD)在主幹中已穩定,並且 ARM CFI 整合已合併作為後續步驟,以利除錯和效能分析。值得注意的是,這還包括適用於 ARMv8 和 Power 連接埠的記憶體模型測試。Windows mingw64 連接埠也在主幹中再次運作。
一份效果教學也已貢獻至 OCaml 手冊;即使合併後,仍歡迎提供回饋。當您實驗效果時,請繼續在此論壇上發布問題或關於您學習心得的評論。
Sandmark 基準測試專案已新增位元組碼分析,以解決任何效能衰退問題。我們也一直在努力取得編譯資料點的測量值。目前的基準測試管道生產部署有重大的 UI 變更,現在針對基準測試執行提供警示通知。
一如既往,首先列出多核心 OCaml 的開放和已完成任務,然後是生態系統工具專案。最後提供 Sandmark、sandmark-nightly 和 current-bench 專案更新供您參考。
多核心 OCaml
開放
討論
-
ocaml/ocaml#10960 稽核
stdlib
的可變狀態此問題正在積極追蹤 Stdlib 模組的可變狀態,因為 OCaml 5.0.0 實作應該同時具備記憶體和執行緒安全。
-
ocaml/ocaml#11013 OCaml 5.0 發布目標的元問題
包含 OCaml 5.0 分支清單的問題追蹤器。
-
ocaml/ocaml#11074 OCaml 5.0 & 未處理的例外
關於 OCaml 5.0 中應如何處理未處理的例外情況的問題和討論。
錯誤
-
ocaml/ocaml#10868 修正初始化框架雜湊表時的差一錯誤
修正初始化框架雜湊表時差一錯誤的
runtime/frame_descriptors.c
PR 已準備好合併。 -
ocaml/ocaml#11040
ThreadSanitizer
問題包含來自
tests/parallel
執行之ThreadSanitizer
執行清單以進行疑難排解競爭狀況的問題追蹤器。 -
ocaml/ocaml#11144 還原 amd64 的框架指標支援
正在進行中,以重新引入 AMD64 架構失去的框架指標支援,因為該支援在多核心合併中部分遺失。
建置
-
ocaml/ocaml#10315 [建置] 支援在 Dune 建置中組合編譯器
要求使用 Dune 建置系統來建置 OCaml 編譯器。這對於多核心 OCaml 生態系統開發也很有用。
-
ocaml/ocaml#10505 [RFC] libunix 需要 1003.1-2008
更新建置以符合 The Open Group Base Specification Issue 6 和 7、IEEE Std 1003.1-2008 的草稿 PR。
-
ocaml/ocaml#11096 在 FreeBSD/aarch64 上啟用原生程式碼
已更新
configure.ac
以在 FreeBSD/aarch64 上原生建置。 -
ocaml/ocaml#11097 修正 NetBSD 的支援並在 NetBSD/aarch64 上啟用原生程式碼
已啟用 NetBSD/aarch64 上的原生建置支援。
-
ocaml/ocaml#11143 在 GitHub Actions 中測試 32 位元建置
已在
.github/workflows/build.yml
中新增i386
項目,以使用 GitHub Actions 測試 32 位元建置。 -
ocaml/ocaml#11149 使引導程序可重複
此 PR 可讓
make bootstrap
步驟在boot/ocamlc
和boot/ocamllex
中產生完全相同的映像,而無論作業系統和架構為何。
增強
-
ocaml/ocaml#11057 在多核心中實作非同步動作的品質處理
正在進行中,重新實作
caml_process_pending
行為,並為多核心執行階段中的非同步動作提供程式碼改進。 -
ocaml/ocaml#11095 在多核心中實作非同步動作的品質處理 (1/N)
作為對 在多核心中實作非同步動作的品質處理 PR 的後續行動的第一組提交。
-
ocaml/ocaml#11110 更多 ThreadSanitizer 原子和忽略清單
已將忽略清單新增至 ThreadSanitizer,以處理
Field
和Tag_val
競爭狀況。已新增CAMLno_tsan
以及針對特定函式沒有競爭狀況的理由,以及寬鬆的原子。 -
ocaml/ocaml#11137 引入
Store_tag_val(dst, val)
並在執行階段中使用執行階段程式碼不依賴
Tag_val
作為左值,因此在runtime/alloc.c
中引入Store_tag_val(dst,val)
。 -
ocaml/ocaml#11138 新增 C 函式
caml_thread_has_lock
任何 C 執行緒現在都可以呼叫函式
caml_thread_has_lock
,如果該執行緒屬於網域並且也持有相同網域的鎖定,則會傳回 true。 -
ocaml/ocaml#11142
Gc.set
現在會變更所有網域的次要堆積大小調整
Gc.set
語義以設定所有網域的次要堆積大小的草稿 PR。 -
ocaml/ocaml#11154 新增
Domain.get_name
要求在
Domain
模組中加入get_name
的功能請求,因為 API 已經包含set_name
。 -
ocaml/ocaml#11156 用於變更次要堆積大小的 5.00 後 API
針對變更 5.00 後 API 的所有網域的次要堆積大小的建議。
文件
-
ocaml/ocaml#10992 OCaml 多核心記憶體模型和 C(執行階段、FFI、VM)
關於 OCaml 多核心記憶體模型以及
Field
巨集使用的文件正在積極修訂和更新。 -
ocaml/ocaml#11058
runtime/HACKING.adoc
:關於偵錯執行階段的提示包含執行階段系統資訊的
HACKING.adoc
文件,以及說明疑難排解的runtime/HACKING.adoc
檔案已準備好合併。 -
ocaml/ocaml#11093 效果手冊
此 PR 將效果處理常式教學新增至手冊。呈現的網頁位於 https://kcsrk.info/webman/manual/effects.html。
測試
-
ocaml/ocaml#10980 GitHub Actions / ocamltest / testsuite / OCaml 5
包含與 ocamltest 和 OCaml 5 相關的動作項目清單的問題追蹤器。
-
ocaml/ocaml#11065 還原位元組碼偵錯器的基本功能
處理堆疊回溯的 PR 現在可以運作,並且將建立一個單獨的 PR 來處理
next
指令。 -
ocaml/ocaml#11121
weaklifetime_par.ml
在 Raspberry Pi 4 上遭 OS 的 OOM 清理器終止關於具有 2GB 記憶體的 Raspberry Pi 4 上的 ARM64 後端的測試套件失敗報告。
效能
-
ocaml/ocaml#10964 基於環形緩衝區的執行階段追蹤 (
eventring
)專為持續監控 OCaml 應用程式而設計的 Eventring 執行階段追蹤系統正在積極審查中。
-
ocaml/ocaml#11090 程式名稱可用性問題
多核心執行階段的可用性衰退問題,其中
top
將 OCaml 程式報告為Domain0
。 -
ocaml/ocaml#11125 用於次要堆積保留/配置的執行階段事件
針對次要堆積保留和配置函式,應該發出記錄已配置大小和臨界區的執行階段事件。
已關閉
增強
-
ocaml/ocaml#10802 在 C 程式碼中使用 4.12 值巨集
for 迴圈樣式用於清單走訪,而
Val_int(0)
現在表示值為 0 的整數。 -
ocaml/ocaml#10958 僅在來源變更時重建
flexlink.exe
已更新 Makefile,使其僅在來源已修改時建置
flexdll/flexlink.exe
。 -
ocaml/ocaml#10971 限制執行階段保留多少記憶體的方式,以便可以使用 Valgrind 和 AFL
現在可以從
OCAMLRUNPARAM
設定max_domains
值,以限制記憶體使用量,並在實作的可用性和複雜性之間取得良好的平衡。 -
ocaml/ocaml#10991 使用
zstd
上傳和下載 CI 成品透過使用
zstd
壓縮,改善了 CI 成品的上傳和下載時間。 -
ocaml/ocaml#11078 放寬偵錯執行階段中的
caml_initialize
判斷提示已放寬
caml_initialize
中的判斷提示檢查,以免妨礙偵錯執行階段的輸送量。 -
ocaml/ocaml#11082 僅針對次要堆積保留
caml_minor_heap_max_wsz
*Max_domains
初始次要堆積大小保留為
s * Max_domains
,網域可以使用Gc.set
將其次要堆積大小增加超出保留量。保留大小始終為caml_minor_heap_max_wsz
*Max_domains
。 -
ocaml/ocaml#11123 Gc 統計資訊:主要收集計數
已移除
Caml_state->stat_major_collections
的使用,並使用caml_major_cycles_completed
全域值來報告統計資訊,如文件中所述。 -
ocaml/ocaml#11158 在
ocaml/ocamlnat
中提取讀取OCAMLTOP_INCLUDE_PATH
的程式碼ocaml
和ocamlnat
中用於解析OCAMLTOP_INCLUDE_PATH
的相同程式碼已重構。
修正
-
ocaml/ocaml#11037 重啟 Jenkins CI 時發現的各種修正
此 PR 包含多項修正,例如更新 Jenkins CI 的 "main" 腳本以更好地處理僅位元組碼的建置、更新測試套件、組態調整和對執行時系統的變更。
-
ocaml/ocaml#11054 尊重使用者提供的最大堆疊空間值,並修正
tmp/stack_space.ml
測試的除錯執行此 PR 會將
OCAMLRUNPARAM=1
用於初始堆疊大小,並確保tmc/stack_space.ml
在執行階段套用堆疊限制。 -
ocaml/ocaml#11061
dumpobj
工具崩潰已將針對位元組碼程式在
tools/dumpobj
中發生的區段錯誤的修正合併至 PR#11077。 -
ocaml/ocaml#11076 調整位元組碼的堆疊參數,以避免產生過多對
caml_ensure_stack_capacity
的呼叫堆疊「安全邊界」已減少至 6,而堆疊閾值已增加至 32。大多數位元組碼函式使用不超過 32 - 6 個堆疊槽,這為位元組碼回歸提供了一個快速修正。
-
ocaml/ocaml#11077 修正因裸指標比較導致的
dumpobj
崩潰在
dumpobj
中使用(=)
而不是(==)
,修正了支援裸指標的通用比較函式中的崩潰問題。 -
ocaml/ocaml#11094 Domainslib 產生區段錯誤
針對纖程管理中區段錯誤的修補程式,修正了在 Sandmark 中對平行程式使用 domainslib 時引起的區段錯誤。
-
ocaml/ocaml#11105 修正纖程管理中的區段錯誤 (問題 #11094)
現在維護的是列表陣列的整數索引,而不是纖程管理中快取的指標。這修正了在 Sandmark 中建置具有 domainslib 的平行基準測試時回報的區段錯誤。
-
ocaml/ocaml#11141 修正 32 位元建置
已更新
runtime/gc_ctrl.c
,以使用ARCH_INTNAT_PRINTF_FORMAT
進行 32 位元建置。
測試
-
ocaml/ocaml#10953
ocamltest/summarize.awk
未正確回報測試套件執行中的中止失敗 -
ocaml/ocaml#11084 在使用除錯執行時,停用
lib-dynlink-private
測試案例中的test_cow_repeated
已更新
testsuite/tests/lib-dynlink-private/test.ml
,以在使用除錯執行時停用test_cow_repeated
。 -
ocaml/ocaml#11004 記憶體模型測試
已合併
testsuite
中包含記憶體模型測試的新子目錄。這些對於 ARMv8 和 Power 連接埠非常有用。 -
ocaml/ocaml#11088
summarize.awk
:當 ocamltest 結果無法理解時應失敗已修正
summarize.awk
中處理來自 ocamltest 執行的意外結果的問題。 -
ocaml/ocaml#11099 ARM64 CFI 支援
現在 ARM64 上 CFI 命令的 unwinding 可以運作,而且
tests/unwind
在 MacOS x86_64 和 ARM64 上都能通過。 -
ocaml/ocaml#11124 修正
weaklifetime_par.ml
一系列修正旨在修正導致測試套件失敗或 Raspberry Pi 4 失敗的
weaklifetime_par.ml
實作。
Windows
-
ocaml/ocaml#10884 修正 Windows 上從 Dynlink 載入的程式碼進行閉包序列化
已停止在 natdynlink 中註冊空的程式碼片段,如果金鑰是重複的,則
caml_skiplist_insert
會更新資料指標。 -
ocaml/ocaml#10908 修正 Windows 上
caml_mem_map
中可能發生的競爭情況已修正修剪記憶體區塊時發生的競爭情況,並清除了
platform.c
中並行次要收集器的 printf 除錯。 -
ocaml/ocaml#11115 修正 Windows 上系統執行緒的效能回歸
刻度執行緒會在 Windows 版本的
select
上呼叫caml_thread_yield
,這導致了效能回歸。改為使用Sleep
函式,效能差異明顯,如下所示Test before/s run1/s run2/s lib-threads/sieve 5.36 3.18 2.47 parallel/fib_threads 137.52 62.29 63.95 parallel/multicore_systhreads 20.2 11.88 11.08
-
ocaml/ocaml#11116 修正 Windows 上的
tool-dumpobj
測試透過更新
tool-dumpobj/test.run
,修正了 Inria CI 上執行的 mingw-64。
文件
-
ocaml/ocaml#11008 記錄並重構 gc-stats 程式碼
已重構並記錄
runtime/caml/gc_stats.h
和runtime/gc_stat.c
程式碼。 -
ocaml/ocaml#11072 domain.c:記錄 STW 同步程式碼
已在
domain.c
中記錄 STW 同步程式碼。 -
ocaml/ocaml#11073 程式碼理解:為什麼 STW 區段不會一直保留
all_domains_lock
?已在 PR#11072 的
domain.c
中記錄 STW 同步程式碼。 -
ocaml/ocaml#11120 遺失警告 69、70、71 和 72 的手冊條目
手冊條目列在
man ocamlc
的輸出中,而且已新增 69、70、71 和 72 的警告。 -
ocaml/ocaml#11122 修正 Stdlib 文件註解中的錯字
已修正
stdlib/stdlib.mli
中的錯字。
雜項
-
ocaml/ocaml#11092 在
aarch64-*-openbsd*
上啟用原生程式碼OCaml 在
OpenBSD/aarch64
上建置良好。 -
ocaml/ocaml#11112 加強
-use-runtime
以防止路徑中有空格此 PR 確保
-use-runtime
指定的路徑中的空格能如預期般運作。 -
ocaml/ocaml#11047 GC 統計:正確孤立配置統計
已在此 PR 中實作配置統計的孤立程序,其中「孤立統計」儲存在
gc_stats.c
中的全域structure alloc_stats
變數中。在網域終止時,目前網域的統計會新增至「孤立統計」。 -
ocaml/ocaml#10925 將
Caml_state
的符號重新命名為caml_state
已將
Caml_state
巨集重新命名為caml_state
,以避免名稱衝突。 -
ocaml/ocaml#10989 直接從 git 下載 GNU parallel
已更新
tools/ci/appveyor/appveyor_build.sh
,以使用 Git 下載 GNU parallel。
生態系統
Eio
開啟
-
ocaml-multicore/eio#206 API 要求:
readdir
由於
Eio.Dir.t
已存在,因此新的 API 要求列出目錄的內容。 -
ocaml-multicore/eio#207 新增 readdir 功能
一個提供 Eio 的
readdir
功能實作的草稿 PR,也用於討論其 API。 -
ocaml-multicore/eio#208 更新 README 以使用 OCaml 5.0
更新 README 以使用 OCaml 5.0 的建議。
已完成
-
已將來源升級為依賴
uring.0.3
,並且已更新CHANGES.md
以進行發行。
domainslib
開啟
-
ocaml-multicore/domainslib#68 domainslib 的範圍
一個功能要求,希望在 domainslib 中有
mpsc queues
、concurrent hashmap
和更多並行建置區塊。 -
ocaml-multicore/domainslib#69 使
Chan.t
和Task.promise
成為單射具有類型建構子的單射註釋可用於 GADT 的索引,特別是
Effect.t
。
已完成
-
ocaml-multicore/domainslib#65 修正主幹上的建置
已更新
Effect.eff -> Effect.t
變更以進行主幹建置,並且 CI 為5.0.0+trunk
建置。 -
ocaml-multicore/domainslib#66
Domainslib.0.4.1
使用OCaml 5.0.0+trunk
的建置失敗已更新較新版本的
domainslib.0.4.2
以使用 OCaml 5.0.0+trunk 進行建置。 -
ocaml-multicore/domainslib#67 修正空迴圈上的
Task.parallel_for_reduce
現在在
lib/task.ml
中,Task.parallel_for_reduce
可以正確處理空迴圈的邊緣情況。
雜項
開啟
-
ocaml-multicore/effects-examples#27 新增用於測試的 GitHub 工作流程
已新增用於 CI 測試的
.github/workflows/ci.yml
。 -
ocaml-multicore/ocaml-uring#55 FD 傳遞
sendmsg
在 WSL2 上失敗當 FD 傳遞
sendmsg
範例失敗時,最新的 WSL 核心會傳回EINVAL
。
已關閉
-
ocaml-multicore/kcas#12 清理相依性
已從
kcas.opam
中移除相依性,除了 dune 之外。已更新 Makefile,並移除舊的 ocamlbuild .mllib 檔案。 -
ocaml-multicore/retro-httpaf-bench#19 cohttp-eio:新增以 cohttp-eio 為基礎的基準測試
已新增
cohttp_eio
基準測試,並更新了基準測試腳本。 -
ocaml-multicore/retro-httpaf-bench#23 更新至 Eio 0.2
已更新
retro-httpaf-bench
Dockerfile 以使用 Eio 0.2。 -
ocaml-multicore/effects-examples#26 連接埠至 OCaml 5.00
現在已將
effects-examples
連接埠化,以在 OCaml 5.0.0+trunk 上執行,而無需專用的效果語法。
基準測試
Sandmark
開啟
基準測試
-
ocaml-bench/sandmark#119 其他基準測試 - hamming 和 soli
已將
hamming.ml
和soli.ml
基準測試的草稿版本新增至 Sandmark。 -
ocaml-bench/sandmark#299 Irmin 3 基準測試
更新 Sandmark Irmin 基準測試的請求,該基準測試會重播 Tezos 的存取模式。
-
ocaml-bench/sandmark#319 新增兩個序列基準測試,分別為:hamming 和 soli
此 PR 將 Hamming 和 Soli 序列基準測試新增至 Sandmark。
CI
-
ocaml-bench/sandmark#275 從 drone CI 移至 GitHub 動作
需要移轉 .drone.yml 的 CI 作業,以使用 GitHub Actions 工作流程執行。
-
ocaml-bench/sandmark#316 main.yml
已新增新的
.github/workflows/main.yml
GitHub Actions 檔案,以在 CI 中執行。
相依性
-
ocaml-bench/sandmark#18
js_of_ocaml
無法在多核心上執行已建立在 Sandmark 中為 Multicore OCaml 建置
js_of_ocaml
的草稿 PR。 -
ocaml-bench/sandmark#262 ocaml-migrate-parsetree.2.2.0+stock 無法使用 ocaml.5.00.0+trunk 編譯
透過 ppxlib.0.25.0~5.00preview,主幹不再需要
ocaml-migrate-parsetree
。 -
ocaml-bench/sandmark#310 移除
js_of_ocaml
一個使用
5.0.0+trunk
建置js_of_caml-compiler
的進行中工作,因為frama-c
與 ocaml/ocaml 不相容。
雜項
-
ocaml-bench/sandmark#272 如果機器處於活動狀態,則延遲基準測試執行
在執行基準測試之前,需要驗證負載平均值檢查是否達到 0.6 的閾值。
-
ocaml-bench/sandmark#302 針對
*run_config.json
檔案的重新命名建議目前的
*run_config.json
檔案需要重新命名如下run_config.json
->sequential.json
multicore_parallel_run_config.json
->parallel_turing.json
multicore_parallel_navajo_run_config.json
->parallel_navajo.json
micro_multicore.json
->micro.json
-
ocaml-bench/sandmark#309 Outreachy 申請者:設定與操作說明
Sandmark 正在參與 Outreachy 計畫,並且已提供開始進行該專案的必要設定與操作說明。
-
ocaml-bench/sandmark#315 重新命名 Json 檔案
一個 PR 用於重新命名目前的
*run_config.json
檔案,使其更能反映其預期用途。 -
ocaml-bench/sandmark#317 新增
loadavg
的檢查一個進行中的 PR 用於新增
loadavg
檢查,以確保伺服器在實際執行基準測試之前不會過於繁忙。
已關閉
位元組碼
-
ocaml-bench/sandmark#282 分析位元組碼效能
現在
run_config_byte.json
檔案允許您執行 Sandmark 基準測試的位元組碼版本。 -
ocaml-bench/sandmark#298 支援以位元組模式建置並執行基準測試
已新增
run_config_byte.json
檔案以位元組模式建置並執行基準測試。您可以使用以下方式進行測試$ USE_SYS_DUNE_HACK=1 SANDMARK_CUSTOM_NAME=5.00.0 BUILD_BENCH_TARGET=bytebench \ RUN_CONFIG_JSON=run_config_byte.json make ocaml-versions/5.00.0+trunk.bench
筆記本
-
ocaml-bench/sandmark#279 將 notebooks/ 更新至 5.00.0+trunk
notebooks/ 資料夾中的 Jupyter 筆記本已更新為使用 5.0.0+trunk。
-
ocaml-bench/sandmark#301 將 sandmark nightly UI 移植到 sandmark 筆記本
Sandmark-nightly UI 的變更已移植到 Sandmark notebooks/,並且可與
5.0.0+trunk
OCaml 變體搭配使用。 -
ocaml-bench/sandmark#305 重新啟用已停用的基準測試
已在 Jupyter 筆記本中啟用先前停用
alt-ergo
、frama-c
和js_of_ocaml
基準測試的篩選檢查。
增強功能
-
ocaml-bench/sandmark#274 自訂變體支援
指定開發人員分支、設定選項、執行階段參數、OCaml 變體的名稱、相依套件覆寫、套件移除清單以及 Sandmark 夜間執行應持續到期的期限的功能請求已合併到 Sandmark 中。
-
ocaml-bench/sandmark#286 更新
check_url
並驗證 custom.json 檔案中的 URLMakefile 中的
check_url
目標會檢查custom.json
檔案中每個條目是否存在 URL,以及該 URL 是否包含可下載的檔案。 -
ocaml-bench/sandmark#297 為自訂支援變體新增動態套件覆寫和移除
自訂支援變體功能現在支援動態覆寫和移除相依套件。
-
ocaml-bench/sandmark#306 更新
check_url
並新增check_jq
已在 Makefile 中新增
check_jq
功能,以驗證 config.json 檔案是否可由 jq 解析。check_url
現在會驗證提供的 URL 是否可使用 wget 下載。 -
ocaml-bench/sandmark#307 每次建置都使用全新的 sandmark 複本
現在每次執行 sandmark-nightly 之前都會使用全新的 Sandmark 複本,而不是依賴
make clean
。
雜項
-
ocaml-bench/sandmark#300 使用 5.0.0+trunk 名稱和版本
Sandmark OCaml 變體已更新為使用
5.0.0+trunk
名稱和版本號。 -
ocaml-bench/sandmark#304 並行基準測試在
trunk
和domainslib.0.4.2
下被SEGV
中止光纖管理中的 PR#11105 修復了在 trunk 和
domainslib.0.4.2
下並行基準測試中導致的分段錯誤。 -
ocaml-bench/sandmark#308 將夜間腳本移至 Sandmark
來自
sandmark-nightly
的夜間 cron 執行腳本已移至sandmark
。 -
ocaml-bench/sandmark#312 移除 failure:ignore
由於
5.0.0+trunk
建置現在穩定,因此已從.drone.yml
CI 中移除failure:ignore
選項。
Sandmark-nightly
已關閉
-
ocaml-bench/sandmark-nightly#5 已停用基準測試的狀態
Sandmark 中的 Jupyter 筆記本已移植來自 sandmark-nightly 的變更,並且已啟用基準測試。
-
ocaml-bench/sandmark-nightly#41 在 UI 中顯示 Sandmark 分支和版本
UI 現在會在建置和執行基準測試時顯示 Sandmark 分支和版本號。
-
ocaml-bench/sandmark-nightly#48 編號清單在首頁中未對齊
已在首頁中修正清單縮排。
-
ocaml-bench/sandmark-nightly#49 將 Sandmark 資訊新增至 sandmark-nightly
在 sandmark-nightly 執行中使用的 Sandmark 的提交版本和分支會顯示在 UI 中。
-
ocaml-bench/sandmark-nightly#52 調整 UI 大小以顯示完整的 OCaml 變體名稱
已加大 OCaml 變體名稱的寬度,以在 UI 中顯示完整名稱。
-
ocaml-bench/sandmark-nightly#53 以表格顯示基準測試以讀取工具提示
選定的基準測試會以表格顯示,並且已新增工具提示支援。
-
ocaml-bench/sandmark-nightly#54 隱藏檢測執行階段頁面
目前未使用檢測執行階段,因此已從使用者隱藏相關頁面。
current-bench
開啟
-
ocurrent/current-bench#306 進行中的 ocaml 編譯器基準測試
一個進行中的高階問題追蹤器,用於使用 current-bench 專案建置
ocaml/ocaml
編譯器基準測試和必要的工具。 -
ocurrent/current-bench#318 Cobench 使用者函式庫
一個請求,要求提供一個函式庫,以便使用 current-bench 專案簡化建立和使用基準測試的流程。
-
ocurrent/current-bench#329 在
BenchmarkData.res
中針對度量資料使用標準記錄,而不是Js.object
一個重構任務,用於度量資料,使其使用標準記錄,而不是
Js.object
。 -
ocurrent/current-bench#330 回顧過去
一個 UI 變更清單,以更好地檢視 dune 團隊的過去基準測試結果。
-
ocurrent/current-bench#332 考慮使用時間作為 x 軸
一個願望清單條目,用於將圖表視覺化,並在 x 軸上顯示時間。
-
ocurrent/current-bench#333 Docker 建置引數
在 OCluster 管線中使用 Docker 的
--build-args
對於使用 Sandmark nightly 執行自訂 Dockerfile 是必需的。 -
ocurrent/current-bench#344 在不同度量圖表中以相同顏色顯示相同子度量
一個 UI 增強功能,用於在所有圖表中針對子度量顯示相同顏色。
已關閉
修正
-
ocurrent/current-bench#326 前端:修正對所有度量使用相同 x 軸的錯誤
現在 UI 中會正確顯示 x 軸中所有提交和每個度量的相關中繼資料。
-
ocurrent/current-bench#334 修復 CI
pipeline/libl/current_bench_json.ml
中的一個小修正,以正確比對並解析基準測試名稱。 -
ocurrent/current-bench#337 修正遺失值的程式碼前端崩潰
當將覆蓋的度量新增至分支時,針對
Js.Obj.assign
和前端的幾個修正。 -
ocurrent/current-bench#340 遺失度量指標修正
已修正
BenchmarkTest.res
和LineGraph.res
以處理遺失的度量指標。 -
ocurrent/current-bench#341 前端:修正在填入遺失的提交時的損壞行號
frontend/src/AppHelpers.res
中的一個修復,用於處理在填入遺失的提交時的損壞行號。 -
ocurrent/current-bench#343 修復在隱藏某些線條時顏色變更並變更調色盤
調色盤的一個美觀 UI 變更,以及修正隱藏線條時的顏色變更。
-
ocurrent/current-bench#345 在計算行號時正確處理歸位字元
一種在 UI 中顯示行號時,在瀏覽器中正確處理
\r
、\r\n
和\n
的方法。
前端
-
ocurrent/current-bench#323 允許按一下圖例以顯示/隱藏繪圖線條並使用更多欄
當在 UI 中按一下顯示/隱藏繪圖時,圖例現在會使用更多欄。
-
ocurrent/current-bench#324 已停用的工作者 / Docker 映像
前端會自動選取第一個「環境」(工作者 + Docker 映像),且系統可能包含已停用的環境。環境清單現在會篩選並僅顯示使用中的項目。
-
ocurrent/current-bench#331 在工作者下拉式選單中僅顯示具有有效執行項目的工作者
現在下拉式選單中只會顯示特定
repo_id
和pull_number
的工作人員。 -
ocurrent/current-bench#339 前端:過濾掉小於最大值 0.5% 的值
現在會過濾掉小於最大值 0.5% 的值,以避免
Array.getExn
導致前端崩潰。 -
ocurrent/current-bench#342 前端:隱藏表格比較列
NA/NA
當圖表中沒有分支可供比較時,前端會使用
NA/NA
。
雜項
-
ocurrent/current-bench#327 Slack
現在可以將基準測試執行的除錯日誌發送到 Slack 以進行警報通知。
-
ocurrent/current-bench#328 新增 Cobench 客戶端函式庫,用於透過 HTTP API 推送結果
Irmin 基準測試的每月結果需要上傳到 current-bench,因此建立了一個 Cobench 客戶端函式庫以與 HTTP API 搭配使用。
-
ocurrent/current-bench#336 Docker 建置參數
現在
environment/*.conf
檔案支援可選的build_args
設定,可用於將環境變數傳遞給make bench
。這對於 sandmark-nightly 以及類似 cron 的快速和慢速基準測試排程很有用。{ "repositories": [ { "name": "local/local", "worker": "autumn", "build_args": ["FOO=42"] },
-
ocurrent/current-bench#338 使用最新的 OCurrent 來顯示日誌行號連結
已更新
ocurrent-bench.opam
和pipeline/pipeline.opam
檔案以使用最新的 OCurrent 版本。
我們要感謝所有 OCaml 社群的使用者、開發人員和貢獻者對專案的持續支持。
縮寫
- AFL:American Fuzzy Lop
- AMD:超微半導體
- API:應用程式介面
- ARM:安謀控股
- AWK:Aho Weinberger Kernighan
- BSD:柏克萊軟體套件
- CFI:呼叫框架資訊
- CI:持續整合
- FD:檔案描述符
- FFI:外部函式介面
- GADT:廣義代數資料型態
- GC:垃圾回收
- GNU:GNU is Not Unix
- HTTP:超文本傳輸協定
- IEEE:電機電子工程師學會
- JSON:JavaScript 物件表示法
- MD:Markdown
- OOM:記憶體不足
- OPAM:OCaml 套件管理器
- OS:作業系統
- PR:提取請求
- RFC:請求評論
- STW:停止所有執行緒
- UI:使用者介面
- URL:統一資源定位器
- VM:虛擬機器
- WSL:適用於 Linux 的 Windows 子系統