2025-10-31 07:53.08: New job: test ocaml-multicore/picos https://github.com/ocaml-multicore/picos.git#refs/heads/adaptive-bo-mpmcq (e73dac98ad71a2352b6fe3744d6324b3e959a58b) (linux-x86_64:(lint-fmt)) Base: ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f ocamlformat 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 e73dac98 cat > Dockerfile <<'END-OF-DOCKERFILE' FROM ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f USER 1000:1000 RUN 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 opam depext -i dune WORKDIR /src RUN opam depext -i ocamlformat=0.28.1 COPY --chown=1000:1000 . /src/ RUN opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2) END-OF-DOCKERFILE docker build . END-REPRO-BLOCK 2025-10-31 07:53.08: 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 07:53.08: 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 07:53.08: Waiting for resource in pool OCluster 2025-10-31 07:53.08: Waiting for worker… 2025-10-31 07:53.08: Got resource from pool OCluster Building on eumache All commits already cached HEAD is now at e73dac9 Use adaptive backoff in mpmcq (from ocaml/opam:debian-13-ocaml-4.08@sha256:d8500c15c97ddcfabe40e74b26beae4dbdf65385f70ca81d97f44f1a6556480f) 2025-10-31 07:53.09 ---> 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_HEAD 1abfcdbf14..263b2e6219 master -> origin/master 6c1b386202 Merge pull request #28774 from Julow/release-ocamlformat-0.28.1 <><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> [default] Initialised default (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 environment 2025-10-31 07:53.09 ---> 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 packages The 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.2 Done. # Run eval $(opam env) to update the current shell environment 2025-10-31 07:53.09 ---> 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 packages The 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.1 Done. <><> 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 environment 2025-10-31 07:53.09 ---> using "1108d0478a8cf00251254042bd4c10cc2aa664b7db87eec561d4d50aaa38cd9f" from cache /src: (copy (src .) (dst /src/)) 2025-10-31 07:53.09 ---> saved as "cc20893f7ff1cd64ad0607e12b282a2dc61e95cc92143b1a59429606711a82e3" /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.ml index 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 + end let[@poll error] [@inline never] exchange x after = let before = !x in File "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.ml index 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 = struct let[@poll error] [@inline never] compare_and_set key before after = !key == before && begin - key := after; - true - end + key := after; + true + end let rec get key = match !key with File "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.ml index 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 false then 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.condition end); 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.ml index 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 } } in Atomic.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 more and 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.ml index 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 = in match 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 bt end; 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 bt end; Printexc.raise_with_backtrace exn bt 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.ml index 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 + end let[@poll error] [@inline never] transition s into = let from = s.state in @@ -282,16 +282,15 @@ let select_thread s = [ Sys.sigchld ] |> ignore end; - 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 + end let 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) + end let intr_action trigger (Req r as req : [ `Req ] tdt) id = match Computation.peek_exn r.computation with File "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.ml index 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 = struct let 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.completions end @@ -188,11 +187,10 @@ module Computation = struct let 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 = struct let 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) |> ignore let[@inline never] raise (Canceled { exn; bt; _ } : (_, [ `Canceled ]) st) = File "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.ml index 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 = in match 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 bt end; 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 bt end; Printexc.raise_with_backtrace exn bt File "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.ml index 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 on the 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 handler running on the scheduler thread. If the assumption about not having poll points holds, the [Condition.broadcast] should now be able to wake up the [Condition.wait] in the scheduler. *) - () + () end; Condition.broadcast t.condition 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.ml index 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 := hook end; match Lwt_main.run (Picos_lwt_unix.run_fiber fiber main) with | result -> File "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.ml index 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) in let fiber = Fiber.current () in let 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 in let (Packed bundle) = r.bundle in File "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.ml index 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 in drop moveable; - begin - match (move moveable : _ -> _) with _ -> () | exception _ -> assert false + begin match (move moveable : _ -> _) with + | _ -> () + | exception _ -> assert false end; - begin - match - let@ _ = move moveable in - () - with - | () -> assert false - | exception Invalid_argument _ -> () + begin match + let@ _ = move moveable in + () + with + | () -> assert false + | exception Invalid_argument _ -> () end let test_borrow_returns_resource () = 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.ml index 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 = begin run_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 = begin run_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 false end; 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.ml index 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 in assert (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 false end; let (Packed computation) = !packed in assert (not (Computation.is_running computation)); @@ -63,44 +62,38 @@ let test_op_raises_when_canceled () = let ivar = Ivar.create () in let 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.shuffle 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.ml index 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 + | _ -> false end && !attached + !unattached = Array.length triggers && !attached @@ -117,13 +116,12 @@ let test_computation_removes_triggers () = && let trigger = Trigger.create () in Computation.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 ] + end let () = Alcotest.run "Picos DSCheck" File "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.ml index 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 () in let computation = Computation.create () in let main _ = - begin - try Control.block () with Sys_error _ -> success := true + begin try Control.block () with Sys_error _ -> success := true end; Trigger.signal finished in File "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.ml index 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 () = in let wrap _ _ = Scheduler.run in let 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 inn end; for _ = 1 to n_blocks do let n = Unix.write out block 0 block_size in File "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.ml index 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 () in let 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 sem end; Countdown.non_atomic_set n_ops_todo n_ops in File "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.ml index 896de14..1df6106 100644 --- a/_build/default/bench/bench_ref.ml +++ b/_build/default/bench/.formatted/bench_ref.ml @@ -9,9 +9,9 @@ module Ref = struct let[@inline] compare_and_set x before after = !x == before && begin - x := after; - true - end + x := after; + true + end let[@inline] exchange x after = let before = !x in File "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.ml index add350b..9612c7e 100644 --- a/_build/default/test/test_sync.ml +++ b/_build/default/test/.formatted/test_sync.ml @@ -203,10 +203,9 @@ end) = struct let 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; begin let 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 -> () end let 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 2 2025-10-31 07:53.12: Job failed: Failed: Build failed