2025-10-31 00:05.34: New job: test ocaml-multicore/picos https://github.com/ocaml-multicore/picos.git#refs/heads/adaptive-bo-mpmcq (d411ff8d03fc173776fcfd690d7bb8b2e523de3e) (linux-x86_64:(lint-fmt))Base: ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480focamlformat version: version 0.28.1 (from opam)To reproduce locally:git clone --recursive "https://github.com/ocaml-multicore/picos.git" -b "adaptive-bo-mpmcq" && cd "picos" && git reset --hard d411ff8dcat > Dockerfile <<'END-OF-DOCKERFILE'FROM ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480fUSER 1000:1000RUN cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -uRUN opam depext -i duneWORKDIR /srcRUN opam depext -i ocamlformat=0.28.1COPY --chown=1000:1000 . /src/RUN opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)END-OF-DOCKERFILEdocker build .END-REPRO-BLOCK2025-10-31 00:05.34: Using cache hint "ocaml-multicore/picos-ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f-debian-13-4.08_opam-2.4-ocamlformat-6c1b38620288b5bf349067f089a7b1fc91185d94"2025-10-31 00:05.34: Using OBuilder spec:((from ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f)(user (uid 1000) (gid 1000))(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -u"))(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam depext -i dune"))(workdir /src)(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam depext -i ocamlformat=0.28.1"))(copy (src .) (dst /src/))(run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)")))2025-10-31 00:05.34: Waiting for resource in pool OCluster2025-10-31 00:05.34: Waiting for worker…2025-10-31 00:05.34: Got resource from pool OClusterBuilding on eumacheAll commits already cachedHEAD is now at d411ff8 Use adaptive backoff in mpmcq(from ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f)2025-10-31 00:05.35 ---> using "8a3fb29dc134ae8cb5011e033937cdf0919031452506a2a7eeab7ea43cc7fe2e" from cache/: (user (uid 1000) (gid 1000))/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -u"))From https://github.com/ocaml/opam-repository* branch master -> FETCH_HEAD1abfcdbf14..263b2e6219 master -> origin/master6c1b386202 Merge pull request #28774 from Julow/release-ocamlformat-0.28.1<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>[default] Initialiseddefault (at git+file:///home/opam/opam-repository):[INFO] opam 2.1 and 2.2 include many performance and security improvements over 2.0; please consider upgrading (https://opam.ocaml.org/doc/Install.html)Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages.Nothing to do.# Run eval $(opam env) to update the current shell environment2025-10-31 00:05.35 ---> using "14a945a064d34712b631e499746c8512ffc2dfe42d633eac294155386c7d69ac" from cache/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam depext -i dune"))# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian# No extra OS packages requirements found.# All required OS packages found.# Now letting opam install the packagesThe following actions will be performed:- install dune 3.20.2<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>[dune.3.20.2] found in cache<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>-> installed dune.3.20.2Done.# Run eval $(opam env) to update the current shell environment2025-10-31 00:05.35 ---> using "775944436afef22d875e8871d5f4f1d050a712cc7095353a89b9795804f25edd" from cache/: (workdir /src)/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam depext -i ocamlformat=0.28.1"))# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian# No extra OS packages requirements found.# All required OS packages found.# Now letting opam install the packagesThe following actions will be performed:- install sexplib0 v0.14.0 [required by base]- install ocamlbuild 0.16.1 [required by fpath, astring, uuseg]- install either 1.0.0 [required by ocamlformat-lib]- install menhirLib 20250912 [required by ocamlformat-lib]- install csexp 1.5.2 [required by ocamlformat]- install camlp-streams 5.0.1 [required by ocamlformat-lib]- install seq base [required by re]- install menhirSdk 20250912 [required by ocamlformat-lib]- install fix 20250919 [required by ocamlformat-lib]- install menhirCST 20250912 [required by menhir]- install ocamlfind 1.9.8 [required by ocp-indent, astring, fpath, uuseg]- install dune-build-info 3.20.2 [required by ocamlformat-lib]- install cmdliner 2.0.0 [required by ocamlformat]- install ocaml-version 4.0.3 [required by ocamlformat-lib]- install dune-configurator 3.20.2 [required by base]- install re 1.11.0 [required by ocamlformat]- install menhir 20250912 [required by ocamlformat-lib]- install topkg 1.1.0 [required by fpath, astring, uuseg]- install ocp-indent 1.9.0 [required by ocamlformat-lib]- install base v0.14.3 [required by ocamlformat-lib]- install uutf 1.0.4 [required by ocamlformat-lib]- install astring 0.8.5 [required by ocamlformat-lib]- install stdio v0.14.0 [required by ocamlformat-lib]- install uucp 15.0.0 [required by uuseg]- install fpath 0.7.3 [required by ocamlformat-lib]- install uuseg 15.0.0 [required by ocamlformat-lib]- install ocamlformat-lib 0.28.1 [required by ocamlformat]- install ocamlformat 0.28.1===== 28 to install =====<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>[astring.0.8.5] found in cache[base.v0.14.3] found in cache[camlp-streams.5.0.1] found in cache[cmdliner.2.0.0] found in cache[csexp.1.5.2] found in cache[dune-build-info.3.20.2] found in cache[dune-configurator.3.20.2] found in cache[either.1.0.0] found in cache[fix.20250919] found in cache[fpath.0.7.3] found in cache[menhir.20250912] found in cache[menhirCST.20250912] found in cache[menhirLib.20250912] found in cache[menhirSdk.20250912] found in cache[ocaml-version.4.0.3] found in cache[ocamlbuild.0.16.1] found in cache[ocamlfind.1.9.8] found in cache[ocamlformat.0.28.1] found in cache[ocamlformat-lib.0.28.1] found in cache[ocp-indent.1.9.0] found in cache[re.1.11.0] found in cache[sexplib0.v0.14.0] found in cache[stdio.v0.14.0] found in cache[topkg.1.1.0] found in cache[uucp.15.0.0] found in cache[uuseg.15.0.0] found in cache[uutf.1.0.4] found in cache<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>-> installed seq.base-> installed camlp-streams.5.0.1-> installed csexp.1.5.2-> installed either.1.0.0-> installed fix.20250919-> installed menhirCST.20250912-> installed menhirLib.20250912-> installed menhirSdk.20250912-> installed ocaml-version.4.0.3-> installed sexplib0.v0.14.0-> installed re.1.11.0-> installed cmdliner.2.0.0-> installed dune-build-info.3.20.2-> installed dune-configurator.3.20.2-> installed ocamlfind.1.9.8-> installed ocp-indent.1.9.0-> installed ocamlbuild.0.16.1-> installed base.v0.14.3-> installed stdio.v0.14.0-> installed topkg.1.1.0-> installed uutf.1.0.4-> installed astring.0.8.5-> installed menhir.20250912-> installed fpath.0.7.3-> installed uucp.15.0.0-> installed uuseg.15.0.0-> installed ocamlformat-lib.0.28.1-> installed ocamlformat.0.28.1Done.<><> ocp-indent.1.9.0 installed successfully ><><><><><><><><><><><><><><><><><>=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:* for Emacs, add these lines to ~/.emacs:(add-to-list 'load-path "/home/opam/.opam/4.08/share/emacs/site-lisp")(require 'ocp-indent)* for Vim, add this line to ~/.vimrc:set rtp^="/home/opam/.opam/4.08/share/ocp-indent/vim"# Run eval $(opam env) to update the current shell environment2025-10-31 00:05.35 ---> using "1108d0478a8cf00251254042bd4c10cc2aa664b7db87eec561d4d50aaa38cd9f" from cache/src: (copy (src .) (dst /src/))2025-10-31 00:05.35 ---> saved as "6da3bfd303100d913907b45fbd11b8dfd33db5ee31e0444b2eea8211241f680e"/src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))File "lib/picos_io.thread_atomic/picos_io_thread_atomic.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_io.thread_atomic/picos_io_thread_atomic.ml b/_build/default/lib/picos_io.thread_atomic/.formatted/picos_io_thread_atomic.mlindex c91913c..01644d9 100644--- a/_build/default/lib/picos_io.thread_atomic/picos_io_thread_atomic.ml+++ b/_build/default/lib/picos_io.thread_atomic/.formatted/picos_io_thread_atomic.ml@@ -1,9 +1,9 @@let[@poll error] [@inline never] compare_and_set x before after =!x == before&& begin- x := after;- true- end+ x := after;+ true+ endlet[@poll error] [@inline never] exchange x after =let before = !x inFile "lib/picos.domain/picos_domain.ocaml4.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos.domain/picos_domain.ocaml4.ml b/_build/default/lib/picos.domain/.formatted/picos_domain.ocaml4.mlindex 5030183..7fa5d6e 100644--- a/_build/default/lib/picos.domain/picos_domain.ocaml4.ml+++ b/_build/default/lib/picos.domain/.formatted/picos_domain.ocaml4.ml@@ -11,9 +11,9 @@ module DLS = structlet[@poll error] [@inline never] compare_and_set key before after =!key == before&& begin- key := after;- true- end+ key := after;+ true+ endlet rec get key =match !key withFile "lib/picos_mux.fifo/picos_mux_fifo.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_mux.fifo/picos_mux_fifo.ml b/_build/default/lib/picos_mux.fifo/.formatted/picos_mux_fifo.mlindex 6832aba..96640c6 100644--- a/_build/default/lib/picos_mux.fifo/picos_mux_fifo.ml+++ b/_build/default/lib/picos_mux.fifo/.formatted/picos_mux_fifo.ml@@ -156,10 +156,9 @@ let run_fiber ?quota ?fatal_exn_handler fiber main =Atomic.get t.needs_wakeup&& Atomic.compare_and_set t.needs_wakeup true falsethen begin- begin- match Mutex.lock t.mutex with- | () -> Mutex.unlock t.mutex- | exception Sys_error _ -> ()+ begin match Mutex.lock t.mutex with+ | () -> Mutex.unlock t.mutex+ | exception Sys_error _ -> ()end;Condition.broadcast t.conditionend);File "lib/picos_aux.htbl/picos_aux_htbl.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_aux.htbl/picos_aux_htbl.ml b/_build/default/lib/picos_aux.htbl/.formatted/picos_aux_htbl.mlindex df9430c..28a873f 100644--- a/_build/default/lib/picos_aux.htbl/picos_aux_htbl.ml+++ b/_build/default/lib/picos_aux.htbl/.formatted/picos_aux_htbl.ml@@ -146,15 +146,14 @@ let rec copy_all r target i t step =[compare_and_set] below does not disrupt the next resize. *)Atomic.get t == r&& begin- begin- match before with- | Resize _ ->- Atomic_array.unsafe_compare_and_set target i (B before) (B spine)- |> ignore- | Nil | Cons _ -> ()- end;- i = 0 || copy_all r target i t step- end+ begin match before with+ | Resize _ ->+ Atomic_array.unsafe_compare_and_set target i (B before) (B spine)+ |> ignore+ | Nil | Cons _ -> ()+ end;+ i = 0 || copy_all r target i t step+ end(* *)@@ -179,24 +178,21 @@ let rec split_all r target i t step =resize. *)Atomic.get t == r&& begin- begin- match before_lo with- | Resize _ ->- Atomic_array.unsafe_compare_and_set target i (B before_lo)- (B after_lo)- |> ignore- | Nil | Cons _ -> ()- end;- begin- match before_hi with- | Resize _ ->- Atomic_array.unsafe_compare_and_set target (i + high) (B before_hi)- (B after_hi)- |> ignore- | Nil | Cons _ -> ()- end;- i = 0 || split_all r target i t step- end+ begin match before_lo with+ | Resize _ ->+ Atomic_array.unsafe_compare_and_set target i (B before_lo) (B after_lo)+ |> ignore+ | Nil | Cons _ -> ()+ end;+ begin match before_hi with+ | Resize _ ->+ Atomic_array.unsafe_compare_and_set target (i + high) (B before_hi)+ (B after_hi)+ |> ignore+ | Nil | Cons _ -> ()+ end;+ i = 0 || split_all r target i t step+ end(* *)@@ -217,15 +213,14 @@ let rec merge_all r target i t step =[compare_and_set] below does not disrupt the next resize. *)Atomic.get t == r&& begin- begin- match before with- | Resize _ ->- Atomic_array.unsafe_compare_and_set target i (B before) (B after)- |> ignore- | Nil | Cons _ -> ()- end;- i = 0 || merge_all r target i t step- end+ begin match before with+ | Resize _ ->+ Atomic_array.unsafe_compare_and_set target i (B before) (B after)+ |> ignore+ | Nil | Cons _ -> ()+ end;+ i = 0 || merge_all r target i t step+ end(* *)@@ -277,9 +272,9 @@ let[@inline never] try_resize t r new_capacity ~clear =let new_r = { r with pending = Resize { buckets; non_linearizable_size } } inAtomic.compare_and_set t r new_r&& begin- finish t new_r |> ignore;- true- end+ finish t new_r |> ignore;+ true+ end(** This only gives an "estimate" of the size, which can be off by one or moreand even be negative, so this must be used with care. *)File "lib/picos_mux.random/picos_mux_random.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_mux.random/picos_mux_random.ml b/_build/default/lib/picos_mux.random/.formatted/picos_mux_random.mlindex 4255b48..23ff463 100644--- a/_build/default/lib/picos_mux.random/picos_mux_random.ml+++ b/_build/default/lib/picos_mux.random/.formatted/picos_mux_random.ml@@ -325,18 +325,16 @@ let rec run_fiber_on n fiber main runner_main context =inmatch run_fiber_on (n - 1) fiber main runner_main context with| result ->- begin- match Domain.join runner with- | None -> ()- | Some (exn, bt) -> Printexc.raise_with_backtrace exn bt+ begin match Domain.join runner with+ | None -> ()+ | Some (exn, bt) -> Printexc.raise_with_backtrace exn btend;result| exception exn ->let bt = Printexc.get_raw_backtrace () in- begin- match Domain.join runner with- | None -> ()- | Some (exn, bt) -> Printexc.raise_with_backtrace exn bt+ begin match Domain.join runner with+ | None -> ()+ | Some (exn, bt) -> Printexc.raise_with_backtrace exn btend;Printexc.raise_with_backtrace exn btFile "lib/picos_mux.multififo/picos_mux_multififo.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_mux.multififo/picos_mux_multififo.ml b/_build/default/lib/picos_mux.multififo/.formatted/picos_mux_multififo.mlindex 6e87196..0de4306 100644--- a/_build/default/lib/picos_mux.multififo/picos_mux_multififo.ml+++ b/_build/default/lib/picos_mux.multififo/.formatted/picos_mux_multififo.ml@@ -543,18 +543,16 @@ let rec run_fiber_on n fiber main runner_main context =inmatch run_fiber_on (n - 1) fiber main runner_main context with| result ->- begin- match Domain.join runner with- | None -> ()- | Some (exn, bt) -> Printexc.raise_with_backtrace exn bt+ begin match Domain.join runner with+ | None -> ()+ | Some (exn, bt) -> Printexc.raise_with_backtrace exn btend;result| exception exn ->let bt = Printexc.get_raw_backtrace () in- begin- match Domain.join runner with- | None -> ()- | Some (exn, bt) -> Printexc.raise_with_backtrace exn bt+ begin match Domain.join runner with+ | None -> ()+ | Some (exn, bt) -> Printexc.raise_with_backtrace exn btend;Printexc.raise_with_backtrace exn btFile "lib/picos/picos.ocaml5.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos/picos.ocaml5.ml b/_build/default/lib/picos/.formatted/picos.ocaml5.mlindex 7b5798d..d1afd4f 100644--- a/_build/default/lib/picos/picos.ocaml5.ml+++ b/_build/default/lib/picos/.formatted/picos.ocaml5.ml@@ -139,14 +139,13 @@ module Computation = structlet rec rollback tx = function| Nil -> true| Completion r -> begin- begin- match Atomic.get r.computation with- | ( S (Canceled { tx = previous_tx; _ })- | S (Returned { tx = previous_tx; _ }) ) as before ->- if tx == previous_tx then- Atomic.compare_and_set r.computation before (S r.before)- |> ignore- | S (Continue _) -> ()+ begin match Atomic.get r.computation with+ | ( S (Canceled { tx = previous_tx; _ })+ | S (Returned { tx = previous_tx; _ }) ) as before ->+ if tx == previous_tx then+ Atomic.compare_and_set r.computation before (S r.before)+ |> ignore+ | S (Continue _) -> ()end;rollback tx r.completionsend@@ -188,11 +187,10 @@ module Computation = structlet rec commit = function| Nil -> true| Completion r ->- begin- match Atomic.get r.computation with- | S (Canceled r) -> r.tx <- Stopped- | S (Returned r) -> r.tx <- Stopped- | S (Continue _) -> impossible ()+ begin match Atomic.get r.computation with+ | S (Canceled r) -> r.tx <- Stopped+ | S (Returned r) -> r.tx <- Stopped+ | S (Continue _) -> impossible ()end;signal r.before;commit r.completions@@ -346,8 +344,8 @@ module Computation = structlet capture t fn x =(* Intentionally manually inlined [try_capture] to minimize stack usage *)(match fn x with- | y -> try_return t y- | exception exn -> try_capture_raised exn t)+ | y -> try_return t y+ | exception exn -> try_capture_raised exn t)|> ignorelet[@inline never] raise (Canceled { exn; bt; _ } : (_, [ `Canceled ]) st) =File "lib/picos_io.select/picos_io_select.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_io.select/picos_io_select.ml b/_build/default/lib/picos_io.select/.formatted/picos_io_select.mlindex 2b0c7d2..4a69f48 100644--- a/_build/default/lib/picos_io.select/picos_io_select.ml+++ b/_build/default/lib/picos_io.select/.formatted/picos_io_select.ml@@ -137,9 +137,9 @@ let key =let[@poll error] [@inline never] try_transition s from into =s.state == from&& begin- s.state <- into;- true- end+ s.state <- into;+ true+ endlet[@poll error] [@inline never] transition s into =let from = s.state in@@ -282,16 +282,15 @@ let select_thread s =[ Sys.sigchld ]|> ignoreend;- begin- try- let pipe_inn, pipe_out = Unix.pipe ~cloexec:true () in- s.pipe_inn <- pipe_inn;- s.pipe_out <- pipe_out;- if try_transition s `Starting `Alive then- select_thread s (-1.0) fos_empty fos_empty fos_empty- with exn ->- let bt = Printexc.get_raw_backtrace () in- s.exn_bt <- (exn, bt)+ begin try+ let pipe_inn, pipe_out = Unix.pipe ~cloexec:true () in+ s.pipe_inn <- pipe_inn;+ s.pipe_out <- pipe_out;+ if try_transition s `Starting `Alive then+ select_thread s (-1.0) fos_empty fos_empty fos_empty+ with exn ->+ let bt = Printexc.get_raw_backtrace () in+ s.exn_bt <- (exn, bt)end;transition s `Stopped |> ignore;if s.pipe_inn != Unix.stdin then Unix.close s.pipe_inn;@@ -301,13 +300,13 @@ let[@poll error] [@inline never] try_configure ~intr_sig ~intr_sigs~handle_sigchld ~ignore_sigpipe =config.intr_sigs == []&& begin- config.bits <-- Bool.to_int handle_sigchld- lor (ignore_sigpipe_bit land -Bool.to_int ignore_sigpipe);- config.intr_sig <- intr_sig;- config.intr_sigs <- intr_sigs;- true- end+ config.bits <-+ Bool.to_int handle_sigchld+ lor (ignore_sigpipe_bit land -Bool.to_int ignore_sigpipe);+ config.intr_sig <- intr_sig;+ config.intr_sigs <- intr_sigs;+ true+ endlet is_intr_sig signum = signum = config.intr_sig@@ -485,12 +484,11 @@ module Intr = struct(* [intr_pending] must be read before [r.unused]! *)r.unused && before.req != R req&& begin- use before.req;- let after = { value = before.value + 1; req = R req } in- if Atomic.compare_and_set intr_pending before after then- after.value = 1- else incr_once req (Backoff.once backoff)- end+ use before.req;+ let after = { value = before.value + 1; req = R req } in+ if Atomic.compare_and_set intr_pending before after then after.value = 1+ else incr_once req (Backoff.once backoff)+ endlet intr_action trigger (Req r as req : [ `Req ] tdt) id =match Computation.peek_exn r.computation withFile "lib/picos_std.structured/bundle.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_std.structured/bundle.ml b/_build/default/lib/picos_std.structured/.formatted/bundle.mlindex d5ae07c..5664238 100644--- a/_build/default/lib/picos_std.structured/bundle.ml+++ b/_build/default/lib/picos_std.structured/.formatted/bundle.ml@@ -125,8 +125,7 @@ let join_after_pass (type a) ?callstack ?on_return (fn : a -> _) (pass : a pass)inlet fiber = Fiber.current () inlet outer = Fiber.FLS.get fiber flock_key ~default:Nothing in- begin- match pass with FLS -> Fiber.FLS.reserve fiber flock_key | Arg -> ()+ begin match pass with FLS -> Fiber.FLS.reserve fiber flock_key | Arg -> ()end;let (Packed parent as packed) = Fiber.get_computation fiber inlet (Packed bundle) = r.bundle inFile "lib/picos_mux.thread/picos_mux_thread.ml", line 1, characters 0-0:diff --git a/_build/default/lib/picos_mux.thread/picos_mux_thread.ml b/_build/default/lib/picos_mux.thread/.formatted/picos_mux_thread.mlindex cc795e9..ea14ea9 100644--- a/_build/default/lib/picos_mux.thread/picos_mux_thread.ml+++ b/_build/default/lib/picos_mux.thread/.formatted/picos_mux_thread.ml@@ -36,15 +36,14 @@ let resume trigger t _ =let _is_canceled : bool = Fiber.unsuspend t.fiber trigger in(* This will be called when the trigger is signaled. We simply broadcast onthe per thread condition variable. *)- begin- match Mutex.lock t.mutex with- | () -> Mutex.unlock t.mutex- | exception Sys_error _ ->- (* This should mean that [resume] was called from a signal handler+ begin match Mutex.lock t.mutex with+ | () -> Mutex.unlock t.mutex+ | exception Sys_error _ ->+ (* This should mean that [resume] was called from a signal handlerrunning on the scheduler thread. If the assumption about not havingpoll points holds, the [Condition.broadcast] should now be able towake up the [Condition.wait] in the scheduler. *)- ()+ ()end;Condition.broadcast t.conditionFile "test/test_finally.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_finally.ml b/_build/default/test/.formatted/test_finally.mlindex 342add0..55ad574 100644--- a/_build/default/test/test_finally.ml+++ b/_build/default/test/.formatted/test_finally.ml@@ -4,16 +4,16 @@ let test_move_is_lazy () =Test_scheduler.run @@ fun () ->let@ moveable = instantiate Fun.id Fun.id indrop moveable;- begin- match (move moveable : _ -> _) with _ -> () | exception _ -> assert false+ begin match (move moveable : _ -> _) with+ | _ -> ()+ | exception _ -> assert falseend;- begin- match- let@ _ = move moveable in- ()- with- | () -> assert false- | exception Invalid_argument _ -> ()+ begin match+ let@ _ = move moveable in+ ()+ with+ | () -> assert false+ | exception Invalid_argument _ -> ()endlet test_borrow_returns_resource () =File "test/lib/test_scheduler/test_scheduler.ocaml5.ml", line 1, characters 0-0:diff --git a/_build/default/test/lib/test_scheduler/test_scheduler.ocaml5.ml b/_build/default/test/lib/test_scheduler/.formatted/test_scheduler.ocaml5.mlindex 056b12c..a46925a 100644--- a/_build/default/test/lib/test_scheduler/test_scheduler.ocaml5.ml+++ b/_build/default/test/lib/test_scheduler/.formatted/test_scheduler.ocaml5.ml@@ -67,10 +67,9 @@ let rec run_fiber ?(verbose = false) ?(max_domains = 1) ?(allow_lwt = true)Some(fun () ->let old_hook = !Lwt.async_exception_hook in- begin- match fatal_exn_handler with- | None -> ()- | Some hook -> Lwt.async_exception_hook := hook+ begin match fatal_exn_handler with+ | None -> ()+ | Some hook -> Lwt.async_exception_hook := hookend;match Lwt_main.run (Picos_lwt_unix.run_fiber fiber main) with| result ->File "test/test_picos_dscheck.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_picos_dscheck.ml b/_build/default/test/.formatted/test_picos_dscheck.mlindex 3609345..31d4f56 100644--- a/_build/default/test/test_picos_dscheck.ml+++ b/_build/default/test/.formatted/test_picos_dscheck.ml@@ -72,11 +72,10 @@ let test_computation_contract () =Atomic.check @@ fun () ->attached_total += !attached;unattached_total += !unattached;- begin- match Computation.peek computation with- | Some (Ok 101) when !returns = 1 && !cancels = 0 -> true- | Some (Error (Exit, _)) when !returns = 0 && !cancels = 1 -> true- | _ -> false+ begin match Computation.peek computation with+ | Some (Ok 101) when !returns = 1 && !cancels = 0 -> true+ | Some (Error (Exit, _)) when !returns = 0 && !cancels = 1 -> true+ | _ -> falseend&& !attached + !unattached = Array.length triggers&& !attached@@ -117,13 +116,12 @@ let test_computation_removes_triggers () =&&let trigger = Trigger.create () inComputation.try_attach computation trigger- && begin- match Atomic.get computation with- | S (Canceled _) | S (Returned _) -> false- | S (Continue { balance_and_mode; triggers }) ->- balance_and_mode <= Computation.one + Computation.fifo_bit- && triggers = [ trigger ]- end+ && begin match Atomic.get computation with+ | S (Canceled _) | S (Returned _) -> false+ | S (Continue { balance_and_mode; triggers }) ->+ balance_and_mode <= Computation.one + Computation.fifo_bit+ && triggers = [ trigger ]+ endlet () =Alcotest.run "Picos DSCheck"File "test/test_picos.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_picos.ml b/_build/default/test/.formatted/test_picos.mlindex 75db149..7de2782 100644--- a/_build/default/test/test_picos.ml+++ b/_build/default/test/.formatted/test_picos.ml@@ -21,10 +21,9 @@ let test_fls_basics =beginrun_in_fiber @@ fun () ->let fiber = Fiber.current () in- begin- match Fiber.FLS.get_exn fiber float_key with- | _ -> assert false- | exception Fiber.FLS.Not_set -> ()+ begin match Fiber.FLS.get_exn fiber float_key with+ | _ -> assert false+ | exception Fiber.FLS.Not_set -> ()end;Fiber.FLS.set fiber float_key 4.2;Fiber.FLS.set fiber counter_key (Atomic.fetch_and_add counter 1);@@ -36,10 +35,9 @@ let test_fls_basics =beginrun_in_fiber @@ fun () ->let fiber = Fiber.current () in- begin- match Fiber.FLS.get fiber counter_key ~default:101 with- | 101 -> ()- | _ -> assert false+ begin match Fiber.FLS.get fiber counter_key ~default:101 with+ | 101 -> ()+ | _ -> assert falseend;Fiber.FLS.set fiber counter_key (Atomic.fetch_and_add counter 1);Fiber.FLS.set fiber float_key 7.6;File "test/test_schedulers.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_schedulers.ml b/_build/default/test/.formatted/test_schedulers.mlindex b224075..a3f8130 100644--- a/_build/default/test/test_schedulers.ml+++ b/_build/default/test/.formatted/test_schedulers.ml@@ -20,15 +20,14 @@ let test_completes () =let (Packed computation) = !packed inassert (not (Computation.is_running computation));assert (not (Computation.is_canceled computation));- begin- match- Test_scheduler.run (fun () ->- packed := Fiber.get_computation (Fiber.current ());- (failwith "42" : unit))- with- | () -> assert false- | exception Failure msg -> assert (msg = "42")- | exception _ -> assert false+ begin match+ Test_scheduler.run (fun () ->+ packed := Fiber.get_computation (Fiber.current ());+ (failwith "42" : unit))+ with+ | () -> assert false+ | exception Failure msg -> assert (msg = "42")+ | exception _ -> assert falseend;let (Packed computation) = !packed inassert (not (Computation.is_running computation));@@ -63,44 +62,38 @@ let test_op_raises_when_canceled () =let ivar = Ivar.create () inlet wait () = Control.protect (fun () -> Ivar.read ivar) in[- begin- fun () ->- Flock.fork_as_promise @@ fun () ->- wait ();- match Trigger.await (Trigger.create ()) with- | None -> assert false- | Some _ -> ()+ begin fun () ->+ Flock.fork_as_promise @@ fun () ->+ wait ();+ match Trigger.await (Trigger.create ()) with+ | None -> assert false+ | Some _ -> ()end;- begin- fun () ->- Flock.fork_as_promise @@ fun () ->- wait ();- match- Computation.cancel_after (Computation.create ()) ~seconds:1.0 Exit- empty_bt- with- | () -> assert false- | exception Control.Terminate -> ()+ begin fun () ->+ Flock.fork_as_promise @@ fun () ->+ wait ();+ match+ Computation.cancel_after (Computation.create ()) ~seconds:1.0 Exit+ empty_bt+ with+ | () -> assert false+ | exception Control.Terminate -> ()end;- begin- fun () ->- Flock.fork_as_promise @@ fun () ->- wait ();- match Fiber.yield () with- | () -> assert false- | exception Control.Terminate -> ()+ begin fun () ->+ Flock.fork_as_promise @@ fun () ->+ wait ();+ match Fiber.yield () with+ | () -> assert false+ | exception Control.Terminate -> ()end;- begin- fun () ->- Flock.fork_as_promise @@ fun () ->- wait ();- match- Fiber.spawn- (Fiber.create ~forbid:false (Computation.create ()))- ignore- with- | () -> assert false- | exception Control.Terminate -> ()+ begin fun () ->+ Flock.fork_as_promise @@ fun () ->+ wait ();+ match+ Fiber.spawn (Fiber.create ~forbid:false (Computation.create ())) ignore+ with+ | () -> assert false+ | exception Control.Terminate -> ()end;]|> Test_util.shuffleFile "test/test_structured.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_structured.ml b/_build/default/test/.formatted/test_structured.mlindex 27a2c17..deb500d 100644--- a/_build/default/test/test_structured.ml+++ b/_build/default/test/.formatted/test_structured.ml@@ -110,8 +110,7 @@ let test_block_raises_sys_error () =let finished = Trigger.create () inlet computation = Computation.create () inlet main _ =- begin- try Control.block () with Sys_error _ -> success := true+ begin try Control.block () with Sys_error _ -> success := trueend;Trigger.signal finishedinFile "bench/bench_hashtbl.ml", line 1, characters 0-0:diff --git a/_build/default/bench/bench_hashtbl.ml b/_build/default/bench/.formatted/bench_hashtbl.mlindex ce3be97..52935f4 100644--- a/_build/default/bench/bench_hashtbl.ml+++ b/_build/default/bench/.formatted/bench_hashtbl.ml@@ -30,39 +30,38 @@ let run_one ~budgetf ~n_domains ?(n_ops = 100 * Util.iter_factor)let n_ops_todo = Countdown.create ~n_domains () inlet before () =- begin- match lock_type with- | `Lock ->- Lock.holding lock @@ fun () ->- Hashtbl.clear t;- if prepopulate then begin- for _ = 1 to n_keys do- let value = Random.bits () in- let key = value mod n_keys in- Hashtbl.replace t key value- done- end- | `Rwlock ->- Rwlock.holding rwlock @@ fun () ->- Hashtbl.clear t;- if prepopulate then begin- for _ = 1 to n_keys do- let value = Random.bits () in- let key = value mod n_keys in- Hashtbl.replace t key value- done- end- | `Sem ->- Sem.acquire sem;- Hashtbl.clear t;- if prepopulate then begin- for _ = 1 to n_keys do- let value = Random.bits () in- let key = value mod n_keys in- Hashtbl.replace t key value- done- end;- Sem.release sem+ begin match lock_type with+ | `Lock ->+ Lock.holding lock @@ fun () ->+ Hashtbl.clear t;+ if prepopulate then begin+ for _ = 1 to n_keys do+ let value = Random.bits () in+ let key = value mod n_keys in+ Hashtbl.replace t key value+ done+ end+ | `Rwlock ->+ Rwlock.holding rwlock @@ fun () ->+ Hashtbl.clear t;+ if prepopulate then begin+ for _ = 1 to n_keys do+ let value = Random.bits () in+ let key = value mod n_keys in+ Hashtbl.replace t key value+ done+ end+ | `Sem ->+ Sem.acquire sem;+ Hashtbl.clear t;+ if prepopulate then begin+ for _ = 1 to n_keys do+ let value = Random.bits () in+ let key = value mod n_keys in+ Hashtbl.replace t key value+ done+ end;+ Sem.release semend;Countdown.non_atomic_set n_ops_todo n_opsinFile "bench/bench_stdio.ml", line 1, characters 0-0:diff --git a/_build/default/bench/bench_stdio.ml b/_build/default/bench/.formatted/bench_stdio.mlindex 07e4b99..14ab0b9 100644--- a/_build/default/bench/bench_stdio.ml+++ b/_build/default/bench/.formatted/bench_stdio.ml@@ -11,10 +11,9 @@ let run_one ~budgetf ~block_or_nonblock ~n_domains () =inlet wrap _ _ = Scheduler.run inlet work _ (inn, out, block, byte) =- begin- match block_or_nonblock with- | `Block -> ()- | `Nonblock -> Unix.set_nonblock inn+ begin match block_or_nonblock with+ | `Block -> ()+ | `Nonblock -> Unix.set_nonblock innend;for _ = 1 to n_blocks dolet n = Unix.write out block 0 block_size inFile "bench/bench_ref.ml", line 1, characters 0-0:diff --git a/_build/default/bench/bench_ref.ml b/_build/default/bench/.formatted/bench_ref.mlindex 896de14..1df6106 100644--- a/_build/default/bench/bench_ref.ml+++ b/_build/default/bench/.formatted/bench_ref.ml@@ -9,9 +9,9 @@ module Ref = structlet[@inline] compare_and_set x before after =!x == before&& begin- x := after;- true- end+ x := after;+ true+ endlet[@inline] exchange x after =let before = !x inFile "test/test_sync.ml", line 1, characters 0-0:diff --git a/_build/default/test/test_sync.ml b/_build/default/test/.formatted/test_sync.mlindex add350b..9612c7e 100644--- a/_build/default/test/test_sync.ml+++ b/_build/default/test/.formatted/test_sync.ml@@ -203,10 +203,9 @@ end) =structlet test_basics () =Test_scheduler.run @@ fun () ->- begin- match Counting.make (-1) with- | _ -> assert false- | exception Invalid_argument _ -> ()+ begin match Counting.make (-1) with+ | _ -> assert false+ | exception Invalid_argument _ -> ()end;beginlet s = Counting.make Counting.max_value in@@ -355,13 +354,12 @@ let test_event_basics () =| () -> assert false| exception Not_found -> ()end;- begin- match- [ Event.guard (fun () -> raise Exit); Event.always 42 ]- |> Event.choose |> Event.sync- with- | _ -> assert false- | exception Exit -> ()+ begin match+ [ Event.guard (fun () -> raise Exit); Event.always 42 ]+ |> Event.choose |> Event.sync+ with+ | _ -> assert false+ | exception Exit -> ()endlet test_non_cancelable_ops () =@@ -430,16 +428,14 @@ module Make_lock_tests (Lock : module type of Lock) = struct| () -> assert false| exception Lock.Poisoned -> ()end;- begin- match Lock.holding lock @@ fun () -> raise Exit with- | () -> assert false- | exception Exit -> ()+ begin match Lock.holding lock @@ fun () -> raise Exit with+ | () -> assert false+ | exception Exit -> ()end;Lock.Condition.broadcast condition;- begin- match Lock.acquire lock with- | () -> assert false- | exception Lock.Poisoned -> ()+ begin match Lock.acquire lock with+ | () -> assert false+ | exception Lock.Poisoned -> ()end;assert (Lock.is_locked lock);assert (Lock.is_poisoned lock)@@ -530,26 +526,23 @@ module Rwlock_and_condition_tests = struct| () -> assert false| exception Rwlock.Poisoned -> ()end;- begin- match Rwlock.holding lock @@ fun () -> raise Exit with- | () -> assert false- | exception Exit -> assert (Rwlock.is_poisoned lock)+ begin match Rwlock.holding lock @@ fun () -> raise Exit with+ | () -> assert false+ | exception Exit -> assert (Rwlock.is_poisoned lock)end;Rwlock.Condition.broadcast condition;- begin- match Rwlock.acquire lock with- | () -> assert false- | exception Rwlock.Poisoned -> ()+ begin match Rwlock.acquire lock with+ | () -> assert false+ | exception Rwlock.Poisoned -> ()end;- begin- match- Rwlock.sharing lock @@ fun () ->- while true do- Rwlock.Condition.wait_shared condition lock- done- with- | () -> assert false- | exception Rwlock.Poisoned -> ()+ begin match+ Rwlock.sharing lock @@ fun () ->+ while true do+ Rwlock.Condition.wait_shared condition lock+ done+ with+ | () -> assert false+ | exception Rwlock.Poisoned -> ()end;assert (not (Rwlock.is_locked_shared lock));assert (Rwlock.is_locked lock);dune build @fmt failed"/usr/bin/env" "bash" "-c" "opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)" failed with exit status 22025-10-31 00:05.38: Job failed: Failed: Build failed