diff --git a/.github/workflows/cache_cleanup.yml b/.github/workflows/cache_cleanup.yml index d72a512..aac9c54 100644 --- a/.github/workflows/cache_cleanup.yml +++ b/.github/workflows/cache_cleanup.yml @@ -18,7 +18,7 @@ jobs: # But for simplicity and safety we only work on the reported branch. # On the main branch this `cache_cleanup` workflow may not delete the last version as that # that would mean that the `test` workflow triggered for the same state will not find any - # caches. That is because the the `cache_cleanup` workflow is much faster and will most + # caches. That is because the `cache_cleanup` workflow is much faster and will most # likely finish during the initial `pre-commit` job of the `test` workflow. # Not that last version for the head ref means last cache version per cache key prefix. run: | diff --git a/mbo/diff/README.md b/mbo/diff/README.md index d1bd83b..b46fdb0 100644 --- a/mbo/diff/README.md +++ b/mbo/diff/README.md @@ -64,7 +64,6 @@ int main() { return 0; } - ``` ## 2. Command-Line Tool Reference: `unified_diff` @@ -89,7 +88,6 @@ Build the tool with Bazel: ```bash bazel build //mbo/diff:unified_diff - ``` Perform a custom, whitespace-insensitive diff with 5 context lines: @@ -100,7 +98,6 @@ Perform a custom, whitespace-insensitive diff with 5 context lines: --ignore-space-change \ --ignore-blank-lines \ path/to/original.txt path/to/modified.txt - ``` ## 3. Bazel Integration: `diff_test` Macro @@ -148,12 +145,10 @@ diff_test( ignore_blank_lines = True, unified = 5, ) - ``` Run the validation test with: ```bash bazel test //path/to/package:verify_config_generation - ``` diff --git a/mbo/hash/README.md b/mbo/hash/README.md index a97f919..ecb9594 100644 --- a/mbo/hash/README.md +++ b/mbo/hash/README.md @@ -313,8 +313,7 @@ Two views per hash width: is always represented; the unpredictable length order defeats the size-dispatch branch predictor, so the cost is measured, not modelled. -Everything between the markers is generated per machine by `publish` from the -committed bundles - regenerate it, don't hand-edit: + @@ -323,6 +322,11 @@ committed bundles - regenerate it, don't hand-edit: +#### Extra build configuration + +- **config**: `clang` +- **copt**: `-march=znver5` + ![mbo/hash 64-bit latency, AMD Ryzen 9 9950X 16-Core Processor · Linux · x86_64 · 10-core · clang-22 · 29b54ccd](measurements/charts/linux-x86-64-amd-ryzen-9-9950x-16-core-processor_clang-22_latency64.svg) #### 64-bit latency (ns/hash at exact length, mean of the 3 best of 9 reps; lower is better) diff --git a/mbo/hash/measurements/hash_benchmark_report.py b/mbo/hash/measurements/hash_benchmark_report.py index 67a5f89..9a8d40f 100755 --- a/mbo/hash/measurements/hash_benchmark_report.py +++ b/mbo/hash/measurements/hash_benchmark_report.py @@ -1229,10 +1229,20 @@ def dispatch_publish(args, stamp): full = _results_from_bundle(bundle_path) # re-distilled from the bundle's raw (see B) ctx = full.get("context", {}) label = _machine_label(ctx) + # We did the measurement before the extras were saved. + # if label == "AMD Ryzen 9 9950X 16-Core Processor · Linux · x86_64 · 10-core · clang-22 · 29b54ccd": + # ctx["config"] = ["clang"] + # ctx["copt"] = ["-march=znver5"] charts = dict(_render_charts(full, _bundle_stem(ctx), args.charts_dir, label)) # tag -> filename # `### {label}` heads the block; each section is its chart (if any) # immediately followed by its table, in layout order. parts = [f"### {label}", "", f""] + extras = [] + for extra_key in ["config", "copt", "host_copt"]: + if ctx.get(extra_key): + extras += [f"- **{extra_key}**: " + ", ".join([f"`{x}`" for x in ctx[extra_key]])] + if extras: + parts += ["", "#### Extra build configuration", ""] + extras for section in _sections(full): if section["tag"] in charts: parts += ["", f"![mbo/hash {section['title']}, {label}]({rel}/{charts[section['tag']]})"] diff --git a/mbo/mope/mope_main.cc b/mbo/mope/mope_main.cc index e769e5a..bcce422 100644 --- a/mbo/mope/mope_main.cc +++ b/mbo/mope/mope_main.cc @@ -256,7 +256,7 @@ INI groups are used as sections. They can build ahierarchy: Example: -``` +```text [person] id=0 [person.contact]