Repository navigation
Conversation
Changelog🏠 Internal
Semantic Diff4 commits · Full page Check for dead code in CI7ac8758 · cknitt + Claude · Nov 06, 2026, 20:53 UTC The build-compiler job that builds the playground now runs make dead-code after the playground build, so new dead code fails CI. It installs reanalyze 2.27.0, the first release that analyzes the native and the browser build trees together, from its tag until the opam-repository package is merged. Build reanalyze from its tag instead of installing it with opam08bd184 · cknitt + Claude · Nov 06, 2026, 21:27 UTC In CI, opam install reanalyze recompiled the whole restored switch (62 packages, about 4 minutes): opam misses the musl system package of the static switch and treats that as a system change. The step now clones the v2.27.0 tag and builds reanalyze with dune in the existing switch (seconds), and passes it to make dead-code with REANALYZE. This also works unchanged once the opam package is published. Run opam exec from the repository when building reanalyze58ed055 · cknitt + Claude · Nov 06, 2026, 21:40 UTC CI's opam switch is local to the repository, and opam exec finds it from the current directory: run from inside the reanalyze clone it failed with "No switch is currently set". opam exec now runs from the repository and changes into the clone itself. Make reanalyze a test dependency23d192d · cknitt + Claude · Nov 07, 2026, 16:01 UTC reanalyze 2.27.0 is on opam now, so it becomes a pinned test dependency in rescript.opam like ocamlformat and ounit2 (not on Windows, like js_of_ocaml: the check runs on Linux). opam install . --deps-only --with-test installs it for developers, and CI builds it into the cached switch, so the dead-code step just runs make dead-code instead of building reanalyze from its tag. |
rescript
@rescript/belt
@rescript/darwin-arm64
@rescript/linux-arm64
@rescript/linux-x64
@rescript/runtime
@rescript/win32-x64
commit: |
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
✅ Compiler benchmarksAllocated wordsIn total: 338,768,729 → 338,768,729 (±0.00%). None of the 257 benchmarks changed by 0.1% or more. InstructionsIn total: 9,675,830,640 → 9,675,830,640 (±0.00%). None of the 33 benchmarks changed by 0.1% or more. Pull request 23d192d compared with base dfc7836 in this run. |
The build-compiler job that builds the playground now runs make dead-code after the playground build, so new dead code fails CI. It installs reanalyze 2.27.0, the first release that analyzes the native and the browser build trees together, from its tag until the opam-repository package is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gLDo8mBJKpNE25WAwT Signed-off-by: Christoph Knittel <ck@cca.io>
In CI, opam install reanalyze recompiled the whole restored switch (62 packages, about 4 minutes): opam misses the musl system package of the static switch and treats that as a system change. The step now clones the v2.27.0 tag and builds reanalyze with dune in the existing switch (seconds), and passes it to make dead-code with REANALYZE. This also works unchanged once the opam package is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gLDo8mBJKpNE25WAwT Signed-off-by: Christoph Knittel <ck@cca.io>
CI's opam switch is local to the repository, and opam exec finds it from the current directory: run from inside the reanalyze clone it failed with "No switch is currently set". opam exec now runs from the repository and changes into the clone itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gLDo8mBJKpNE25WAwT Signed-off-by: Christoph Knittel <ck@cca.io>
reanalyze 2.27.0 is on opam now, so it becomes a pinned test dependency in rescript.opam like ocamlformat and ounit2 (not on Windows, like js_of_ocaml: the check runs on Linux). opam install . --deps-only --with-test installs it for developers, and CI builds it into the cached switch, so the dead-code step just runs make dead-code instead of building reanalyze from its tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gLDo8mBJKpNE25WAwT Signed-off-by: Christoph Knittel <ck@cca.io>
Stacked on #9208. Runs
make dead-codein CI, so new dead code in the OCaml sources fails the build.reanalyze becomes a test dependency.
rescript.opam(generated fromdune-project) gets"reanalyze" {os != "win32" & with-test & = "2.27.0"}, alongside the other pinned test tools such asocamlformat,ounit2andjs_of_ocaml.opam install . --deps-only --with-testinstalls it for developers, andmake dead-codefindsreanalyze.exeonPATH.js_of_ocaml, because the check runs on Linux.The CI step. It runs in the
build-compilerjob entry that builds the playground (ubuntu-26.04-arm,build_playground: true), right after the playground build. That entry has the browser-profile dependencies the check needs: it analyzes the native and the browser build trees together, so code used only by the playground counts as live.setup-ocamlinstalls reanalyze with the other--with-testdependencies into the cached switch. The cache key hashes the opam files, so the switch rebuilds once for this change.opam exec -- make dead-code.An earlier version of this PR ran
opam install reanalyzein the job. That recompiled the whole restored switch (62 packages, about 4 minutes): opam misses the static switch's musl system package after the cache restore and treats it as a system change. As a declared dependency, reanalyze is installed when the switch is built, so that doesn't happen.On this stack,
make dead-codereports 0 issues with the opam-installed reanalyze 2.27.0.🤖 Generated with Claude Code
https://claude.ai/code/session_01Kbf3gLDo8mBJKpNE25WAwT