Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cache_cleanup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand Down
5 changes: 0 additions & 5 deletions mbo/diff/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ int main() {

return 0;
}

```

## 2. Command-Line Tool Reference: `unified_diff`
Expand All @@ -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:
Expand All @@ -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
Expand Down Expand Up @@ -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

```
8 changes: 6 additions & 2 deletions mbo/hash/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
<!-- IMPORTANT: Everything between the markers is generated per machine by `publish` from the committed bundles - regenerate it, don't hand-edit! -->

<!-- BEGIN mbo/hash benchmark results (generated by `hash_benchmark_report.py publish`; DO NOT EDIT) -->
<!-- bundles: mbo/hash/measurements/data/linux-x86-64-amd-ryzen-9-9950x-16-core-processor_10c_clang-22_29b54ccd_20260716_194643.tgz mbo/hash/measurements/data/linux-x86-64-amd-ryzen-9-9950x-16-core-processor_10c_gcc-15_29b54ccd_20260715_182532.tgz mbo/hash/measurements/data/macos-arm64-apple-m5-pro_18c_clang-21_29b54ccd_20260715_191140.tgz -->
Expand All @@ -323,6 +322,11 @@ committed bundles - regenerate it, don't hand-edit:

<!-- AMD Ryzen 9 9950X 16-Core Processor · Linux · x86_64 · 10-core · clang-22 · 29b54ccd; mean of the 3 best of 9 reps -->

#### 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)
Expand Down
10 changes: 10 additions & 0 deletions mbo/hash/measurements/hash_benchmark_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"<!-- {label}; {_agg_label(ctx)} -->"]
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']]})"]
Expand Down
2 changes: 1 addition & 1 deletion mbo/mope/mope_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ INI groups are used as sections. They can build ahierarchy:

Example:

```
```text
[person]
id=0
[person.contact]
Expand Down
Loading