Organisationsmirageirmin

irmin

https://github.com/mirage/irmin
Refs Branches (9)
Move to eio
Bump ocamlformat to 0.29.0 and reformat
15f3f2
#2363
Energy consumption benchmarks
Fix deprecated QCheck functions in test_lru.ml Replace deprecated QCheck.Gen functions: - frequency -> oneof_weighted - small_int -> nat_small Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f30e3e
#2379
Inline small contents in nodes
Formatting
57ba56
#2390
Fix qcheck-alcotest dependency in irmin-test.opam
Update irmin-test.opam Co-authored-by: zach <zachshipko@gmail.com>
78ea25
#2393
Multicore safety protect shared mutable state with mutexes and atomics
ocamlformat
320b31
#2397
Inline small contents in nodes (cleaned up)
Fix irmin-client and irmin-server for Node type changes - Add inline_contents_max_bytes to client Repo (returns 0) - Simplify Node.merge type in client (key instead of key * key list) - Simplify node_with_inlined type alias in server (key instead of key * key list) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6a552e
#2400
Add TSan nightly CI workflow
Fix formatting for TSan CI scaffolding dune @fmt / ocaml-ci's lint-fmt rejected two short match/if bindings that fit on a single line. No semantic change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8b9bfc
#2402
Add TSan stress suite (PR B for TSan CI)
Add TSan stress suite for per-hotspot race detection Five new scenarios under test/irmin-pack/test_tsan_stress/ target mutable state hotspots that the existing multicore + QCheck-STM tests do not exercise across domains: - stress_mem_cache: races the global Hashtbl.t cache captured by Irmin_mem.Read_only.v (irmin_mem.ml:44) and the KMap mutable in the Read_only instance. - stress_watch: races the listen_dir_hook ref in watch.ml:28-29. - stress_ao_buf: races the unguarded Buffer.t in the rw_perm of Append_only_file (append_only_file.ml). - stress_dict: races the two unguarded Hashtbl.t caches plus last_refill_offset in dict.ml. - stress_fs_pool: races the shared Eio_pool instances in irmin_fs_unix.ml (mkdir_pool, openfile_pool). mem and watch produce clean TSan data-race warnings pointing at the exact hotspot; ao, dict and fs cause memory corruption fast enough that TSan fires via SEGV before it can write a detailed report — the SEGV itself is the race signal. The @tsan-stress dune alias runs each scenario in its own process via `|| true` so that a race-induced crash in one does not suppress the others. The tsan.yml workflow counts both "WARNING: ThreadSanitizer" and "ERROR: ThreadSanitizer" as findings, and includes the @tsan-stress build-dir reports in the uploaded artifact. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
914276
#2403
irmin-lwt: Lwt compatibility layer for Irmin 4
irmin-lwt: include Irmin.Branch.S in S.Branch Mirror the Irmin 3.11 [S.Branch] signature, which terminates with [include Branch.S with type t = branch] to expose [val main], [val is_valid], and [val t : t Irmin.Type.t] alongside the I/O functions. Without this, [Store.Branch.main] is unreachable through [Irmin_lwt.S.Branch].
ec7be0
#2405