My aggregated monorepo of OCaml code, automaintained
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix site build, merlin hover errors, and mermaid SPA navigation

build-site.sh: Use dune-built worker.js (--no-worker + cp) so the
worker always matches the source tree. Previously jtw compiled against
the installed js_top_worker-web package via ocamlfind, which could be
stale. Also make @site and @doc steps fail on errors instead of
swallowing them.

js_top_worker: Add blank_directives to strip #require lines from source
before sending to merlin. The pre_source context prepends previous cells'
source (including #require directives) which causes Menhir's incremental
parser to throw force_reduction errors.

x-ocaml: Add bounds checking to Typed_enclosings response in
merlin_ext.ml, matching the existing pattern for Errors. Prevents
CodeMirror RangeError when merlin returns positions outside the cell's
document range.

odoc-mermaid-extension: Fix SPA navigation by replacing Js_inline init
script with Js_url support file using MutationObserver pattern. The old
startOnLoad:true approach only worked on full page loads; now mermaid.run()
is called explicitly whenever new pre.mermaid elements appear in the DOM.

site/dune.inc: Regenerated with --warn-error on odoc compile/link/
html-generate, and -L/-P flags for library/package cross-references
from @doc build output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+1462 -26
+11 -5
build-site.sh
··· 39 39 40 40 echo "=== Step 1: Build and register plugins ===" 41 41 cd "$MONO" 42 - dune build @install 42 + dune build @install js_top_worker/example/worker.bc.js 43 43 dune install --force 2>&1 | grep -v "Installing\|Overwriting" || true 44 44 echo " plugins registered" 45 + 46 + WORKER_JS="$MONO/_build/default/js_top_worker/example/worker.bc.js" 45 47 46 48 echo "" 47 49 echo "=== Step 2: Build site content ===" ··· 67 69 if [ -f "$SITE/_opam/worker.js" ]; then 68 70 echo " universe already exists, skipping (use --fresh to rebuild)" 69 71 else 70 - dune exec -- jtw opam astring base brr note mime_printer fpath rresult \ 72 + dune exec -- jtw opam --no-worker astring base brr note mime_printer fpath rresult \ 71 73 opam-format bos odoc.model tyxml yojson uri jsonm \ 72 74 js_top_worker-widget-leaflet \ 73 75 tessera-geotessera-jsoo tessera-viz-jsoo tessera-tfjs \ 74 76 tessera-zarr-jsoo \ 75 77 onnxrt -o "$SITE/_opam" 78 + cp "$WORKER_JS" "$SITE/_opam/worker.js" 76 79 echo " universe built → $SITE/_opam/" 77 80 fi 78 81 ··· 99 102 trap 'rm -rf "$UNIVERSES"' EXIT 100 103 101 104 echo " building default universe (cmdliner, 5.2.0+ox switch)..." 102 - dune exec -- jtw opam --switch=5.2.0+ox -o "$UNIVERSES/default" cmdliner 105 + dune exec -- jtw opam --no-worker --switch=5.2.0+ox -o "$UNIVERSES/default" cmdliner 106 + cp "$WORKER_JS" "$UNIVERSES/default/worker.js" 103 107 104 108 echo " building v3 universe (cmdliner, 5.2.0+ox switch)..." 105 - dune exec -- jtw opam --switch=5.2.0+ox -o "$UNIVERSES/v3" cmdliner 109 + dune exec -- jtw opam --no-worker --switch=5.2.0+ox -o "$UNIVERSES/v3" cmdliner 110 + cp "$WORKER_JS" "$UNIVERSES/v3/worker.js" 106 111 107 112 echo " building oxcaml universe (5.2.0+ox switch)..." 108 - dune exec -- jtw opam --switch=5.2.0+ox -o "$UNIVERSES/oxcaml" 113 + dune exec -- jtw opam --no-worker --switch=5.2.0+ox -o "$UNIVERSES/oxcaml" 114 + cp "$WORKER_JS" "$UNIVERSES/oxcaml/worker.js" 109 115 110 116 for d in universe universe-v2 universe-v3 universe-oxcaml; do 111 117 rm -rf "$DEMO_DIR/$d"
+23
js_top_worker/lib/impl.cppo.ml
··· 197 197 (fun c c' -> c <> c' && c' <> ' ') 198 198 (String.to_seq orig) (String.to_seq src) 199 199 200 + (* Replace toplevel directive lines (#require, #use, etc.) with spaces, 201 + preserving byte positions so merlin locations stay correct. *) 202 + let blank_directives src = 203 + let buf = Buffer.create (String.length src) in 204 + let i = ref 0 in 205 + let len = String.length src in 206 + while !i < len do 207 + if src.[!i] = '#' && (!i = 0 || src.[!i - 1] = '\n') then begin 208 + (* Blank out until end of line *) 209 + while !i < len && src.[!i] <> '\n' do 210 + Buffer.add_char buf ' '; 211 + incr i 212 + done 213 + end else begin 214 + Buffer.add_char buf src.[!i]; 215 + incr i 216 + end 217 + done; 218 + Buffer.contents buf 219 + 200 220 let mangle_toplevel is_toplevel orig_source deps = 201 221 let src = 202 222 if not is_toplevel then orig_source ··· 1096 1116 Logs.info (fun m -> m "completing for id: %s" (match id with Some x -> x | None -> "(none)")); 1097 1117 1098 1118 let line1, src = mangle_toplevel is_toplevel source deps in 1119 + let src = blank_directives src in 1099 1120 Logs.info (fun m -> m "line1: '%s' (length: %d)" line1 (String.length line1)); 1100 1121 Logs.info (fun m -> m "src: '%s' (length: %d)" src (String.length src)); 1101 1122 let src = line1 ^ src in ··· 1246 1267 List.filter (fun dep -> not (Environment.is_cell_failed execution_env dep)) deps 1247 1268 in 1248 1269 let line1, src = mangle_toplevel is_toplevel orig_source deps in 1270 + let src = blank_directives src in 1249 1271 let full_source = line1 ^ src in 1250 1272 let source = Merlin_kernel.Msource.make full_source in 1251 1273 let query = ··· 1302 1324 List.filter (fun dep -> not (Environment.is_cell_failed execution_env dep)) deps 1303 1325 in 1304 1326 let line1, src = mangle_toplevel is_toplevel orig_source deps in 1327 + let src = blank_directives src in 1305 1328 let src = line1 ^ src in 1306 1329 let position = 1307 1330 match position with
+61 -19
odoc-mermaid-extension/src/mermaid_extension.ml
··· 191 191 | None -> 192 192 (* Default: client-side JavaScript rendering *) 193 193 let html = Printf.sprintf 194 - {|<div id="%s" class="odoc-mermaid-diagram"%s><pre class="mermaid">%s</pre></div>|} 195 - id style_attr (html_escape content) 196 - in 197 - (* Auto-detect dark mode and use appropriate theme *) 198 - let init_script = Printf.sprintf {| 199 - if (typeof window.mermaidInitialized === 'undefined') { 200 - window.mermaidInitialized = true; 201 - var preferredTheme = '%s'; 202 - if (preferredTheme === 'default' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { 203 - preferredTheme = 'dark'; 204 - } 205 - mermaid.initialize({ 206 - startOnLoad: true, 207 - theme: preferredTheme, 208 - securityLevel: 'loose' 209 - }); 210 - } 211 - |} theme 194 + {|<div id="%s" class="odoc-mermaid-diagram"%s><pre class="mermaid" data-mermaid-theme="%s">%s</pre></div>|} 195 + id style_attr theme (html_escape content) 212 196 in 213 197 let block = Block.[{ 214 198 attr = ["odoc-mermaid"]; ··· 219 203 overrides = []; 220 204 resources = [ 221 205 Api.Js_url mermaid_js_url; 222 - Api.Js_inline init_script; 206 + Api.Js_url "extensions/mermaid-init.js"; 223 207 Api.Css_url "extensions/mermaid.css"; 224 208 ]; 225 209 assets = []; 226 210 } 227 211 end 228 212 213 + (** Runtime JS for mermaid — follows the MutationObserver pattern from 214 + the extension docs so diagrams render on both direct load and SPA 215 + navigation. *) 216 + let mermaid_init_js = {| 217 + (function() { 218 + 'use strict'; 219 + 220 + var initialized = false; 221 + 222 + function initMermaid() { 223 + if (!initialized && typeof mermaid !== 'undefined') { 224 + initialized = true; 225 + var theme = 'default'; 226 + var el = document.querySelector('pre.mermaid[data-mermaid-theme]'); 227 + if (el) theme = el.getAttribute('data-mermaid-theme') || 'default'; 228 + if (theme === 'default' && window.matchMedia && 229 + window.matchMedia('(prefers-color-scheme: dark)').matches) { 230 + theme = 'dark'; 231 + } 232 + mermaid.initialize({ 233 + startOnLoad: false, 234 + theme: theme, 235 + securityLevel: 'loose' 236 + }); 237 + } 238 + } 239 + 240 + function renderAll() { 241 + initMermaid(); 242 + var pending = document.querySelectorAll('pre.mermaid:not([data-mermaid-init])'); 243 + if (pending.length === 0) return; 244 + pending.forEach(function(el) { 245 + el.setAttribute('data-mermaid-init', '1'); 246 + }); 247 + try { mermaid.run({ nodes: Array.from(pending) }); } catch(e) { console.error('mermaid.run error:', e); } 248 + } 249 + 250 + if (document.readyState === 'loading') { 251 + document.addEventListener('DOMContentLoaded', function() { 252 + renderAll(); 253 + observe(); 254 + }); 255 + } else { 256 + renderAll(); 257 + observe(); 258 + } 259 + 260 + function observe() { 261 + new MutationObserver(function() { renderAll(); }) 262 + .observe(document.body, { childList: true, subtree: true }); 263 + } 264 + })(); 265 + |} 266 + 229 267 (** CSS for mermaid diagrams *) 230 268 let mermaid_css = {| 231 269 .odoc-mermaid-diagram { ··· 276 314 Api.Registry.register_support_file ~prefix:"mermaid" { 277 315 filename = "extensions/mermaid.css"; 278 316 content = Inline mermaid_css; 317 + }; 318 + Api.Registry.register_support_file ~prefix:"mermaid" { 319 + filename = "extensions/mermaid-init.js"; 320 + content = Inline mermaid_init_js; 279 321 }
+1359
site/dune.inc
··· 49 49 blog/2026/02/weeknotes-2026-08.mld 50 50 blog/2026/03/index.mld 51 51 blog/2026/03/open-source-and-ai.mld 52 + blog/2026/03/review.mld 52 53 blog/2026/03/weeknotes-2026-09.mld 53 54 blog/2026/03/weeknotes-2026-10.mld 54 55 blog/2026/03/weeknotes-2026-11.mld ··· 70 71 notebooks/foundations/index.mld 71 72 notebooks/index.mld 72 73 notebooks/interactive_map.mld 74 + notebooks/interactive_map_zarr.mld 73 75 notebooks/oxcaml/local.mld 74 76 projects/index.mld 75 77 reference/index.mld ··· 524 526 odoc 525 527 compile 526 528 --warn-error 529 + blog/2026/03/review.mld 530 + --output-dir 531 + _odoc 532 + --parent-id 533 + blog/2026/03) 534 + (run 535 + odoc 536 + compile 537 + --warn-error 527 538 blog/2026/03/weeknotes-2026-09.mld 528 539 --output-dir 529 540 _odoc ··· 697 708 compile 698 709 --warn-error 699 710 notebooks/interactive_map.mld 711 + --output-dir 712 + _odoc 713 + --parent-id 714 + notebooks) 715 + (run 716 + odoc 717 + compile 718 + --warn-error 719 + notebooks/interactive_map_zarr.mld 700 720 --output-dir 701 721 _odoc 702 722 --parent-id ··· 31706 31726 odoc 31707 31727 link 31708 31728 --warn-error 31729 + _odoc/blog/2026/03/page-review.odoc 31730 + -P 31731 + site:_odoc 31732 + -P 31733 + angstrom:../_doc/_odoc/reference/angstrom 31734 + -P 31735 + astring:../_doc/_odoc/reference/astring 31736 + -P 31737 + base64:../_doc/_odoc/reference/base64 31738 + -P 31739 + base:../_doc/_odoc/reference/base 31740 + -P 31741 + basement:../_doc/_odoc/reference/basement 31742 + -P 31743 + base_quickcheck:../_doc/_odoc/reference/base_quickcheck 31744 + -P 31745 + bigstringaf:../_doc/_odoc/reference/bigstringaf 31746 + -P 31747 + bos:../_doc/_odoc/reference/bos 31748 + -P 31749 + brr:../_doc/_odoc/reference/brr 31750 + -P 31751 + camlp-streams:../_doc/_odoc/reference/camlp-streams 31752 + -P 31753 + capsule0:../_doc/_odoc/reference/capsule0 31754 + -P 31755 + capsule:../_doc/_odoc/reference/capsule 31756 + -P 31757 + cmdliner:../_doc/_odoc/reference/cmdliner 31758 + -P 31759 + code-mirror:../_doc/_odoc/reference/code-mirror 31760 + -P 31761 + csexp:../_doc/_odoc/reference/csexp 31762 + -P 31763 + cstruct:../_doc/_odoc/reference/cstruct 31764 + -P 31765 + decompress:../_doc/_odoc/reference/decompress 31766 + -P 31767 + domain-local-await:../_doc/_odoc/reference/domain-local-await 31768 + -P 31769 + eio:../_doc/_odoc/reference/eio 31770 + -P 31771 + eio_linux:../_doc/_odoc/reference/eio_linux 31772 + -P 31773 + eio_main:../_doc/_odoc/reference/eio_main 31774 + -P 31775 + eio_posix:../_doc/_odoc/reference/eio_posix 31776 + -P 31777 + fieldslib:../_doc/_odoc/reference/fieldslib 31778 + -P 31779 + fmt:../_doc/_odoc/reference/fmt 31780 + -P 31781 + fpath:../_doc/_odoc/reference/fpath 31782 + -P 31783 + gen:../_doc/_odoc/reference/gen 31784 + -P 31785 + hmap:../_doc/_odoc/reference/hmap 31786 + -P 31787 + iomux:../_doc/_odoc/reference/iomux 31788 + -P 31789 + jane-street-headers:../_doc/_odoc/reference/jane-street-headers 31790 + -P 31791 + js_of_ocaml-compiler:../_doc/_odoc/reference/js_of_ocaml-compiler 31792 + -P 31793 + js_of_ocaml:../_doc/_odoc/reference/js_of_ocaml 31794 + -P 31795 + js_of_ocaml-lwt:../_doc/_odoc/reference/js_of_ocaml-lwt 31796 + -P 31797 + js_of_ocaml-toplevel:../_doc/_odoc/reference/js_of_ocaml-toplevel 31798 + -P 31799 + jsonm:../_doc/_odoc/reference/jsonm 31800 + -P 31801 + js_top_worker-client:../_doc/_odoc/reference/js_top_worker-client 31802 + -P 31803 + js_top_worker:../_doc/_odoc/reference/js_top_worker 31804 + -P 31805 + js_top_worker-rpc:../_doc/_odoc/reference/js_top_worker-rpc 31806 + -P 31807 + js_top_worker-web:../_doc/_odoc/reference/js_top_worker-web 31808 + -P 31809 + js_top_worker-widget:../_doc/_odoc/reference/js_top_worker-widget 31810 + -P 31811 + js_top_worker-widget-leaflet:../_doc/_odoc/reference/js_top_worker-widget-leaflet 31812 + -P 31813 + logs:../_doc/_odoc/reference/logs 31814 + -P 31815 + lwt-dllist:../_doc/_odoc/reference/lwt-dllist 31816 + -P 31817 + lwt:../_doc/_odoc/reference/lwt 31818 + -P 31819 + menhirLib:../_doc/_odoc/reference/menhirLib 31820 + -P 31821 + merlin-js:../_doc/_odoc/reference/merlin-js 31822 + -P 31823 + merlin-lib:../_doc/_odoc/reference/merlin-lib 31824 + -P 31825 + mime_printer:../_doc/_odoc/reference/mime_printer 31826 + -P 31827 + mtime:../_doc/_odoc/reference/mtime 31828 + -P 31829 + ocaml-compiler-libs:../_doc/_odoc/reference/ocaml-compiler-libs 31830 + -P 31831 + ocamlfind:../_doc/_odoc/reference/ocamlfind 31832 + -P 31833 + ocamlgraph:../_doc/_odoc/reference/ocamlgraph 31834 + -P 31835 + ocaml_intrinsics_kernel:../_doc/_odoc/reference/ocaml_intrinsics_kernel 31836 + -P 31837 + ocaml-variants:../_doc/_odoc/reference/ocaml-variants 31838 + -P 31839 + odoc-admonition-extension:../_doc/_odoc/reference/odoc-admonition-extension 31840 + -P 31841 + odoc:../_doc/_odoc/reference/odoc 31842 + -P 31843 + odoc-docsite:../_doc/_odoc/reference/odoc-docsite 31844 + -P 31845 + odoc-dot-extension:../_doc/_odoc/reference/odoc-dot-extension 31846 + -P 31847 + odoc-driver:../_doc/_odoc/reference/odoc-driver 31848 + -P 31849 + odoc-interactive-extension:../_doc/_odoc/reference/odoc-interactive-extension 31850 + -P 31851 + odoc-jons-plugins:../_doc/_odoc/reference/odoc-jons-plugins 31852 + -P 31853 + odoc-mermaid-extension:../_doc/_odoc/reference/odoc-mermaid-extension 31854 + -P 31855 + odoc-msc-extension:../_doc/_odoc/reference/odoc-msc-extension 31856 + -P 31857 + odoc-parser:../_doc/_odoc/reference/odoc-parser 31858 + -P 31859 + odoc-rfc-extension:../_doc/_odoc/reference/odoc-rfc-extension 31860 + -P 31861 + odoc-scrollycode-extension:../_doc/_odoc/reference/odoc-scrollycode-extension 31862 + -P 31863 + odoc-standalone:../_doc/_odoc/reference/odoc-standalone 31864 + -P 31865 + onnxrt:../_doc/_odoc/reference/onnxrt 31866 + -P 31867 + opam-core:../_doc/_odoc/reference/opam-core 31868 + -P 31869 + opam-file-format:../_doc/_odoc/reference/opam-file-format 31870 + -P 31871 + opam-format:../_doc/_odoc/reference/opam-format 31872 + -P 31873 + optint:../_doc/_odoc/reference/optint 31874 + -P 31875 + parsexp:../_doc/_odoc/reference/parsexp 31876 + -P 31877 + patch:../_doc/_odoc/reference/patch 31878 + -P 31879 + portable:../_doc/_odoc/reference/portable 31880 + -P 31881 + ppx_assert:../_doc/_odoc/reference/ppx_assert 31882 + -P 31883 + ppx_bench:../_doc/_odoc/reference/ppx_bench 31884 + -P 31885 + ppx_compare:../_doc/_odoc/reference/ppx_compare 31886 + -P 31887 + ppx_derivers:../_doc/_odoc/reference/ppx_derivers 31888 + -P 31889 + ppx_enumerate:../_doc/_odoc/reference/ppx_enumerate 31890 + -P 31891 + ppx_hash:../_doc/_odoc/reference/ppx_hash 31892 + -P 31893 + ppx_here:../_doc/_odoc/reference/ppx_here 31894 + -P 31895 + ppx_inline_test:../_doc/_odoc/reference/ppx_inline_test 31896 + -P 31897 + ppxlib_ast:../_doc/_odoc/reference/ppxlib_ast 31898 + -P 31899 + ppxlib_jane:../_doc/_odoc/reference/ppxlib_jane 31900 + -P 31901 + ppxlib:../_doc/_odoc/reference/ppxlib 31902 + -P 31903 + ppxlib_register:../_doc/_odoc/reference/ppxlib_register 31904 + -P 31905 + ppx_portable:../_doc/_odoc/reference/ppx_portable 31906 + -P 31907 + ppx_sexp_conv:../_doc/_odoc/reference/ppx_sexp_conv 31908 + -P 31909 + progress:../_doc/_odoc/reference/progress 31910 + -P 31911 + psq:../_doc/_odoc/reference/psq 31912 + -P 31913 + re:../_doc/_odoc/reference/re 31914 + -P 31915 + rresult:../_doc/_odoc/reference/rresult 31916 + -P 31917 + sedlex:../_doc/_odoc/reference/sedlex 31918 + -P 31919 + sexplib0:../_doc/_odoc/reference/sexplib0 31920 + -P 31921 + sexplib:../_doc/_odoc/reference/sexplib 31922 + -P 31923 + sexp_type:../_doc/_odoc/reference/sexp_type 31924 + -P 31925 + sha:../_doc/_odoc/reference/sha 31926 + -P 31927 + sherlodoc:../_doc/_odoc/reference/sherlodoc 31928 + -P 31929 + splittable_random:../_doc/_odoc/reference/splittable_random 31930 + -P 31931 + stringext:../_doc/_odoc/reference/stringext 31932 + -P 31933 + swhid_core:../_doc/_odoc/reference/swhid_core 31934 + -P 31935 + terminal:../_doc/_odoc/reference/terminal 31936 + -P 31937 + tessera-geotessera-jsoo:../_doc/_odoc/reference/tessera-geotessera-jsoo 31938 + -P 31939 + tessera-geotessera:../_doc/_odoc/reference/tessera-geotessera 31940 + -P 31941 + tessera-linalg:../_doc/_odoc/reference/tessera-linalg 31942 + -P 31943 + tessera-npy:../_doc/_odoc/reference/tessera-npy 31944 + -P 31945 + tessera-viz-jsoo:../_doc/_odoc/reference/tessera-viz-jsoo 31946 + -P 31947 + tessera-viz:../_doc/_odoc/reference/tessera-viz 31948 + -P 31949 + thread-table:../_doc/_odoc/reference/thread-table 31950 + -P 31951 + time_now:../_doc/_odoc/reference/time_now 31952 + -P 31953 + tyxml:../_doc/_odoc/reference/tyxml 31954 + -P 31955 + unique:../_doc/_odoc/reference/unique 31956 + -P 31957 + uring:../_doc/_odoc/reference/uring 31958 + -P 31959 + uri:../_doc/_odoc/reference/uri 31960 + -P 31961 + uucp:../_doc/_odoc/reference/uucp 31962 + -P 31963 + uutf:../_doc/_odoc/reference/uutf 31964 + -P 31965 + x-ocaml:../_doc/_odoc/reference/x-ocaml 31966 + -P 31967 + yojson:../_doc/_odoc/reference/yojson 31968 + -L 31969 + angstrom:../_doc/_odoc/reference/angstrom/angstrom 31970 + -L 31971 + astring:../_doc/_odoc/reference/astring/astring 31972 + -L 31973 + base64:../_doc/_odoc/reference/base64/base64 31974 + -L 31975 + base:../_doc/_odoc/reference/base/base 31976 + -L 31977 + base.shadow_stdlib:../_doc/_odoc/reference/base/base.shadow_stdlib 31978 + -L 31979 + basement:../_doc/_odoc/reference/basement/basement 31980 + -L 31981 + base_quickcheck:../_doc/_odoc/reference/base_quickcheck/base_quickcheck 31982 + -L 31983 + base_quickcheck.ppx_quickcheck.runtime:../_doc/_odoc/reference/base_quickcheck/base_quickcheck.ppx_quickcheck.runtime 31984 + -L 31985 + bigstringaf:../_doc/_odoc/reference/bigstringaf/bigstringaf 31986 + -L 31987 + bos:../_doc/_odoc/reference/bos/bos 31988 + -L 31989 + brr:../_doc/_odoc/reference/brr/brr 31990 + -L 31991 + camlp-streams:../_doc/_odoc/reference/camlp-streams/camlp-streams 31992 + -L 31993 + capsule0.blocking_sync:../_doc/_odoc/reference/capsule0/capsule0.blocking_sync 31994 + -L 31995 + capsule0.expert:../_doc/_odoc/reference/capsule0/capsule0.expert 31996 + -L 31997 + capsule:../_doc/_odoc/reference/capsule/capsule 31998 + -L 31999 + cmdliner:../_doc/_odoc/reference/cmdliner/cmdliner 32000 + -L 32001 + code-mirror:../_doc/_odoc/reference/code-mirror/code-mirror 32002 + -L 32003 + code-mirror.autocomplete:../_doc/_odoc/reference/code-mirror/code-mirror.autocomplete 32004 + -L 32005 + code-mirror.lint:../_doc/_odoc/reference/code-mirror/code-mirror.lint 32006 + -L 32007 + code-mirror.stream:../_doc/_odoc/reference/code-mirror/code-mirror.stream 32008 + -L 32009 + code-mirror.tooltip:../_doc/_odoc/reference/code-mirror/code-mirror.tooltip 32010 + -L 32011 + csexp:../_doc/_odoc/reference/csexp/csexp 32012 + -L 32013 + cstruct:../_doc/_odoc/reference/cstruct/cstruct 32014 + -L 32015 + decompress.de:../_doc/_odoc/reference/decompress/decompress.de 32016 + -L 32017 + decompress.zl:../_doc/_odoc/reference/decompress/decompress.zl 32018 + -L 32019 + domain-local-await:../_doc/_odoc/reference/domain-local-await/domain-local-await 32020 + -L 32021 + eio:../_doc/_odoc/reference/eio/eio 32022 + -L 32023 + eio.core:../_doc/_odoc/reference/eio/eio.core 32024 + -L 32025 + eio.runtime_events:../_doc/_odoc/reference/eio/eio.runtime_events 32026 + -L 32027 + eio.unix:../_doc/_odoc/reference/eio/eio.unix 32028 + -L 32029 + eio.utils:../_doc/_odoc/reference/eio/eio.utils 32030 + -L 32031 + eio_linux:../_doc/_odoc/reference/eio_linux/eio_linux 32032 + -L 32033 + eio_main:../_doc/_odoc/reference/eio_main/eio_main 32034 + -L 32035 + eio_posix:../_doc/_odoc/reference/eio_posix/eio_posix 32036 + -L 32037 + fieldslib:../_doc/_odoc/reference/fieldslib/fieldslib 32038 + -L 32039 + fmt:../_doc/_odoc/reference/fmt/fmt 32040 + -L 32041 + fpath:../_doc/_odoc/reference/fpath/fpath 32042 + -L 32043 + gen:../_doc/_odoc/reference/gen/gen 32044 + -L 32045 + hmap:../_doc/_odoc/reference/hmap/hmap 32046 + -L 32047 + iomux:../_doc/_odoc/reference/iomux/iomux 32048 + -L 32049 + jane-street-headers:../_doc/_odoc/reference/jane-street-headers/jane-street-headers 32050 + -L 32051 + js_of_ocaml-compiler:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler 32052 + -L 32053 + js_of_ocaml-compiler.dynlink:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler.dynlink 32054 + -L 32055 + js_of_ocaml-compiler.runtime:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler.runtime 32056 + -L 32057 + js_of_ocaml:../_doc/_odoc/reference/js_of_ocaml/js_of_ocaml 32058 + -L 32059 + js_of_ocaml-lwt:../_doc/_odoc/reference/js_of_ocaml-lwt/js_of_ocaml-lwt 32060 + -L 32061 + js_of_ocaml-toplevel:../_doc/_odoc/reference/js_of_ocaml-toplevel/js_of_ocaml-toplevel 32062 + -L 32063 + jsonm:../_doc/_odoc/reference/jsonm/jsonm 32064 + -L 32065 + js_top_worker-client.msg:../_doc/_odoc/reference/js_top_worker-client/js_top_worker-client.msg 32066 + -L 32067 + js_top_worker:../_doc/_odoc/reference/js_top_worker/js_top_worker 32068 + -L 32069 + js_top_worker-rpc.message:../_doc/_odoc/reference/js_top_worker-rpc/js_top_worker-rpc.message 32070 + -L 32071 + js_top_worker-web:../_doc/_odoc/reference/js_top_worker-web/js_top_worker-web 32072 + -L 32073 + js_top_worker-widget:../_doc/_odoc/reference/js_top_worker-widget/js_top_worker-widget 32074 + -L 32075 + js_top_worker-widget-leaflet:../_doc/_odoc/reference/js_top_worker-widget-leaflet/js_top_worker-widget-leaflet 32076 + -L 32077 + logs:../_doc/_odoc/reference/logs/logs 32078 + -L 32079 + logs.browser:../_doc/_odoc/reference/logs/logs.browser 32080 + -L 32081 + logs.fmt:../_doc/_odoc/reference/logs/logs.fmt 32082 + -L 32083 + lwt-dllist:../_doc/_odoc/reference/lwt-dllist/lwt-dllist 32084 + -L 32085 + lwt:../_doc/_odoc/reference/lwt/lwt 32086 + -L 32087 + menhirLib:../_doc/_odoc/reference/menhirLib/menhirLib 32088 + -L 32089 + merlin-js.client:../_doc/_odoc/reference/merlin-js/merlin-js.client 32090 + -L 32091 + merlin-js.code-mirror:../_doc/_odoc/reference/merlin-js/merlin-js.code-mirror 32092 + -L 32093 + merlin-js.protocol:../_doc/_odoc/reference/merlin-js/merlin-js.protocol 32094 + -L 32095 + merlin-js.worker:../_doc/_odoc/reference/merlin-js/merlin-js.worker 32096 + -L 32097 + merlin-js.worker.static:../_doc/_odoc/reference/merlin-js/merlin-js.worker.static 32098 + -L 32099 + merlin-lib.analysis:../_doc/_odoc/reference/merlin-lib/merlin-lib.analysis 32100 + -L 32101 + merlin-lib.config:../_doc/_odoc/reference/merlin-lib/merlin-lib.config 32102 + -L 32103 + merlin-lib.dot_protocol:../_doc/_odoc/reference/merlin-lib/merlin-lib.dot_protocol 32104 + -L 32105 + merlin-lib.extend:../_doc/_odoc/reference/merlin-lib/merlin-lib.extend 32106 + -L 32107 + merlin-lib.index_format:../_doc/_odoc/reference/merlin-lib/merlin-lib.index_format 32108 + -L 32109 + merlin-lib.kernel:../_doc/_odoc/reference/merlin-lib/merlin-lib.kernel 32110 + -L 32111 + merlin-lib.ocaml_merlin_specific:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_merlin_specific 32112 + -L 32113 + merlin-lib.ocaml_parsing:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_parsing 32114 + -L 32115 + merlin-lib.ocaml_preprocess:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_preprocess 32116 + -L 32117 + merlin-lib.ocaml_typing:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_typing 32118 + -L 32119 + merlin-lib.ocaml_utils:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_utils 32120 + -L 32121 + merlin-lib.os_ipc:../_doc/_odoc/reference/merlin-lib/merlin-lib.os_ipc 32122 + -L 32123 + merlin-lib.query_commands:../_doc/_odoc/reference/merlin-lib/merlin-lib.query_commands 32124 + -L 32125 + merlin-lib.query_protocol:../_doc/_odoc/reference/merlin-lib/merlin-lib.query_protocol 32126 + -L 32127 + merlin-lib.sherlodoc:../_doc/_odoc/reference/merlin-lib/merlin-lib.sherlodoc 32128 + -L 32129 + merlin-lib.utils:../_doc/_odoc/reference/merlin-lib/merlin-lib.utils 32130 + -L 32131 + mime_printer:../_doc/_odoc/reference/mime_printer/mime_printer 32132 + -L 32133 + mtime:../_doc/_odoc/reference/mtime/mtime 32134 + -L 32135 + mtime.clock:../_doc/_odoc/reference/mtime/mtime.clock 32136 + -L 32137 + ocaml-compiler-libs.bytecomp:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.bytecomp 32138 + -L 32139 + ocaml-compiler-libs.common:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.common 32140 + -L 32141 + ocaml-compiler-libs.shadow:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.shadow 32142 + -L 32143 + findlib.internal:../_doc/_odoc/reference/ocamlfind/findlib.internal 32144 + -L 32145 + ocamlgraph:../_doc/_odoc/reference/ocamlgraph/ocamlgraph 32146 + -L 32147 + ocaml_intrinsics_kernel:../_doc/_odoc/reference/ocaml_intrinsics_kernel/ocaml_intrinsics_kernel 32148 + -L 32149 + compiler-libs.bytecomp:../_doc/_odoc/reference/ocaml-variants/compiler-libs.bytecomp 32150 + -L 32151 + compiler-libs.common:../_doc/_odoc/reference/ocaml-variants/compiler-libs.common 32152 + -L 32153 + compiler-libs.optcomp:../_doc/_odoc/reference/ocaml-variants/compiler-libs.optcomp 32154 + -L 32155 + compiler-libs.toplevel:../_doc/_odoc/reference/ocaml-variants/compiler-libs.toplevel 32156 + -L 32157 + runtime_events:../_doc/_odoc/reference/ocaml-variants/runtime_events 32158 + -L 32159 + stdlib:../_doc/_odoc/reference/ocaml-variants/stdlib 32160 + -L 32161 + str:../_doc/_odoc/reference/ocaml-variants/str 32162 + -L 32163 + threads:../_doc/_odoc/reference/ocaml-variants/threads 32164 + -L 32165 + unix:../_doc/_odoc/reference/ocaml-variants/unix 32166 + -L 32167 + odoc-admonition-extension.impl:../_doc/_odoc/reference/odoc-admonition-extension/odoc-admonition-extension.impl 32168 + -L 32169 + deprecated:../_doc/_odoc/reference/odoc/deprecated 32170 + -L 32171 + odoc-docsite.impl:../_doc/_odoc/reference/odoc-docsite/odoc-docsite.impl 32172 + -L 32173 + odoc-dot-extension.impl:../_doc/_odoc/reference/odoc-dot-extension/odoc-dot-extension.impl 32174 + -L 32175 + odoc-driver:../_doc/_odoc/reference/odoc-driver/odoc-driver 32176 + -L 32177 + odoc-interactive-extension.impl:../_doc/_odoc/reference/odoc-interactive-extension/odoc-interactive-extension.impl 32178 + -L 32179 + odoc-jons-plugins.impl:../_doc/_odoc/reference/odoc-jons-plugins/odoc-jons-plugins.impl 32180 + -L 32181 + odoc-mermaid-extension.impl:../_doc/_odoc/reference/odoc-mermaid-extension/odoc-mermaid-extension.impl 32182 + -L 32183 + odoc-msc-extension.impl:../_doc/_odoc/reference/odoc-msc-extension/odoc-msc-extension.impl 32184 + -L 32185 + odoc.document:../_doc/_odoc/reference/odoc/odoc.document 32186 + -L 32187 + odoc.examples:../_doc/_odoc/reference/odoc/odoc.examples 32188 + -L 32189 + odoc.extension_api:../_doc/_odoc/reference/odoc/odoc.extension_api 32190 + -L 32191 + odoc.extension_registry:../_doc/_odoc/reference/odoc/odoc.extension_registry 32192 + -L 32193 + odoc.html:../_doc/_odoc/reference/odoc/odoc.html 32194 + -L 32195 + odoc.html_support_files:../_doc/_odoc/reference/odoc/odoc.html_support_files 32196 + -L 32197 + odoc.index:../_doc/_odoc/reference/odoc/odoc.index 32198 + -L 32199 + odoc.json_index:../_doc/_odoc/reference/odoc/odoc.json_index 32200 + -L 32201 + odoc.latex:../_doc/_odoc/reference/odoc/odoc.latex 32202 + -L 32203 + odoc.loader:../_doc/_odoc/reference/odoc/odoc.loader 32204 + -L 32205 + odoc.manpage:../_doc/_odoc/reference/odoc/odoc.manpage 32206 + -L 32207 + odoc.markdown:../_doc/_odoc/reference/odoc/odoc.markdown 32208 + -L 32209 + odoc.model:../_doc/_odoc/reference/odoc/odoc.model 32210 + -L 32211 + odoc.model_desc:../_doc/_odoc/reference/odoc/odoc.model_desc 32212 + -L 32213 + odoc.ocamlary:../_doc/_odoc/reference/odoc/odoc.ocamlary 32214 + -L 32215 + odoc.occurrences:../_doc/_odoc/reference/odoc/odoc.occurrences 32216 + -L 32217 + odoc.odoc:../_doc/_odoc/reference/odoc/odoc.odoc 32218 + -L 32219 + odoc.odoc_utils:../_doc/_odoc/reference/odoc/odoc.odoc_utils 32220 + -L 32221 + odoc.search:../_doc/_odoc/reference/odoc/odoc.search 32222 + -L 32223 + odoc.search_html_frontend:../_doc/_odoc/reference/odoc/odoc.search_html_frontend 32224 + -L 32225 + odoc.syntax_highlighter:../_doc/_odoc/reference/odoc/odoc.syntax_highlighter 32226 + -L 32227 + odoc.xref2:../_doc/_odoc/reference/odoc/odoc.xref2 32228 + -L 32229 + odoc.xref_test:../_doc/_odoc/reference/odoc/odoc.xref_test 32230 + -L 32231 + odoc-parser:../_doc/_odoc/reference/odoc-parser/odoc-parser 32232 + -L 32233 + odoc-rfc-extension.impl:../_doc/_odoc/reference/odoc-rfc-extension/odoc-rfc-extension.impl 32234 + -L 32235 + odoc-scrollycode-extension.impl:../_doc/_odoc/reference/odoc-scrollycode-extension/odoc-scrollycode-extension.impl 32236 + -L 32237 + odoc-standalone.impl:../_doc/_odoc/reference/odoc-standalone/odoc-standalone.impl 32238 + -L 32239 + onnxrt:../_doc/_odoc/reference/onnxrt/onnxrt 32240 + -L 32241 + opam-core:../_doc/_odoc/reference/opam-core/opam-core 32242 + -L 32243 + opam-file-format:../_doc/_odoc/reference/opam-file-format/opam-file-format 32244 + -L 32245 + opam-format:../_doc/_odoc/reference/opam-format/opam-format 32246 + -L 32247 + optint:../_doc/_odoc/reference/optint/optint 32248 + -L 32249 + parsexp:../_doc/_odoc/reference/parsexp/parsexp 32250 + -L 32251 + patch:../_doc/_odoc/reference/patch/patch 32252 + -L 32253 + portable.kernel:../_doc/_odoc/reference/portable/portable.kernel 32254 + -L 32255 + ppx_assert.runtime-lib:../_doc/_odoc/reference/ppx_assert/ppx_assert.runtime-lib 32256 + -L 32257 + ppx_bench.config:../_doc/_odoc/reference/ppx_bench/ppx_bench.config 32258 + -L 32259 + ppx_bench.config_types:../_doc/_odoc/reference/ppx_bench/ppx_bench.config_types 32260 + -L 32261 + ppx_bench.runtime-lib:../_doc/_odoc/reference/ppx_bench/ppx_bench.runtime-lib 32262 + -L 32263 + ppx_compare.runtime-lib:../_doc/_odoc/reference/ppx_compare/ppx_compare.runtime-lib 32264 + -L 32265 + ppx_derivers:../_doc/_odoc/reference/ppx_derivers/ppx_derivers 32266 + -L 32267 + ppx_enumerate.runtime-lib:../_doc/_odoc/reference/ppx_enumerate/ppx_enumerate.runtime-lib 32268 + -L 32269 + ppx_hash.base_internalhash_types:../_doc/_odoc/reference/ppx_hash/ppx_hash.base_internalhash_types 32270 + -L 32271 + ppx_hash.runtime-lib:../_doc/_odoc/reference/ppx_hash/ppx_hash.runtime-lib 32272 + -L 32273 + ppx_here.runtime-lib:../_doc/_odoc/reference/ppx_here/ppx_here.runtime-lib 32274 + -L 32275 + ppx_inline_test.config:../_doc/_odoc/reference/ppx_inline_test/ppx_inline_test.config 32276 + -L 32277 + ppx_inline_test.runtime-lib:../_doc/_odoc/reference/ppx_inline_test/ppx_inline_test.runtime-lib 32278 + -L 32279 + ppxlib_ast.ast:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.ast 32280 + -L 32281 + ppxlib_ast.astlib:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.astlib 32282 + -L 32283 + ppxlib_ast.stdppx:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.stdppx 32284 + -L 32285 + ppxlib_ast.traverse_builtins:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.traverse_builtins 32286 + -L 32287 + ppxlib_jane:../_doc/_odoc/reference/ppxlib_jane/ppxlib_jane 32288 + -L 32289 + ppxlib:../_doc/_odoc/reference/ppxlib/ppxlib 32290 + -L 32291 + ppxlib.print_diff:../_doc/_odoc/reference/ppxlib/ppxlib.print_diff 32292 + -L 32293 + ppxlib_register:../_doc/_odoc/reference/ppxlib_register/ppxlib_register 32294 + -L 32295 + ppx_portable.runtime:../_doc/_odoc/reference/ppx_portable/ppx_portable.runtime 32296 + -L 32297 + ppx_sexp_conv.runtime-lib:../_doc/_odoc/reference/ppx_sexp_conv/ppx_sexp_conv.runtime-lib 32298 + -L 32299 + progress:../_doc/_odoc/reference/progress/progress 32300 + -L 32301 + progress.engine:../_doc/_odoc/reference/progress/progress.engine 32302 + -L 32303 + progress.vector:../_doc/_odoc/reference/progress/progress.vector 32304 + -L 32305 + psq:../_doc/_odoc/reference/psq/psq 32306 + -L 32307 + re:../_doc/_odoc/reference/re/re 32308 + -L 32309 + rresult:../_doc/_odoc/reference/rresult/rresult 32310 + -L 32311 + sedlex:../_doc/_odoc/reference/sedlex/sedlex 32312 + -L 32313 + sexplib0:../_doc/_odoc/reference/sexplib0/sexplib0 32314 + -L 32315 + sexplib:../_doc/_odoc/reference/sexplib/sexplib 32316 + -L 32317 + sexp_type:../_doc/_odoc/reference/sexp_type/sexp_type 32318 + -L 32319 + sexp_type.grammar:../_doc/_odoc/reference/sexp_type/sexp_type.grammar 32320 + -L 32321 + sha:../_doc/_odoc/reference/sha/sha 32322 + -L 32323 + sherlodoc.db:../_doc/_odoc/reference/sherlodoc/sherlodoc.db 32324 + -L 32325 + sherlodoc.db_store:../_doc/_odoc/reference/sherlodoc/sherlodoc.db_store 32326 + -L 32327 + sherlodoc.query:../_doc/_odoc/reference/sherlodoc/sherlodoc.query 32328 + -L 32329 + sherlodoc.storage_js:../_doc/_odoc/reference/sherlodoc/sherlodoc.storage_js 32330 + -L 32331 + sherlodoc.storage_marshal:../_doc/_odoc/reference/sherlodoc/sherlodoc.storage_marshal 32332 + -L 32333 + splittable_random:../_doc/_odoc/reference/splittable_random/splittable_random 32334 + -L 32335 + stringext:../_doc/_odoc/reference/stringext/stringext 32336 + -L 32337 + swhid_core:../_doc/_odoc/reference/swhid_core/swhid_core 32338 + -L 32339 + terminal:../_doc/_odoc/reference/terminal/terminal 32340 + -L 32341 + terminal.ansi:../_doc/_odoc/reference/terminal/terminal.ansi 32342 + -L 32343 + tessera-geotessera-jsoo:../_doc/_odoc/reference/tessera-geotessera-jsoo/tessera-geotessera-jsoo 32344 + -L 32345 + tessera-geotessera:../_doc/_odoc/reference/tessera-geotessera/tessera-geotessera 32346 + -L 32347 + tessera-linalg:../_doc/_odoc/reference/tessera-linalg/tessera-linalg 32348 + -L 32349 + tessera-npy:../_doc/_odoc/reference/tessera-npy/tessera-npy 32350 + -L 32351 + tessera-viz-jsoo:../_doc/_odoc/reference/tessera-viz-jsoo/tessera-viz-jsoo 32352 + -L 32353 + tessera-viz:../_doc/_odoc/reference/tessera-viz/tessera-viz 32354 + -L 32355 + thread-table:../_doc/_odoc/reference/thread-table/thread-table 32356 + -L 32357 + time_now:../_doc/_odoc/reference/time_now/time_now 32358 + -L 32359 + tyxml:../_doc/_odoc/reference/tyxml/tyxml 32360 + -L 32361 + tyxml.functor:../_doc/_odoc/reference/tyxml/tyxml.functor 32362 + -L 32363 + unique:../_doc/_odoc/reference/unique/unique 32364 + -L 32365 + uring:../_doc/_odoc/reference/uring/uring 32366 + -L 32367 + uri:../_doc/_odoc/reference/uri/uri 32368 + -L 32369 + uucp:../_doc/_odoc/reference/uucp/uucp 32370 + -L 32371 + uutf:../_doc/_odoc/reference/uutf/uutf 32372 + -L 32373 + x-ocaml.lib:../_doc/_odoc/reference/x-ocaml/x-ocaml.lib 32374 + -L 32375 + x-ocaml.protocol:../_doc/_odoc/reference/x-ocaml/x-ocaml.protocol 32376 + -L 32377 + yojson:../_doc/_odoc/reference/yojson/yojson 32378 + -o 32379 + _odoc/blog/2026/03/page-review.odocl) 32380 + (run 32381 + odoc 32382 + link 32383 + --warn-error 31709 32384 _odoc/blog/2026/03/page-weeknotes-2026-09.odoc 31710 32385 -P 31711 32386 site:_odoc ··· 45461 46136 odoc 45462 46137 link 45463 46138 --warn-error 46139 + _odoc/notebooks/page-interactive_map_zarr.odoc 46140 + -P 46141 + site:_odoc 46142 + -P 46143 + angstrom:../_doc/_odoc/reference/angstrom 46144 + -P 46145 + astring:../_doc/_odoc/reference/astring 46146 + -P 46147 + base64:../_doc/_odoc/reference/base64 46148 + -P 46149 + base:../_doc/_odoc/reference/base 46150 + -P 46151 + basement:../_doc/_odoc/reference/basement 46152 + -P 46153 + base_quickcheck:../_doc/_odoc/reference/base_quickcheck 46154 + -P 46155 + bigstringaf:../_doc/_odoc/reference/bigstringaf 46156 + -P 46157 + bos:../_doc/_odoc/reference/bos 46158 + -P 46159 + brr:../_doc/_odoc/reference/brr 46160 + -P 46161 + camlp-streams:../_doc/_odoc/reference/camlp-streams 46162 + -P 46163 + capsule0:../_doc/_odoc/reference/capsule0 46164 + -P 46165 + capsule:../_doc/_odoc/reference/capsule 46166 + -P 46167 + cmdliner:../_doc/_odoc/reference/cmdliner 46168 + -P 46169 + code-mirror:../_doc/_odoc/reference/code-mirror 46170 + -P 46171 + csexp:../_doc/_odoc/reference/csexp 46172 + -P 46173 + cstruct:../_doc/_odoc/reference/cstruct 46174 + -P 46175 + decompress:../_doc/_odoc/reference/decompress 46176 + -P 46177 + domain-local-await:../_doc/_odoc/reference/domain-local-await 46178 + -P 46179 + eio:../_doc/_odoc/reference/eio 46180 + -P 46181 + eio_linux:../_doc/_odoc/reference/eio_linux 46182 + -P 46183 + eio_main:../_doc/_odoc/reference/eio_main 46184 + -P 46185 + eio_posix:../_doc/_odoc/reference/eio_posix 46186 + -P 46187 + fieldslib:../_doc/_odoc/reference/fieldslib 46188 + -P 46189 + fmt:../_doc/_odoc/reference/fmt 46190 + -P 46191 + fpath:../_doc/_odoc/reference/fpath 46192 + -P 46193 + gen:../_doc/_odoc/reference/gen 46194 + -P 46195 + hmap:../_doc/_odoc/reference/hmap 46196 + -P 46197 + iomux:../_doc/_odoc/reference/iomux 46198 + -P 46199 + jane-street-headers:../_doc/_odoc/reference/jane-street-headers 46200 + -P 46201 + js_of_ocaml-compiler:../_doc/_odoc/reference/js_of_ocaml-compiler 46202 + -P 46203 + js_of_ocaml:../_doc/_odoc/reference/js_of_ocaml 46204 + -P 46205 + js_of_ocaml-lwt:../_doc/_odoc/reference/js_of_ocaml-lwt 46206 + -P 46207 + js_of_ocaml-toplevel:../_doc/_odoc/reference/js_of_ocaml-toplevel 46208 + -P 46209 + jsonm:../_doc/_odoc/reference/jsonm 46210 + -P 46211 + js_top_worker-client:../_doc/_odoc/reference/js_top_worker-client 46212 + -P 46213 + js_top_worker:../_doc/_odoc/reference/js_top_worker 46214 + -P 46215 + js_top_worker-rpc:../_doc/_odoc/reference/js_top_worker-rpc 46216 + -P 46217 + js_top_worker-web:../_doc/_odoc/reference/js_top_worker-web 46218 + -P 46219 + js_top_worker-widget:../_doc/_odoc/reference/js_top_worker-widget 46220 + -P 46221 + js_top_worker-widget-leaflet:../_doc/_odoc/reference/js_top_worker-widget-leaflet 46222 + -P 46223 + logs:../_doc/_odoc/reference/logs 46224 + -P 46225 + lwt-dllist:../_doc/_odoc/reference/lwt-dllist 46226 + -P 46227 + lwt:../_doc/_odoc/reference/lwt 46228 + -P 46229 + menhirLib:../_doc/_odoc/reference/menhirLib 46230 + -P 46231 + merlin-js:../_doc/_odoc/reference/merlin-js 46232 + -P 46233 + merlin-lib:../_doc/_odoc/reference/merlin-lib 46234 + -P 46235 + mime_printer:../_doc/_odoc/reference/mime_printer 46236 + -P 46237 + mtime:../_doc/_odoc/reference/mtime 46238 + -P 46239 + ocaml-compiler-libs:../_doc/_odoc/reference/ocaml-compiler-libs 46240 + -P 46241 + ocamlfind:../_doc/_odoc/reference/ocamlfind 46242 + -P 46243 + ocamlgraph:../_doc/_odoc/reference/ocamlgraph 46244 + -P 46245 + ocaml_intrinsics_kernel:../_doc/_odoc/reference/ocaml_intrinsics_kernel 46246 + -P 46247 + ocaml-variants:../_doc/_odoc/reference/ocaml-variants 46248 + -P 46249 + odoc-admonition-extension:../_doc/_odoc/reference/odoc-admonition-extension 46250 + -P 46251 + odoc:../_doc/_odoc/reference/odoc 46252 + -P 46253 + odoc-docsite:../_doc/_odoc/reference/odoc-docsite 46254 + -P 46255 + odoc-dot-extension:../_doc/_odoc/reference/odoc-dot-extension 46256 + -P 46257 + odoc-driver:../_doc/_odoc/reference/odoc-driver 46258 + -P 46259 + odoc-interactive-extension:../_doc/_odoc/reference/odoc-interactive-extension 46260 + -P 46261 + odoc-jons-plugins:../_doc/_odoc/reference/odoc-jons-plugins 46262 + -P 46263 + odoc-mermaid-extension:../_doc/_odoc/reference/odoc-mermaid-extension 46264 + -P 46265 + odoc-msc-extension:../_doc/_odoc/reference/odoc-msc-extension 46266 + -P 46267 + odoc-parser:../_doc/_odoc/reference/odoc-parser 46268 + -P 46269 + odoc-rfc-extension:../_doc/_odoc/reference/odoc-rfc-extension 46270 + -P 46271 + odoc-scrollycode-extension:../_doc/_odoc/reference/odoc-scrollycode-extension 46272 + -P 46273 + odoc-standalone:../_doc/_odoc/reference/odoc-standalone 46274 + -P 46275 + onnxrt:../_doc/_odoc/reference/onnxrt 46276 + -P 46277 + opam-core:../_doc/_odoc/reference/opam-core 46278 + -P 46279 + opam-file-format:../_doc/_odoc/reference/opam-file-format 46280 + -P 46281 + opam-format:../_doc/_odoc/reference/opam-format 46282 + -P 46283 + optint:../_doc/_odoc/reference/optint 46284 + -P 46285 + parsexp:../_doc/_odoc/reference/parsexp 46286 + -P 46287 + patch:../_doc/_odoc/reference/patch 46288 + -P 46289 + portable:../_doc/_odoc/reference/portable 46290 + -P 46291 + ppx_assert:../_doc/_odoc/reference/ppx_assert 46292 + -P 46293 + ppx_bench:../_doc/_odoc/reference/ppx_bench 46294 + -P 46295 + ppx_compare:../_doc/_odoc/reference/ppx_compare 46296 + -P 46297 + ppx_derivers:../_doc/_odoc/reference/ppx_derivers 46298 + -P 46299 + ppx_enumerate:../_doc/_odoc/reference/ppx_enumerate 46300 + -P 46301 + ppx_hash:../_doc/_odoc/reference/ppx_hash 46302 + -P 46303 + ppx_here:../_doc/_odoc/reference/ppx_here 46304 + -P 46305 + ppx_inline_test:../_doc/_odoc/reference/ppx_inline_test 46306 + -P 46307 + ppxlib_ast:../_doc/_odoc/reference/ppxlib_ast 46308 + -P 46309 + ppxlib_jane:../_doc/_odoc/reference/ppxlib_jane 46310 + -P 46311 + ppxlib:../_doc/_odoc/reference/ppxlib 46312 + -P 46313 + ppxlib_register:../_doc/_odoc/reference/ppxlib_register 46314 + -P 46315 + ppx_portable:../_doc/_odoc/reference/ppx_portable 46316 + -P 46317 + ppx_sexp_conv:../_doc/_odoc/reference/ppx_sexp_conv 46318 + -P 46319 + progress:../_doc/_odoc/reference/progress 46320 + -P 46321 + psq:../_doc/_odoc/reference/psq 46322 + -P 46323 + re:../_doc/_odoc/reference/re 46324 + -P 46325 + rresult:../_doc/_odoc/reference/rresult 46326 + -P 46327 + sedlex:../_doc/_odoc/reference/sedlex 46328 + -P 46329 + sexplib0:../_doc/_odoc/reference/sexplib0 46330 + -P 46331 + sexplib:../_doc/_odoc/reference/sexplib 46332 + -P 46333 + sexp_type:../_doc/_odoc/reference/sexp_type 46334 + -P 46335 + sha:../_doc/_odoc/reference/sha 46336 + -P 46337 + sherlodoc:../_doc/_odoc/reference/sherlodoc 46338 + -P 46339 + splittable_random:../_doc/_odoc/reference/splittable_random 46340 + -P 46341 + stringext:../_doc/_odoc/reference/stringext 46342 + -P 46343 + swhid_core:../_doc/_odoc/reference/swhid_core 46344 + -P 46345 + terminal:../_doc/_odoc/reference/terminal 46346 + -P 46347 + tessera-geotessera-jsoo:../_doc/_odoc/reference/tessera-geotessera-jsoo 46348 + -P 46349 + tessera-geotessera:../_doc/_odoc/reference/tessera-geotessera 46350 + -P 46351 + tessera-linalg:../_doc/_odoc/reference/tessera-linalg 46352 + -P 46353 + tessera-npy:../_doc/_odoc/reference/tessera-npy 46354 + -P 46355 + tessera-viz-jsoo:../_doc/_odoc/reference/tessera-viz-jsoo 46356 + -P 46357 + tessera-viz:../_doc/_odoc/reference/tessera-viz 46358 + -P 46359 + thread-table:../_doc/_odoc/reference/thread-table 46360 + -P 46361 + time_now:../_doc/_odoc/reference/time_now 46362 + -P 46363 + tyxml:../_doc/_odoc/reference/tyxml 46364 + -P 46365 + unique:../_doc/_odoc/reference/unique 46366 + -P 46367 + uring:../_doc/_odoc/reference/uring 46368 + -P 46369 + uri:../_doc/_odoc/reference/uri 46370 + -P 46371 + uucp:../_doc/_odoc/reference/uucp 46372 + -P 46373 + uutf:../_doc/_odoc/reference/uutf 46374 + -P 46375 + x-ocaml:../_doc/_odoc/reference/x-ocaml 46376 + -P 46377 + yojson:../_doc/_odoc/reference/yojson 46378 + -L 46379 + angstrom:../_doc/_odoc/reference/angstrom/angstrom 46380 + -L 46381 + astring:../_doc/_odoc/reference/astring/astring 46382 + -L 46383 + base64:../_doc/_odoc/reference/base64/base64 46384 + -L 46385 + base:../_doc/_odoc/reference/base/base 46386 + -L 46387 + base.shadow_stdlib:../_doc/_odoc/reference/base/base.shadow_stdlib 46388 + -L 46389 + basement:../_doc/_odoc/reference/basement/basement 46390 + -L 46391 + base_quickcheck:../_doc/_odoc/reference/base_quickcheck/base_quickcheck 46392 + -L 46393 + base_quickcheck.ppx_quickcheck.runtime:../_doc/_odoc/reference/base_quickcheck/base_quickcheck.ppx_quickcheck.runtime 46394 + -L 46395 + bigstringaf:../_doc/_odoc/reference/bigstringaf/bigstringaf 46396 + -L 46397 + bos:../_doc/_odoc/reference/bos/bos 46398 + -L 46399 + brr:../_doc/_odoc/reference/brr/brr 46400 + -L 46401 + camlp-streams:../_doc/_odoc/reference/camlp-streams/camlp-streams 46402 + -L 46403 + capsule0.blocking_sync:../_doc/_odoc/reference/capsule0/capsule0.blocking_sync 46404 + -L 46405 + capsule0.expert:../_doc/_odoc/reference/capsule0/capsule0.expert 46406 + -L 46407 + capsule:../_doc/_odoc/reference/capsule/capsule 46408 + -L 46409 + cmdliner:../_doc/_odoc/reference/cmdliner/cmdliner 46410 + -L 46411 + code-mirror:../_doc/_odoc/reference/code-mirror/code-mirror 46412 + -L 46413 + code-mirror.autocomplete:../_doc/_odoc/reference/code-mirror/code-mirror.autocomplete 46414 + -L 46415 + code-mirror.lint:../_doc/_odoc/reference/code-mirror/code-mirror.lint 46416 + -L 46417 + code-mirror.stream:../_doc/_odoc/reference/code-mirror/code-mirror.stream 46418 + -L 46419 + code-mirror.tooltip:../_doc/_odoc/reference/code-mirror/code-mirror.tooltip 46420 + -L 46421 + csexp:../_doc/_odoc/reference/csexp/csexp 46422 + -L 46423 + cstruct:../_doc/_odoc/reference/cstruct/cstruct 46424 + -L 46425 + decompress.de:../_doc/_odoc/reference/decompress/decompress.de 46426 + -L 46427 + decompress.zl:../_doc/_odoc/reference/decompress/decompress.zl 46428 + -L 46429 + domain-local-await:../_doc/_odoc/reference/domain-local-await/domain-local-await 46430 + -L 46431 + eio:../_doc/_odoc/reference/eio/eio 46432 + -L 46433 + eio.core:../_doc/_odoc/reference/eio/eio.core 46434 + -L 46435 + eio.runtime_events:../_doc/_odoc/reference/eio/eio.runtime_events 46436 + -L 46437 + eio.unix:../_doc/_odoc/reference/eio/eio.unix 46438 + -L 46439 + eio.utils:../_doc/_odoc/reference/eio/eio.utils 46440 + -L 46441 + eio_linux:../_doc/_odoc/reference/eio_linux/eio_linux 46442 + -L 46443 + eio_main:../_doc/_odoc/reference/eio_main/eio_main 46444 + -L 46445 + eio_posix:../_doc/_odoc/reference/eio_posix/eio_posix 46446 + -L 46447 + fieldslib:../_doc/_odoc/reference/fieldslib/fieldslib 46448 + -L 46449 + fmt:../_doc/_odoc/reference/fmt/fmt 46450 + -L 46451 + fpath:../_doc/_odoc/reference/fpath/fpath 46452 + -L 46453 + gen:../_doc/_odoc/reference/gen/gen 46454 + -L 46455 + hmap:../_doc/_odoc/reference/hmap/hmap 46456 + -L 46457 + iomux:../_doc/_odoc/reference/iomux/iomux 46458 + -L 46459 + jane-street-headers:../_doc/_odoc/reference/jane-street-headers/jane-street-headers 46460 + -L 46461 + js_of_ocaml-compiler:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler 46462 + -L 46463 + js_of_ocaml-compiler.dynlink:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler.dynlink 46464 + -L 46465 + js_of_ocaml-compiler.runtime:../_doc/_odoc/reference/js_of_ocaml-compiler/js_of_ocaml-compiler.runtime 46466 + -L 46467 + js_of_ocaml:../_doc/_odoc/reference/js_of_ocaml/js_of_ocaml 46468 + -L 46469 + js_of_ocaml-lwt:../_doc/_odoc/reference/js_of_ocaml-lwt/js_of_ocaml-lwt 46470 + -L 46471 + js_of_ocaml-toplevel:../_doc/_odoc/reference/js_of_ocaml-toplevel/js_of_ocaml-toplevel 46472 + -L 46473 + jsonm:../_doc/_odoc/reference/jsonm/jsonm 46474 + -L 46475 + js_top_worker-client.msg:../_doc/_odoc/reference/js_top_worker-client/js_top_worker-client.msg 46476 + -L 46477 + js_top_worker:../_doc/_odoc/reference/js_top_worker/js_top_worker 46478 + -L 46479 + js_top_worker-rpc.message:../_doc/_odoc/reference/js_top_worker-rpc/js_top_worker-rpc.message 46480 + -L 46481 + js_top_worker-web:../_doc/_odoc/reference/js_top_worker-web/js_top_worker-web 46482 + -L 46483 + js_top_worker-widget:../_doc/_odoc/reference/js_top_worker-widget/js_top_worker-widget 46484 + -L 46485 + js_top_worker-widget-leaflet:../_doc/_odoc/reference/js_top_worker-widget-leaflet/js_top_worker-widget-leaflet 46486 + -L 46487 + logs:../_doc/_odoc/reference/logs/logs 46488 + -L 46489 + logs.browser:../_doc/_odoc/reference/logs/logs.browser 46490 + -L 46491 + logs.fmt:../_doc/_odoc/reference/logs/logs.fmt 46492 + -L 46493 + lwt-dllist:../_doc/_odoc/reference/lwt-dllist/lwt-dllist 46494 + -L 46495 + lwt:../_doc/_odoc/reference/lwt/lwt 46496 + -L 46497 + menhirLib:../_doc/_odoc/reference/menhirLib/menhirLib 46498 + -L 46499 + merlin-js.client:../_doc/_odoc/reference/merlin-js/merlin-js.client 46500 + -L 46501 + merlin-js.code-mirror:../_doc/_odoc/reference/merlin-js/merlin-js.code-mirror 46502 + -L 46503 + merlin-js.protocol:../_doc/_odoc/reference/merlin-js/merlin-js.protocol 46504 + -L 46505 + merlin-js.worker:../_doc/_odoc/reference/merlin-js/merlin-js.worker 46506 + -L 46507 + merlin-js.worker.static:../_doc/_odoc/reference/merlin-js/merlin-js.worker.static 46508 + -L 46509 + merlin-lib.analysis:../_doc/_odoc/reference/merlin-lib/merlin-lib.analysis 46510 + -L 46511 + merlin-lib.config:../_doc/_odoc/reference/merlin-lib/merlin-lib.config 46512 + -L 46513 + merlin-lib.dot_protocol:../_doc/_odoc/reference/merlin-lib/merlin-lib.dot_protocol 46514 + -L 46515 + merlin-lib.extend:../_doc/_odoc/reference/merlin-lib/merlin-lib.extend 46516 + -L 46517 + merlin-lib.index_format:../_doc/_odoc/reference/merlin-lib/merlin-lib.index_format 46518 + -L 46519 + merlin-lib.kernel:../_doc/_odoc/reference/merlin-lib/merlin-lib.kernel 46520 + -L 46521 + merlin-lib.ocaml_merlin_specific:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_merlin_specific 46522 + -L 46523 + merlin-lib.ocaml_parsing:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_parsing 46524 + -L 46525 + merlin-lib.ocaml_preprocess:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_preprocess 46526 + -L 46527 + merlin-lib.ocaml_typing:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_typing 46528 + -L 46529 + merlin-lib.ocaml_utils:../_doc/_odoc/reference/merlin-lib/merlin-lib.ocaml_utils 46530 + -L 46531 + merlin-lib.os_ipc:../_doc/_odoc/reference/merlin-lib/merlin-lib.os_ipc 46532 + -L 46533 + merlin-lib.query_commands:../_doc/_odoc/reference/merlin-lib/merlin-lib.query_commands 46534 + -L 46535 + merlin-lib.query_protocol:../_doc/_odoc/reference/merlin-lib/merlin-lib.query_protocol 46536 + -L 46537 + merlin-lib.sherlodoc:../_doc/_odoc/reference/merlin-lib/merlin-lib.sherlodoc 46538 + -L 46539 + merlin-lib.utils:../_doc/_odoc/reference/merlin-lib/merlin-lib.utils 46540 + -L 46541 + mime_printer:../_doc/_odoc/reference/mime_printer/mime_printer 46542 + -L 46543 + mtime:../_doc/_odoc/reference/mtime/mtime 46544 + -L 46545 + mtime.clock:../_doc/_odoc/reference/mtime/mtime.clock 46546 + -L 46547 + ocaml-compiler-libs.bytecomp:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.bytecomp 46548 + -L 46549 + ocaml-compiler-libs.common:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.common 46550 + -L 46551 + ocaml-compiler-libs.shadow:../_doc/_odoc/reference/ocaml-compiler-libs/ocaml-compiler-libs.shadow 46552 + -L 46553 + findlib.internal:../_doc/_odoc/reference/ocamlfind/findlib.internal 46554 + -L 46555 + ocamlgraph:../_doc/_odoc/reference/ocamlgraph/ocamlgraph 46556 + -L 46557 + ocaml_intrinsics_kernel:../_doc/_odoc/reference/ocaml_intrinsics_kernel/ocaml_intrinsics_kernel 46558 + -L 46559 + compiler-libs.bytecomp:../_doc/_odoc/reference/ocaml-variants/compiler-libs.bytecomp 46560 + -L 46561 + compiler-libs.common:../_doc/_odoc/reference/ocaml-variants/compiler-libs.common 46562 + -L 46563 + compiler-libs.optcomp:../_doc/_odoc/reference/ocaml-variants/compiler-libs.optcomp 46564 + -L 46565 + compiler-libs.toplevel:../_doc/_odoc/reference/ocaml-variants/compiler-libs.toplevel 46566 + -L 46567 + runtime_events:../_doc/_odoc/reference/ocaml-variants/runtime_events 46568 + -L 46569 + stdlib:../_doc/_odoc/reference/ocaml-variants/stdlib 46570 + -L 46571 + str:../_doc/_odoc/reference/ocaml-variants/str 46572 + -L 46573 + threads:../_doc/_odoc/reference/ocaml-variants/threads 46574 + -L 46575 + unix:../_doc/_odoc/reference/ocaml-variants/unix 46576 + -L 46577 + odoc-admonition-extension.impl:../_doc/_odoc/reference/odoc-admonition-extension/odoc-admonition-extension.impl 46578 + -L 46579 + deprecated:../_doc/_odoc/reference/odoc/deprecated 46580 + -L 46581 + odoc-docsite.impl:../_doc/_odoc/reference/odoc-docsite/odoc-docsite.impl 46582 + -L 46583 + odoc-dot-extension.impl:../_doc/_odoc/reference/odoc-dot-extension/odoc-dot-extension.impl 46584 + -L 46585 + odoc-driver:../_doc/_odoc/reference/odoc-driver/odoc-driver 46586 + -L 46587 + odoc-interactive-extension.impl:../_doc/_odoc/reference/odoc-interactive-extension/odoc-interactive-extension.impl 46588 + -L 46589 + odoc-jons-plugins.impl:../_doc/_odoc/reference/odoc-jons-plugins/odoc-jons-plugins.impl 46590 + -L 46591 + odoc-mermaid-extension.impl:../_doc/_odoc/reference/odoc-mermaid-extension/odoc-mermaid-extension.impl 46592 + -L 46593 + odoc-msc-extension.impl:../_doc/_odoc/reference/odoc-msc-extension/odoc-msc-extension.impl 46594 + -L 46595 + odoc.document:../_doc/_odoc/reference/odoc/odoc.document 46596 + -L 46597 + odoc.examples:../_doc/_odoc/reference/odoc/odoc.examples 46598 + -L 46599 + odoc.extension_api:../_doc/_odoc/reference/odoc/odoc.extension_api 46600 + -L 46601 + odoc.extension_registry:../_doc/_odoc/reference/odoc/odoc.extension_registry 46602 + -L 46603 + odoc.html:../_doc/_odoc/reference/odoc/odoc.html 46604 + -L 46605 + odoc.html_support_files:../_doc/_odoc/reference/odoc/odoc.html_support_files 46606 + -L 46607 + odoc.index:../_doc/_odoc/reference/odoc/odoc.index 46608 + -L 46609 + odoc.json_index:../_doc/_odoc/reference/odoc/odoc.json_index 46610 + -L 46611 + odoc.latex:../_doc/_odoc/reference/odoc/odoc.latex 46612 + -L 46613 + odoc.loader:../_doc/_odoc/reference/odoc/odoc.loader 46614 + -L 46615 + odoc.manpage:../_doc/_odoc/reference/odoc/odoc.manpage 46616 + -L 46617 + odoc.markdown:../_doc/_odoc/reference/odoc/odoc.markdown 46618 + -L 46619 + odoc.model:../_doc/_odoc/reference/odoc/odoc.model 46620 + -L 46621 + odoc.model_desc:../_doc/_odoc/reference/odoc/odoc.model_desc 46622 + -L 46623 + odoc.ocamlary:../_doc/_odoc/reference/odoc/odoc.ocamlary 46624 + -L 46625 + odoc.occurrences:../_doc/_odoc/reference/odoc/odoc.occurrences 46626 + -L 46627 + odoc.odoc:../_doc/_odoc/reference/odoc/odoc.odoc 46628 + -L 46629 + odoc.odoc_utils:../_doc/_odoc/reference/odoc/odoc.odoc_utils 46630 + -L 46631 + odoc.search:../_doc/_odoc/reference/odoc/odoc.search 46632 + -L 46633 + odoc.search_html_frontend:../_doc/_odoc/reference/odoc/odoc.search_html_frontend 46634 + -L 46635 + odoc.syntax_highlighter:../_doc/_odoc/reference/odoc/odoc.syntax_highlighter 46636 + -L 46637 + odoc.xref2:../_doc/_odoc/reference/odoc/odoc.xref2 46638 + -L 46639 + odoc.xref_test:../_doc/_odoc/reference/odoc/odoc.xref_test 46640 + -L 46641 + odoc-parser:../_doc/_odoc/reference/odoc-parser/odoc-parser 46642 + -L 46643 + odoc-rfc-extension.impl:../_doc/_odoc/reference/odoc-rfc-extension/odoc-rfc-extension.impl 46644 + -L 46645 + odoc-scrollycode-extension.impl:../_doc/_odoc/reference/odoc-scrollycode-extension/odoc-scrollycode-extension.impl 46646 + -L 46647 + odoc-standalone.impl:../_doc/_odoc/reference/odoc-standalone/odoc-standalone.impl 46648 + -L 46649 + onnxrt:../_doc/_odoc/reference/onnxrt/onnxrt 46650 + -L 46651 + opam-core:../_doc/_odoc/reference/opam-core/opam-core 46652 + -L 46653 + opam-file-format:../_doc/_odoc/reference/opam-file-format/opam-file-format 46654 + -L 46655 + opam-format:../_doc/_odoc/reference/opam-format/opam-format 46656 + -L 46657 + optint:../_doc/_odoc/reference/optint/optint 46658 + -L 46659 + parsexp:../_doc/_odoc/reference/parsexp/parsexp 46660 + -L 46661 + patch:../_doc/_odoc/reference/patch/patch 46662 + -L 46663 + portable.kernel:../_doc/_odoc/reference/portable/portable.kernel 46664 + -L 46665 + ppx_assert.runtime-lib:../_doc/_odoc/reference/ppx_assert/ppx_assert.runtime-lib 46666 + -L 46667 + ppx_bench.config:../_doc/_odoc/reference/ppx_bench/ppx_bench.config 46668 + -L 46669 + ppx_bench.config_types:../_doc/_odoc/reference/ppx_bench/ppx_bench.config_types 46670 + -L 46671 + ppx_bench.runtime-lib:../_doc/_odoc/reference/ppx_bench/ppx_bench.runtime-lib 46672 + -L 46673 + ppx_compare.runtime-lib:../_doc/_odoc/reference/ppx_compare/ppx_compare.runtime-lib 46674 + -L 46675 + ppx_derivers:../_doc/_odoc/reference/ppx_derivers/ppx_derivers 46676 + -L 46677 + ppx_enumerate.runtime-lib:../_doc/_odoc/reference/ppx_enumerate/ppx_enumerate.runtime-lib 46678 + -L 46679 + ppx_hash.base_internalhash_types:../_doc/_odoc/reference/ppx_hash/ppx_hash.base_internalhash_types 46680 + -L 46681 + ppx_hash.runtime-lib:../_doc/_odoc/reference/ppx_hash/ppx_hash.runtime-lib 46682 + -L 46683 + ppx_here.runtime-lib:../_doc/_odoc/reference/ppx_here/ppx_here.runtime-lib 46684 + -L 46685 + ppx_inline_test.config:../_doc/_odoc/reference/ppx_inline_test/ppx_inline_test.config 46686 + -L 46687 + ppx_inline_test.runtime-lib:../_doc/_odoc/reference/ppx_inline_test/ppx_inline_test.runtime-lib 46688 + -L 46689 + ppxlib_ast.ast:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.ast 46690 + -L 46691 + ppxlib_ast.astlib:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.astlib 46692 + -L 46693 + ppxlib_ast.stdppx:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.stdppx 46694 + -L 46695 + ppxlib_ast.traverse_builtins:../_doc/_odoc/reference/ppxlib_ast/ppxlib_ast.traverse_builtins 46696 + -L 46697 + ppxlib_jane:../_doc/_odoc/reference/ppxlib_jane/ppxlib_jane 46698 + -L 46699 + ppxlib:../_doc/_odoc/reference/ppxlib/ppxlib 46700 + -L 46701 + ppxlib.print_diff:../_doc/_odoc/reference/ppxlib/ppxlib.print_diff 46702 + -L 46703 + ppxlib_register:../_doc/_odoc/reference/ppxlib_register/ppxlib_register 46704 + -L 46705 + ppx_portable.runtime:../_doc/_odoc/reference/ppx_portable/ppx_portable.runtime 46706 + -L 46707 + ppx_sexp_conv.runtime-lib:../_doc/_odoc/reference/ppx_sexp_conv/ppx_sexp_conv.runtime-lib 46708 + -L 46709 + progress:../_doc/_odoc/reference/progress/progress 46710 + -L 46711 + progress.engine:../_doc/_odoc/reference/progress/progress.engine 46712 + -L 46713 + progress.vector:../_doc/_odoc/reference/progress/progress.vector 46714 + -L 46715 + psq:../_doc/_odoc/reference/psq/psq 46716 + -L 46717 + re:../_doc/_odoc/reference/re/re 46718 + -L 46719 + rresult:../_doc/_odoc/reference/rresult/rresult 46720 + -L 46721 + sedlex:../_doc/_odoc/reference/sedlex/sedlex 46722 + -L 46723 + sexplib0:../_doc/_odoc/reference/sexplib0/sexplib0 46724 + -L 46725 + sexplib:../_doc/_odoc/reference/sexplib/sexplib 46726 + -L 46727 + sexp_type:../_doc/_odoc/reference/sexp_type/sexp_type 46728 + -L 46729 + sexp_type.grammar:../_doc/_odoc/reference/sexp_type/sexp_type.grammar 46730 + -L 46731 + sha:../_doc/_odoc/reference/sha/sha 46732 + -L 46733 + sherlodoc.db:../_doc/_odoc/reference/sherlodoc/sherlodoc.db 46734 + -L 46735 + sherlodoc.db_store:../_doc/_odoc/reference/sherlodoc/sherlodoc.db_store 46736 + -L 46737 + sherlodoc.query:../_doc/_odoc/reference/sherlodoc/sherlodoc.query 46738 + -L 46739 + sherlodoc.storage_js:../_doc/_odoc/reference/sherlodoc/sherlodoc.storage_js 46740 + -L 46741 + sherlodoc.storage_marshal:../_doc/_odoc/reference/sherlodoc/sherlodoc.storage_marshal 46742 + -L 46743 + splittable_random:../_doc/_odoc/reference/splittable_random/splittable_random 46744 + -L 46745 + stringext:../_doc/_odoc/reference/stringext/stringext 46746 + -L 46747 + swhid_core:../_doc/_odoc/reference/swhid_core/swhid_core 46748 + -L 46749 + terminal:../_doc/_odoc/reference/terminal/terminal 46750 + -L 46751 + terminal.ansi:../_doc/_odoc/reference/terminal/terminal.ansi 46752 + -L 46753 + tessera-geotessera-jsoo:../_doc/_odoc/reference/tessera-geotessera-jsoo/tessera-geotessera-jsoo 46754 + -L 46755 + tessera-geotessera:../_doc/_odoc/reference/tessera-geotessera/tessera-geotessera 46756 + -L 46757 + tessera-linalg:../_doc/_odoc/reference/tessera-linalg/tessera-linalg 46758 + -L 46759 + tessera-npy:../_doc/_odoc/reference/tessera-npy/tessera-npy 46760 + -L 46761 + tessera-viz-jsoo:../_doc/_odoc/reference/tessera-viz-jsoo/tessera-viz-jsoo 46762 + -L 46763 + tessera-viz:../_doc/_odoc/reference/tessera-viz/tessera-viz 46764 + -L 46765 + thread-table:../_doc/_odoc/reference/thread-table/thread-table 46766 + -L 46767 + time_now:../_doc/_odoc/reference/time_now/time_now 46768 + -L 46769 + tyxml:../_doc/_odoc/reference/tyxml/tyxml 46770 + -L 46771 + tyxml.functor:../_doc/_odoc/reference/tyxml/tyxml.functor 46772 + -L 46773 + unique:../_doc/_odoc/reference/unique/unique 46774 + -L 46775 + uring:../_doc/_odoc/reference/uring/uring 46776 + -L 46777 + uri:../_doc/_odoc/reference/uri/uri 46778 + -L 46779 + uucp:../_doc/_odoc/reference/uucp/uucp 46780 + -L 46781 + uutf:../_doc/_odoc/reference/uutf/uutf 46782 + -L 46783 + x-ocaml.lib:../_doc/_odoc/reference/x-ocaml/x-ocaml.lib 46784 + -L 46785 + x-ocaml.protocol:../_doc/_odoc/reference/x-ocaml/x-ocaml.protocol 46786 + -L 46787 + yojson:../_doc/_odoc/reference/yojson/yojson 46788 + -o 46789 + _odoc/notebooks/page-interactive_map_zarr.odocl) 46790 + (run 46791 + odoc 46792 + link 46793 + --warn-error 45464 46794 _odoc/notebooks/oxcaml/page-local.odoc 45465 46795 -P 45466 46796 site:_odoc ··· 61231 62561 _odoc/blog/2026/02/page-weeknotes-2026-08.odocl 61232 62562 _odoc/blog/2026/03/page-index.odocl 61233 62563 _odoc/blog/2026/03/page-open-source-and-ai.odocl 62564 + _odoc/blog/2026/03/page-review.odocl 61234 62565 _odoc/blog/2026/03/page-weeknotes-2026-09.odocl 61235 62566 _odoc/blog/2026/03/page-weeknotes-2026-10.odocl 61236 62567 _odoc/blog/2026/03/page-weeknotes-2026-11.odocl ··· 61252 62583 _odoc/notebooks/foundations/page-index.odocl 61253 62584 _odoc/notebooks/page-index.odocl 61254 62585 _odoc/notebooks/page-interactive_map.odocl 62586 + _odoc/notebooks/page-interactive_map_zarr.odocl 61255 62587 _odoc/notebooks/oxcaml/page-local.odocl 61256 62588 _odoc/projects/page-index.odocl 61257 62589 _odoc/reference/page-index.odocl) ··· 61313 62645 _odoc/blog/2026/02/page-weeknotes-2026-08.odocl 61314 62646 _odoc/blog/2026/03/page-index.odocl 61315 62647 _odoc/blog/2026/03/page-open-source-and-ai.odocl 62648 + _odoc/blog/2026/03/page-review.odocl 61316 62649 _odoc/blog/2026/03/page-weeknotes-2026-09.odocl 61317 62650 _odoc/blog/2026/03/page-weeknotes-2026-10.odocl 61318 62651 _odoc/blog/2026/03/page-weeknotes-2026-11.odocl ··· 61334 62667 _odoc/notebooks/foundations/page-index.odocl 61335 62668 _odoc/notebooks/page-index.odocl 61336 62669 _odoc/notebooks/page-interactive_map.odocl 62670 + _odoc/notebooks/page-interactive_map_zarr.odocl 61337 62671 _odoc/notebooks/oxcaml/page-local.odocl 61338 62672 _odoc/projects/page-index.odocl 61339 62673 _odoc/reference/page-index.odocl ··· 61904 63238 -o 61905 63239 _html 61906 63240 _odoc/blog/2026/03/page-open-source-and-ai.odocl) 63241 + (run 63242 + odoc 63243 + html-generate 63244 + --warn-error 63245 + --shell 63246 + jon-shell 63247 + --config 63248 + x-ocaml.universe=/_opam 63249 + -o 63250 + _html 63251 + _odoc/blog/2026/03/page-review.odocl) 61907 63252 (run 61908 63253 odoc 61909 63254 html-generate ··· 62145 63490 x-ocaml.universe=/_opam 62146 63491 -o 62147 63492 _html 63493 + _odoc/notebooks/page-interactive_map_zarr.odocl) 63494 + (run 63495 + odoc 63496 + html-generate 63497 + --warn-error 63498 + --shell 63499 + jon-shell 63500 + --config 63501 + x-ocaml.universe=/_opam 63502 + -o 63503 + _html 62148 63504 _odoc/notebooks/oxcaml/page-local.odocl) 62149 63505 (run 62150 63506 odoc ··· 62400 63756 _html/blog/2026/02/weeknotes-2026-08.html 62401 63757 _html/blog/2026/03/index.html 62402 63758 _html/blog/2026/03/open-source-and-ai.html 63759 + _html/blog/2026/03/review.html 62403 63760 _html/blog/2026/03/weeknotes-2026-09.html 62404 63761 _html/blog/2026/03/weeknotes-2026-10.html 62405 63762 _html/blog/2026/03/weeknotes-2026-11.html ··· 62421 63778 _html/notebooks/foundations/index.html 62422 63779 _html/notebooks/index.html 62423 63780 _html/notebooks/interactive_map.html 63781 + _html/notebooks/interactive_map_zarr.html 62424 63782 _html/notebooks/oxcaml/local.html 62425 63783 _html/projects/index.html 62426 63784 _html/reference/index.html ··· 62490 63848 blog/2026/02/weeknotes-2026-06.mld 62491 63849 blog/2026/02/weeknotes-2026-08.mld 62492 63850 blog/2026/03/open-source-and-ai.mld 63851 + blog/2026/03/review.mld 62493 63852 blog/2026/03/weeknotes-2026-09.mld 62494 63853 blog/2026/03/weeknotes-2026-10.mld 62495 63854 blog/2026/03/weeknotes-2026-11.mld
+8 -2
x-ocaml/src/merlin_ext.ml
··· 51 51 to_ = completions.to_ - pre_len; 52 52 } 53 53 | Protocol.Typed_enclosings typed_enclosings -> 54 + let doc_len = String.length doc in 54 55 Typed_enclosings 55 - (List.map 56 - (fun (loc, a, b) -> (fix_loc pre_len loc, a, b)) 56 + (List.filter_map 57 + (fun (loc, a, b) -> 58 + let loc = fix_loc pre_len loc in 59 + let from = loc.loc_start.pos_cnum in 60 + let to_ = loc.loc_end.pos_cnum in 61 + if from < 0 || to_ > doc_len then None 62 + else Some (loc, a, b)) 57 63 typed_enclosings) 58 64 | Protocol.Added_cmis -> msg 59 65