commits
E600: Add 19 x509 test .mli files, move Alcotest.run out of
test_outgoing.ml and test_x509_eio.ml into test.ml runners,
trim test_comments.mli to export only suite.
E617: Rename suites to match filenames (module_alias, warning).
E605 fixes (25 new test files):
- monopam: test_lint (Lint module types, issue construction)
- irmin: test_irmin (Hash roundtrips, commit types, Tree API)
- ocaml-tls: test_core, test_state, test_x509_eio
- ocaml-x509 (19 files with RFC test vectors): pem, distinguished_name,
host, algorithm, certificate, validation, extension, general_name,
key_type, public_key, private_key, signing_request, crl,
authenticator, asn_grammars, ocsp, p12, rc2, registry
E617 fixes (2 naming): module_alias_parsing, warning_parse
Adds 108 missing dependency declarations across 52 packages.
Most common missing dep was fmt (38 packages), followed by wire,
eio, and bytesrw. Also improves lint output with tty tables and
better subtree filtering display.
ocaml-tty (92→0):
- E205: Printf→Fmt in gen_corpus.ml, test_progress.ml, minimal_progress.ml
- E330: rename tree_view→view in tree.ml
- E400/E405/E410: add missing docs in color.mli, style.mli, border.mli,
table.mli, width.mli; fuzz_tty.mli module doc
- E600/E617: create 9 test_*.mli files; lowercase all suite names
- E618: add explicit modules list to test stanza in test/dune
- E718/E725: create fuzz/fuzz.ml runner; suite name "tty"
ocaml-wire (109→0):
- E005: extract parse_bf_field, check_all_zeros, encode_bf_accum helpers
- E010: extract emit_field_constraint helpers to reduce nesting in gen_c.ml
- E205: Format→Fmt in test_wire.ml (40 occurrences)
- E216: invalid_arg (Fmt.str) → Fmt.invalid_arg
- E330: rename wire_size_of_* → size_of_* in wire.ml/wire.mli
- E400/E405/E410: add docs in fuzz_wire.mli, diff_gen.mli, wire.mli, wire_c.mli
- E605/E600: create test/c, test/diff-gen, test/diff test files + mlis
Fix callers of renamed APIs across monorepo:
- Tty.Progress.create → Tty.Progress.v
- Tty.Panel.create_lines → Tty.Panel.lines
- Tty.Table.create → Tty.Table.v
- Xdge.create → Xdge.v
- Add missing .ocamlformat to ocaml-linkedin and ocaml-qemu
- Lowercase test suite names in prune: Cache→cache, Locate→locate,
Module alias parsing, Warning.parse
- Fix space-block suite name: storage→space_block
- Fix space/test_build suite name: initramfs→build
Fix Merlin.create→Merlin.v in prune/lib to match ocaml-merlin API rename.
Fix space-test/dune-project: remove duplicate root package, add missing
space-test package stanza so dune fmt passes.
Modernize the memtrace package for the monorepo: convert Printf to Fmt,
restructure tests into alcotest pattern with suite exports, add cmdliner
term (--memtrace, --memtrace-rate, --memtrace-context), and add
argv-peeking trace_if_requested. Integrate Memtrace.term into setup
terms across all binaries that previously called trace_if_requested().
Add memtrace instrumentation to merlint, prune, crow, bottler, agent,
precommit, and uniboot. Refactor merlint's Command module from
Unix.open_process_in to Eio.Process.spawn for proper fiber scheduling.
Log external commands at INFO level (-v) and command output at DEBUG
level (-vv). Show dune build stderr in -vv mode instead of suppressing
with 2>/dev/null.
- Share Merlin backend across files in merlint and prune analysis
- Add pipeline caching for outline/dump/enclosing queries (local-only)
- Use fresh pipelines for occurrences queries (cross-file index)
- Add --no-build/-B flag to merlint to skip automatic dune build
- Fix docs unit test for bad function format detection
- Add Eio-based sequential test runner to monopam with verbose output
- Update merlint cram tests to use -B flag for faster test runs
- License -> Licence
- color -> colour (in prose, not API/code)
- behavior -> behaviour
- analyze -> analyse
- organized -> organised
- Remove marketing buzzwords (leveraging)
- Remove emojis from prose
Convert all packages from:
(source (uri https://tangled.org/handle/repo))
to:
(source (tangled handle/repo))
This uses dune 3.21's native tangled support for cleaner source
declarations. Also removes redundant homepage/bug_reports fields
that are auto-generated from tangled sources.
Total is now required, default to 0 when not provided.
Refactor to use bytesrw primitives directly:
- write is now primary, using Writer.write_bytes + Writer.write_string
- encode wraps write with a buffer-backed Writer
- read uses Reader.sniff for efficient bulk reading
- decode wraps read with a string-backed Reader
Eliminates string concatenation allocation in encode and
byte-by-byte reading overhead in read.
git-subtree-dir: prune
git-subtree-mainline: 2d4007a9bcc04d802171379a76bbe6051110b745
- Rename directory: ocaml-build-info -> monopam-info
- Rename module: Mono_info -> Monopam_info
- Rename package: ocaml-build-info -> monopam-info
- Update all consumers to use new module name
- Remove "Skipping pull" log noise from push output
- Add set -eo pipefail to all multi-line shell scripts
- Quote ${{ inputs.binary }} to handle special characters
- Use explicit git push origin HEAD instead of bare git push
- Remove unused checksums concatenation step
git-subtree-dir: prune
git-subtree-mainline: e0468ff04cf75f688a12830730f2a73f68924728
Rename ocaml-version to ocaml-build-info with Mono_info module.
All homebrew binaries now use Mono_info.version for consistent
version reporting across the monorepo.
The library wraps dune-build-info and falls back to git hash
in dev mode. Can be extended with SBOM or other metadata later.
Add public_api.t testing that --public marks files as protected APIs:
dry-run labels public unused exports separately, force mode skips them.
Add include.t testing that include statements (top-level include module
type of, include S in module sigs) are handled correctly: unused values
alongside includes are removable, include statements are preserved.
- Remove blanket scripts/ gitignore, only ignore secrets (.env)
- Add merlint to homebrew config and formula
- Release script now updates SHA256 checksums in formulas automatically
and syncs/commits/pushes the tap repo
- prune: Replace ppxlib with compiler-libs.common, converting
Ast_traverse.iter visitors to Ast_iterator.default_iterator
- prune: Adapt to OCaml 5.3 Longident changes (located strings)
- Remove ppxlib from root dune-project, prune dune-project and opam
- Clean up stale ppxlib references in merlint comments and docs
Replace legacy dependencies with modern alternatives:
- jsont: Replace yojson with typed JSON schemas for merlin responses
(outline_response, occurrences_response with proper codecs)
- tty: Replace manual ANSI codes with Tty.Style for terminal colors
- vlog: Replace logs.cli with vlog for Cmdliner-integrated logging
- Result.Syntax: Remove rresult, use OCaml 5.x built-in Result module
Add comprehensive tests for JSON parsing (26 new tests):
- Outline response parsing (null, empty, single, multiple, nested)
- Occurrences response parsing (null, empty, path relativization)
- Location operations (construction, merge, extend)
- Warning precision and symbol kind mapping
Update cram tests for new vlog output format.
Require cmdliner >= 1.3.0 for Cmd.Env.info API
Require logs >= 0.8.0 for ~env parameter support
Remove duplicate logs constraint
E605 fixes (25 new test files):
- monopam: test_lint (Lint module types, issue construction)
- irmin: test_irmin (Hash roundtrips, commit types, Tree API)
- ocaml-tls: test_core, test_state, test_x509_eio
- ocaml-x509 (19 files with RFC test vectors): pem, distinguished_name,
host, algorithm, certificate, validation, extension, general_name,
key_type, public_key, private_key, signing_request, crl,
authenticator, asn_grammars, ocsp, p12, rc2, registry
E617 fixes (2 naming): module_alias_parsing, warning_parse
ocaml-tty (92→0):
- E205: Printf→Fmt in gen_corpus.ml, test_progress.ml, minimal_progress.ml
- E330: rename tree_view→view in tree.ml
- E400/E405/E410: add missing docs in color.mli, style.mli, border.mli,
table.mli, width.mli; fuzz_tty.mli module doc
- E600/E617: create 9 test_*.mli files; lowercase all suite names
- E618: add explicit modules list to test stanza in test/dune
- E718/E725: create fuzz/fuzz.ml runner; suite name "tty"
ocaml-wire (109→0):
- E005: extract parse_bf_field, check_all_zeros, encode_bf_accum helpers
- E010: extract emit_field_constraint helpers to reduce nesting in gen_c.ml
- E205: Format→Fmt in test_wire.ml (40 occurrences)
- E216: invalid_arg (Fmt.str) → Fmt.invalid_arg
- E330: rename wire_size_of_* → size_of_* in wire.ml/wire.mli
- E400/E405/E410: add docs in fuzz_wire.mli, diff_gen.mli, wire.mli, wire_c.mli
- E605/E600: create test/c, test/diff-gen, test/diff test files + mlis
Fix callers of renamed APIs across monorepo:
- Tty.Progress.create → Tty.Progress.v
- Tty.Panel.create_lines → Tty.Panel.lines
- Tty.Table.create → Tty.Table.v
- Xdge.create → Xdge.v
Modernize the memtrace package for the monorepo: convert Printf to Fmt,
restructure tests into alcotest pattern with suite exports, add cmdliner
term (--memtrace, --memtrace-rate, --memtrace-context), and add
argv-peeking trace_if_requested. Integrate Memtrace.term into setup
terms across all binaries that previously called trace_if_requested().
Add memtrace instrumentation to merlint, prune, crow, bottler, agent,
precommit, and uniboot. Refactor merlint's Command module from
Unix.open_process_in to Eio.Process.spawn for proper fiber scheduling.
Log external commands at INFO level (-v) and command output at DEBUG
level (-vv). Show dune build stderr in -vv mode instead of suppressing
with 2>/dev/null.
- Share Merlin backend across files in merlint and prune analysis
- Add pipeline caching for outline/dump/enclosing queries (local-only)
- Use fresh pipelines for occurrences queries (cross-file index)
- Add --no-build/-B flag to merlint to skip automatic dune build
- Fix docs unit test for bad function format detection
- Add Eio-based sequential test runner to monopam with verbose output
- Update merlint cram tests to use -B flag for faster test runs
Refactor to use bytesrw primitives directly:
- write is now primary, using Writer.write_bytes + Writer.write_string
- encode wraps write with a buffer-backed Writer
- read uses Reader.sniff for efficient bulk reading
- decode wraps read with a string-backed Reader
Eliminates string concatenation allocation in encode and
byte-by-byte reading overhead in read.
Add public_api.t testing that --public marks files as protected APIs:
dry-run labels public unused exports separately, force mode skips them.
Add include.t testing that include statements (top-level include module
type of, include S in module sigs) are handled correctly: unused values
alongside includes are removable, include statements are preserved.
- prune: Replace ppxlib with compiler-libs.common, converting
Ast_traverse.iter visitors to Ast_iterator.default_iterator
- prune: Adapt to OCaml 5.3 Longident changes (located strings)
- Remove ppxlib from root dune-project, prune dune-project and opam
- Clean up stale ppxlib references in merlint comments and docs
Replace legacy dependencies with modern alternatives:
- jsont: Replace yojson with typed JSON schemas for merlin responses
(outline_response, occurrences_response with proper codecs)
- tty: Replace manual ANSI codes with Tty.Style for terminal colors
- vlog: Replace logs.cli with vlog for Cmdliner-integrated logging
- Result.Syntax: Remove rresult, use OCaml 5.x built-in Result module
Add comprehensive tests for JSON parsing (26 new tests):
- Outline response parsing (null, empty, single, multiple, nested)
- Occurrences response parsing (null, empty, path relativization)
- Location operations (construction, merge, extend)
- Warning precision and symbol kind mapping
Update cram tests for new vlog output format.