A fork of mtelver's day10 project

OxCaml compat: cppo preprocessing, version guards, and new exercises

- Add cppo preprocessing for merlin-js and x-ocaml workers to support
conditional compilation with OXCAML flag
- Guard day10 packages with enabled_if >= 5.3.0 since they need recent OCaml
- Remove fatal odoc warnings from dune-workspace (handled per-package now)
- Bump merlin-js dune lang to 3.17
- Add warning suppression flags where needed (-w -58, -w -67)
- Add interactive extension exercise pages (FOCS 2020/2024/2025, OxCaml
stack allocation)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+14
+1
analysis/dune
··· 1 1 (executables 2 2 (names universe_compat real_world conflict_analysis) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (libraries unix))
+1
bin/dune
··· 1 1 (executable 2 2 (public_name day10) 3 3 (name main) 4 + (enabled_if (>= %{ocaml_version} 5.3.0)) 4 5 (package day10) 5 6 (libraries opam-0install yojson ppx_deriving_yojson.runtime cmdliner dockerfile day10_lib) 6 7 (preprocess
+2
dune-project
··· 17 17 18 18 (package 19 19 (name day10) 20 + (allow_empty) 20 21 (synopsis "A short synopsis") 21 22 (description "A longer description") 22 23 (depends ··· 31 32 32 33 (package 33 34 (name day10-web) 35 + (allow_empty) 34 36 (synopsis "Web dashboard for day10 documentation status") 35 37 (description "Status dashboard for package maintainers and operators") 36 38 (depends
+1
lib/dune
··· 1 1 (library 2 2 (name day10_lib) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (libraries unix str yojson) 4 5 (modules atomic_swap build_lock gc progress run_log))
+6
tests/unit/dune
··· 1 1 (executable 2 2 (name test_atomic_swap) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (libraries day10_lib)) 4 5 5 6 (executable 6 7 (name test_gc) 8 + (enabled_if (>= %{ocaml_version} 5.3.0)) 7 9 (libraries day10_lib)) 8 10 9 11 (executable 10 12 (name test_run_log) 13 + (enabled_if (>= %{ocaml_version} 5.3.0)) 11 14 (libraries day10_lib unix yojson)) 12 15 13 16 (executable 14 17 (name test_run_data) 18 + (enabled_if (>= %{ocaml_version} 5.3.0)) 15 19 (libraries day10_web_data unix yojson)) 16 20 17 21 (executable 18 22 (name test_package_data) 23 + (enabled_if (>= %{ocaml_version} 5.3.0)) 19 24 (libraries day10_web_data unix)) 20 25 21 26 ; Run all tests with: dune runtest 22 27 (rule 23 28 (alias runtest) 29 + (enabled_if (>= %{ocaml_version} 5.3.0)) 24 30 (deps test_atomic_swap.exe test_gc.exe test_run_log.exe test_run_data.exe test_package_data.exe) 25 31 (action (progn 26 32 (run ./test_atomic_swap.exe)
+1
web/data/dune
··· 1 1 (library 2 2 (name day10_web_data) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (libraries unix yojson day10_lib) 4 5 (modules run_data package_data layer_data lock_data progress_data))
+1
web/dune
··· 1 1 (executable 2 2 (name main) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (public_name day10-web) 4 5 (package day10-web) 5 6 (libraries dream day10_lib day10_web_data day10_web_views cmdliner unix yojson))
+1
web/views/dune
··· 1 1 (library 2 2 (name day10_web_views) 3 + (enabled_if (>= %{ocaml_version} 5.3.0)) 3 4 (libraries dream day10_web_data) 4 5 (modules layout dashboard runs packages live_log))