this repo has no description
0
fork

Configure Feed

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

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>

+23 -2
+1 -1
dune-project
··· 1 - (lang dune 3.0) 1 + (lang dune 3.17) 2 2 3 3 (name merlin-js)
+1
src/extension/dune
··· 1 1 (library 2 2 (name merlin_codemirror) 3 3 (public_name merlin-js.code-mirror) 4 + (flags (:standard -w -67)) 4 5 (libraries 5 6 brr 6 7 merlin_client
+15
src/worker/dune
··· 1 + ; Generate worker.ml from worker.cppo.ml with conditional OXCAML flag 2 + 3 + (rule 4 + (targets worker.ml) 5 + (deps (:x worker.cppo.ml)) 6 + (enabled_if (not %{ocaml-config:ox})) 7 + (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{x} -o %{targets}))) 8 + 9 + (rule 10 + (targets worker.ml) 11 + (deps (:x worker.cppo.ml)) 12 + (enabled_if %{ocaml-config:ox}) 13 + (action (run %{bin:cppo} -V OCAML:%{ocaml_version} -D OXCAML %{x} -o %{targets}))) 14 + 1 15 (library 2 16 (name worker) 3 17 (public_name merlin-js.worker) 18 + (ocamlopt_flags (:standard -w -58)) 4 19 (js_of_ocaml 5 20 (javascript_files stubs.js)) 6 21 (preprocess (pps js_of_ocaml-ppx))
+6 -1
src/worker/worker.ml src/worker/worker.cppo.ml
··· 50 50 | None -> ()) dcs.dcs_toplevel_modules; 51 51 52 52 let new_load ~allow_hidden ~unit_name = 53 - let filename = filename_of_module unit_name in 53 + #if defined OXCAML 54 + let unit_name_str = Ocaml_typing.Compilation_unit.Name.to_string unit_name in 55 + #else 56 + let unit_name_str = unit_name in 57 + #endif 58 + let filename = filename_of_module unit_name_str in 54 59 let fs_name = Filename.(concat stdlib_path filename) in 55 60 (* Check if it's already been downloaded. This will be the 56 61 case for all toplevel cmis. Also check whether we're supposed