Organisationstaridesruntime_events_tools0b70ef ()(lint-fmt)

(lint-fmt)

Link Copied
Code Copied

Logs

2026-04-16 16:39.18: New job: test tarides/runtime_events_tools https://github.com/tarides/runtime_events_tools.git#refs/pull/89/head (0b70ef6ecac302c65e0f075ccada390e7f34ebb7) (linux-x86_64:(lint-fmt))
Base: ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
ocamlformat version: version 0.28.1 (from opam)


To reproduce locally:


git clone --recursive "https://github.com/tarides/runtime_events_tools.git" && cd "runtime_events_tools" && git fetch origin "refs/pull/89/head" && git reset --hard 0b70ef6e
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
USER 1000:1000
RUN cd ~/opam-repository && (git cat-file -e 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 || git fetch origin master) && git reset -q --hard 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 && 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


2026-04-16 16:39.18: Using cache hint "tarides/runtime_events_tools-ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c-debian-13-4.08_opam-2.5-ocamlformat-5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41"
2026-04-16 16:39.18: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c)
(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 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 || git fetch origin master) && git reset -q --hard 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 && 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)"))
)


2026-04-16 16:39.18: Waiting for resource in pool OCluster
2026-04-16 19:38.10: Waiting for worker…
2026-04-16 19:46.25: Got resource from pool OCluster
Building on phoebe.caelum.ci.dev
All commits already cached
HEAD is now at 0b70ef6 Reformat and add doc strings to fxt library


(from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c)
Unable to find image 'ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c' locally
docker.io/ocaml/opam@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c: Pulling from ocaml/opam
a7730063fcfe: Pulling fs layer
1a27fd2181de: Pulling fs layer
c29591c91388: Pulling fs layer
356a64daa753: Pulling fs layer
ac02f8f2062b: Pulling fs layer
aaa2f390e4c8: Pulling fs layer
b668811757f6: Pulling fs layer
32fd4e1a774f: Pulling fs layer
b1d486fb8fdf: Pulling fs layer
cf8a2024f299: Pulling fs layer
8c4a5dac67c3: Pulling fs layer
6adfe24d7b40: Pulling fs layer
dccd6e3c0589: Pulling fs layer
2ee4bcb55cd4: Pulling fs layer
2dc3b58478d7: Pulling fs layer
daf15e5c44c6: Pulling fs layer
564e978a8088: Pulling fs layer
25a652a8c456: Pulling fs layer
b3bfea7bff3f: Pulling fs layer
a00f2937f570: Pulling fs layer
78bd1737ebff: Pulling fs layer
4f4fb700ef54: Pulling fs layer
4291a055edd7: Pulling fs layer
b668811757f6: Waiting
3c2b2836d59a: Pulling fs layer
32fd4e1a774f: Waiting
b1d486fb8fdf: Waiting
7b3e96544a52: Pulling fs layer
cf8a2024f299: Waiting
c72503effb14: Pulling fs layer
8c4a5dac67c3: Waiting
6adfe24d7b40: Waiting
bca08df11a10: Pulling fs layer
dccd6e3c0589: Waiting
2ee4bcb55cd4: Waiting
2ab0829b2daf: Pulling fs layer
2dc3b58478d7: Waiting
daf15e5c44c6: Waiting
1d246d4da211: Pulling fs layer
564e978a8088: Waiting
a09cb4870027: Pulling fs layer
25a652a8c456: Waiting
b3bfea7bff3f: Waiting
2ce07b4fe7c0: Pulling fs layer
a00f2937f570: Waiting
6b96f28d505e: Pulling fs layer
b6ad36bba9bf: Pulling fs layer
56d62791a0f9: Pulling fs layer
4d60780055d1: Pulling fs layer
43f57a7c44cb: Pulling fs layer
f21057dc4e85: Pulling fs layer
e0d2ca1300ed: Pulling fs layer
356a64daa753: Waiting
ac02f8f2062b: Waiting
9da2f7598f8e: Pulling fs layer
aaa2f390e4c8: Waiting
cb569bb28593: Pulling fs layer
78bd1737ebff: Waiting
4f4fb700ef54: Waiting
b32c9abef0bb: Pulling fs layer
4291a055edd7: Waiting
3c2b2836d59a: Waiting
7b3e96544a52: Waiting
dd7da3e42740: Pulling fs layer
c72503effb14: Waiting
2ce07b4fe7c0: Waiting
bca08df11a10: Waiting
06223904e4d3: Pulling fs layer
6b96f28d505e: Waiting
2ab0829b2daf: Waiting
b6ad36bba9bf: Waiting
1d246d4da211: Waiting
b18a38618cf8: Pulling fs layer
a09cb4870027: Waiting
4d60780055d1: Waiting
56d62791a0f9: Waiting
43f57a7c44cb: Waiting
b32c9abef0bb: Waiting
cb569bb28593: Waiting
f21057dc4e85: Waiting
dd7da3e42740: Waiting
b18a38618cf8: Waiting
06223904e4d3: Waiting
e0d2ca1300ed: Waiting
9da2f7598f8e: Waiting
c29591c91388: Verifying Checksum
c29591c91388: Download complete
1a27fd2181de: Verifying Checksum
1a27fd2181de: Download complete
ac02f8f2062b: Verifying Checksum
ac02f8f2062b: Download complete
a7730063fcfe: Verifying Checksum
a7730063fcfe: Download complete
356a64daa753: Verifying Checksum
356a64daa753: Download complete
32fd4e1a774f: Verifying Checksum
32fd4e1a774f: Download complete
b668811757f6: Verifying Checksum
b668811757f6: Download complete
b1d486fb8fdf: Verifying Checksum
b1d486fb8fdf: Download complete
cf8a2024f299: Verifying Checksum
cf8a2024f299: Download complete
8c4a5dac67c3: Verifying Checksum
8c4a5dac67c3: Download complete
6adfe24d7b40: Verifying Checksum
6adfe24d7b40: Download complete
dccd6e3c0589: Download complete
2ee4bcb55cd4: Verifying Checksum
2ee4bcb55cd4: Download complete
2dc3b58478d7: Download complete
564e978a8088: Verifying Checksum
564e978a8088: Download complete
25a652a8c456: Download complete
b3bfea7bff3f: Verifying Checksum
b3bfea7bff3f: Download complete
a00f2937f570: Download complete
aaa2f390e4c8: Download complete
78bd1737ebff: Download complete
4f4fb700ef54: Download complete
4291a055edd7: Download complete
3c2b2836d59a: Download complete
7b3e96544a52: Verifying Checksum
7b3e96544a52: Download complete
c72503effb14: Verifying Checksum
c72503effb14: Download complete
bca08df11a10: Verifying Checksum
bca08df11a10: Download complete
2ab0829b2daf: Verifying Checksum
2ab0829b2daf: Download complete
1d246d4da211: Download complete
a09cb4870027: Download complete
2ce07b4fe7c0: Verifying Checksum
2ce07b4fe7c0: Download complete
6b96f28d505e: Verifying Checksum
6b96f28d505e: Download complete
b6ad36bba9bf: Verifying Checksum
b6ad36bba9bf: Download complete
56d62791a0f9: Verifying Checksum
56d62791a0f9: Download complete
43f57a7c44cb: Verifying Checksum
43f57a7c44cb: Download complete
e0d2ca1300ed: Verifying Checksum
e0d2ca1300ed: Download complete
9da2f7598f8e: Verifying Checksum
9da2f7598f8e: Download complete
cb569bb28593: Verifying Checksum
cb569bb28593: Download complete
a7730063fcfe: Pull complete
1a27fd2181de: Pull complete
c29591c91388: Pull complete
356a64daa753: Pull complete
ac02f8f2062b: Pull complete
b32c9abef0bb: Verifying Checksum
b32c9abef0bb: Download complete
dd7da3e42740: Download complete
4d60780055d1: Verifying Checksum
4d60780055d1: Download complete
06223904e4d3: Verifying Checksum
06223904e4d3: Download complete
b18a38618cf8: Verifying Checksum
b18a38618cf8: Download complete
f21057dc4e85: Verifying Checksum
f21057dc4e85: Download complete
aaa2f390e4c8: Pull complete
b668811757f6: Pull complete
32fd4e1a774f: Pull complete
b1d486fb8fdf: Pull complete
cf8a2024f299: Pull complete
8c4a5dac67c3: Pull complete
6adfe24d7b40: Pull complete
dccd6e3c0589: Pull complete
2ee4bcb55cd4: Pull complete
2dc3b58478d7: Pull complete
daf15e5c44c6: Pull complete
564e978a8088: Pull complete
25a652a8c456: Pull complete
b3bfea7bff3f: Pull complete
a00f2937f570: Pull complete
78bd1737ebff: Pull complete
4f4fb700ef54: Pull complete
4291a055edd7: Pull complete
3c2b2836d59a: Pull complete
7b3e96544a52: Pull complete
c72503effb14: Pull complete
bca08df11a10: Pull complete
2ab0829b2daf: Pull complete
1d246d4da211: Pull complete
a09cb4870027: Pull complete
2ce07b4fe7c0: Pull complete
6b96f28d505e: Pull complete
b6ad36bba9bf: Pull complete
56d62791a0f9: Pull complete
4d60780055d1: Pull complete
43f57a7c44cb: Pull complete
f21057dc4e85: Pull complete
e0d2ca1300ed: Pull complete
9da2f7598f8e: Pull complete
cb569bb28593: Pull complete
b32c9abef0bb: Pull complete
dd7da3e42740: Pull complete
06223904e4d3: Pull complete
b18a38618cf8: Pull complete
Digest: sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
Status: Downloaded newer image for ocaml/opam@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
2026-04-16 19:46.26 ---> using "228e5ba11f0bea08c69266bb98d12a75785691261b07b0808652a307a04e14b2" 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 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 || git fetch origin master) && git reset -q --hard 5f7bb1a6e69f1ea15d8b2b08eeaa70a162c6fd41 && git log --no-decorate -n1 --oneline && opam update -u"))
From https://github.com/ocaml/opam-repository
* branch                  master     -> FETCH_HEAD
42844088d7..ab54f30430  master     -> origin/master
5f7bb1a6e6 Merge pull request #29704 from shonfeder/release-dune-3.22.2


<><> 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
2026-04-16 19:46.26 ---> using "258cae844a72eb8aff9e0ff154fcd3221fc099e2496be43da4df2e66c163b3fe" 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.22.2


<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[dune.3.22.2] found in cache


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed dune.3.22.2
Done.
# Run eval $(opam env) to update the current shell environment
2026-04-16 19:46.26 ---> using "effbcae8fcd9a93cf66de0f212437b65e55b1a8be7f39c4a9a3ce354b6ec7445" 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 dune-build-info   3.22.2   [required by ocamlformat-lib]
- install sexplib0          v0.14.0  [required by base]
- install ocamlbuild        0.16.1   [required by fpath, astring, uuseg]
- install ocaml-version     4.0.4    [required by ocamlformat-lib]
- install either            1.0.0    [required by ocamlformat-lib]
- install menhirLib         20260209 [required by ocamlformat-lib]
- install cmdliner          2.1.0    [required by ocamlformat]
- install csexp             1.5.2    [required by ocamlformat]
- install menhirSdk         20260209 [required by ocamlformat-lib]
- install menhirGLR         20260209 [required by menhir]
- install camlp-streams     5.0.1    [required by ocamlformat-lib]
- install seq               base     [required by re]
- install fix               20250919 [required by ocamlformat-lib]
- install ocamlfind         1.9.8    [required by ocp-indent, astring, fpath, uuseg]
- install menhirCST         20260209 [required by menhir]
- install dune-configurator 3.22.2   [required by base]
- install re                1.11.0   [required by ocamlformat]
- install topkg             1.1.1    [required by fpath, astring, uuseg]
- install ocp-indent        1.9.0    [required by ocamlformat-lib]
- install menhir            20260209 [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
===== 29 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.1.0] found in cache
[csexp.1.5.2] found in cache
[dune-build-info.3.22.2] found in cache
[dune-configurator.3.22.2] found in cache
[either.1.0.0] found in cache
[fix.20250919] found in cache
[fpath.0.7.3] found in cache
[menhir.20260209] found in cache
[menhirCST.20260209] found in cache
[menhirGLR.20260209] found in cache
[menhirLib.20260209] found in cache
[menhirSdk.20260209] found in cache
[ocaml-version.4.0.4] 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.1] 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 dune-build-info.3.22.2
-> installed either.1.0.0
-> installed fix.20250919
-> installed menhirCST.20260209
-> installed menhirGLR.20260209
-> installed menhirLib.20260209
-> installed menhirSdk.20260209
-> installed cmdliner.2.1.0
-> installed dune-configurator.3.22.2
-> installed ocaml-version.4.0.4
-> installed re.1.11.0
-> installed sexplib0.v0.14.0
-> installed ocamlfind.1.9.8
-> installed ocp-indent.1.9.0
-> installed ocamlbuild.0.16.1
-> installed base.v0.14.3
-> installed menhir.20260209
-> installed topkg.1.1.1
-> installed stdio.v0.14.0
-> installed uutf.1.0.4
-> installed astring.0.8.5
-> 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
2026-04-16 19:46.26 ---> using "7b3035ee1758b72e15694f22cee0d984606a2adb8ad3d988ce37d51c0444abbe" from cache


/src: (copy (src .) (dst /src/))
2026-04-16 19:46.26 ---> saved as "062604b776f426e0d2da7c2f3d5702aa7f8850aba1188478ea906a8535b42588"


/src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
File "lib/fxt/fxt_write.mli", line 1, characters 0-0:
diff --git a/_build/default/lib/fxt/fxt_write.mli b/_build/default/lib/fxt/.formatted/fxt_write.mli
index 3c016d9..4c6944c 100644
--- a/_build/default/lib/fxt/fxt_write.mli
+++ b/_build/default/lib/fxt/.formatted/fxt_write.mli
@@ -1,34 +1,29 @@
(** Minimal FXT (Fuchsia trace format) writer.


Writes trace events in the binary FXT format used by
-    {{:https://ui.perfetto.dev/} Perfetto}. Designed for zero-allocation
-    in the steady state: string and thread references are interned on first
-    use, then subsequent events for the same name/thread emit only a
-    compact index.
+    {{:https://ui.perfetto.dev/} Perfetto}. Designed for zero-allocation in the
+    steady state: string and thread references are interned on first use, then
+    subsequent events for the same name/thread emit only a compact index.


-    Event headers are packed via C stubs (see {!Fxt_buf}) to avoid
-    {!Int64} boxing from OCaml's bitwise operations.
+    Event headers are packed via C stubs (see {!Fxt_buf}) to avoid {!Int64}
+    boxing from OCaml's bitwise operations.


Modeled on the FXT writer in
{{:https://github.com/ocaml-multicore/eio-trace} eio-trace}.


@see <https://fuchsia.dev/fuchsia-src/reference/tracing/trace-format> *)


-(** An FXT trace writer. Writes to an {!out_channel} via an internal
-    64KB buffer. *)
type t
+(** An FXT trace writer. Writes to an {!out_channel} via an internal 64KB
+    buffer. *)


-(** A thread identity, represented as a process/thread ID pair. In olly,
-    each OCaml domain is mapped to a distinct [pid] with [tid = 0]. *)
-type thread = {
-  pid : int64;
-  tid : int64;
-}
+type thread = { pid : int64; tid : int64 }
+(** A thread identity, represented as a process/thread ID pair. In olly, each
+    OCaml domain is mapped to a distinct [pid] with [tid = 0]. *)


val create : out_channel -> t
-(** [create oc] initialises a new FXT trace writer on [oc]. Writes the
-    FXT magic number and initialisation record (1 tick = 1 nanosecond)
-    immediately. *)
+(** [create oc] initialises a new FXT trace writer on [oc]. Writes the FXT magic
+    number and initialisation record (1 tick = 1 nanosecond) immediately. *)


val close : t -> unit
(** [close t] flushes any buffered data and closes the output channel. *)
@@ -43,5 +38,5 @@ val instant : t -> thread:thread -> name:string -> ts:int64 -> unit
(** [instant t ~thread ~name ~ts] emits an instant event. *)


val counter : t -> thread:thread -> name:string -> ts:int64 -> value:int -> unit
-(** [counter t ~thread ~name ~ts ~value] emits a counter event with a
-    single integer argument named ["v"]. *)
+(** [counter t ~thread ~name ~ts ~value] emits a counter event with a single
+    integer argument named ["v"]. *)
File "lib/fxt/fxt_buf.mli", line 1, characters 0-0:
diff --git a/_build/default/lib/fxt/fxt_buf.mli b/_build/default/lib/fxt/.formatted/fxt_buf.mli
index 5b60a00..feb3b38 100644
--- a/_build/default/lib/fxt/fxt_buf.mli
+++ b/_build/default/lib/fxt/.formatted/fxt_buf.mli
@@ -1,18 +1,18 @@
(** Low-level buffer for writing FXT (Fuchsia trace format) binary data.


-    Provides a fixed-size {!Bytes.t}-backed buffer with zero-allocation
-    write primitives. Integer writes use compiler intrinsics and C stubs
-    to avoid {!Int64} boxing. Strings are written with 8-byte alignment
-    padding as required by the FXT specification.
+    Provides a fixed-size {!Bytes.t}-backed buffer with zero-allocation write
+    primitives. Integer writes use compiler intrinsics and C stubs to avoid
+    {!Int64} boxing. Strings are written with 8-byte alignment padding as
+    required by the FXT specification.


@see <https://fuchsia.dev/fuchsia-src/reference/tracing/trace-format> *)


-(** A write buffer backed by a fixed-size {!Bytes.t}. *)
type t
+(** A write buffer backed by a fixed-size {!Bytes.t}. *)


val create : int -> t
-(** [create n] allocates a buffer of [n] bytes (rounded up to 8-byte
-    alignment). *)
+(** [create n] allocates a buffer of [n] bytes (rounded up to 8-byte alignment).
+*)


val clear : t -> unit
(** [clear t] resets the write position to the beginning. *)
@@ -24,43 +24,44 @@ val available : t -> int
(** [available t] returns the number of bytes remaining. *)


val bytes : t -> Bytes.t
-(** [bytes t] returns the underlying {!Bytes.t}. Used with C stubs that
-    write directly at a given offset. *)
+(** [bytes t] returns the underlying {!Bytes.t}. Used with C stubs that write
+    directly at a given offset. *)


val put_64 : t -> int64 -> unit
-(** [put_64 t v] writes [v] as a little-endian 64-bit integer and advances
-    the position by 8 bytes. *)
+(** [put_64 t v] writes [v] as a little-endian 64-bit integer and advances the
+    position by 8 bytes. *)


val put_string_padded : t -> string -> unit
(** [put_string_padded t s] writes [s] followed by zero-padding to the next
8-byte boundary, as required by FXT string encoding. *)


val advance : t -> int -> unit
-(** [advance t n] moves the write position forward by [n] bytes. Used after
-    C stubs that write directly into {!bytes}. *)
+(** [advance t n] moves the write position forward by [n] bytes. Used after C
+    stubs that write directly into {!bytes}. *)


val flush : t -> out_channel -> unit
(** [flush t oc] writes all buffered data to [oc] and resets the position. *)


(** {1 Zero-allocation C stubs}


-    These externals write packed binary headers directly into a {!Bytes.t}
-    at a given offset, avoiding intermediate {!Int64} boxing that would
-    occur with OCaml's [Int64.logor]/[Int64.shift_left] operations. *)
+    These externals write packed binary headers directly into a {!Bytes.t} at a
+    given offset, avoiding intermediate {!Int64} boxing that would occur with
+    OCaml's [Int64.logor]/[Int64.shift_left] operations. *)


external put_raw_64_le : Bytes.t -> int -> int64 -> unit = "%caml_bytes_set64u"
[@@noalloc]
-(** Compiler intrinsic: writes a 64-bit integer in little-endian byte order
-    at an unaligned offset. Compiles to a single store instruction on x86-64. *)
+(** Compiler intrinsic: writes a 64-bit integer in little-endian byte order at
+    an unaligned offset. Compiles to a single store instruction on x86-64. *)


external put_event_header :
Bytes.t -> int -> int -> int -> int -> int -> int -> unit
= "fxt_put_event_header_bytecode" "fxt_put_event_header_native"
[@@noalloc]
-(** [put_event_header buf pos size event_ty n_args thread_ref name_ref]
-    packs and writes a 64-bit FXT event record header. Fields are:
+(** [put_event_header buf pos size event_ty n_args thread_ref name_ref] packs
+    and writes a 64-bit FXT event record header. Fields are:
- [size]: total record size in 8-byte words
-    - [event_ty]: event type (0=instant, 1=counter, 2=duration_begin, 3=duration_end)
+    - [event_ty]: event type (0=instant, 1=counter, 2=duration_begin,
+      3=duration_end)
- [n_args]: number of arguments (0-15)
- [thread_ref]: thread reference index (0 for inline)
- [name_ref]: string reference for the event name *)
@@ -68,21 +69,21 @@ external put_event_header :
external put_arg_header_i32 : Bytes.t -> int -> int -> int -> int -> unit
= "fxt_put_arg_header_i32"
[@@noalloc]
-(** [put_arg_header_i32 buf pos arg_words name_ref value] packs and writes
-    a 64-bit FXT argument header for a 32-bit integer argument. The [value]
-    is stored inline in the upper 32 bits of the header word. *)
+(** [put_arg_header_i32 buf pos arg_words name_ref value] packs and writes a
+    64-bit FXT argument header for a 32-bit integer argument. The [value] is
+    stored inline in the upper 32 bits of the header word. *)


external put_arg_header_i64 : Bytes.t -> int -> int -> int -> unit
= "fxt_put_arg_header_i64"
[@@noalloc]
-(** [put_arg_header_i64 buf pos arg_words name_ref] packs and writes a
-    64-bit FXT argument header for a 64-bit integer argument. The value
-    must be written separately as a following word. *)
+(** [put_arg_header_i64 buf pos arg_words name_ref] packs and writes a 64-bit
+    FXT argument header for a 64-bit integer argument. The value must be written
+    separately as a following word. *)


external int64_div_to_decimal : Bytes.t -> int -> int64 -> int -> int
= "fxt_int64_div_to_decimal"
[@@noalloc]
-(** [int64_div_to_decimal buf pos n divisor] divides [n] by [divisor] and
-    writes the result as decimal ASCII digits into [buf] at [pos]. Returns
-    the number of bytes written. Used for JSON timestamp formatting
-    (nanoseconds to microseconds) without {!Int64} boxing. *)
+(** [int64_div_to_decimal buf pos n divisor] divides [n] by [divisor] and writes
+    the result as decimal ASCII digits into [buf] at [pos]. Returns the number
+    of bytes written. Used for JSON timestamp formatting (nanoseconds to
+    microseconds) without {!Int64} boxing. *)
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
2026-04-16 19:46.28: Job failed: Failed: Build failed