docs: refresh README, crate READMEs and reference docs; fact-check every claim #22
@@ -254,8 +254,9 @@ python -m pytest crates/clawhdf5-py/tests # compares with h5py; editing tes
|
|||||||
- Run on an idle machine (1-minute load average below 2; wait otherwise),
|
- Run on an idle machine (1-minute load average below 2; wait otherwise),
|
||||||
alternate base and candidate binaries for A/B comparisons, and record date,
|
alternate base and candidate binaries for A/B comparisons, and record date,
|
||||||
machine, commit and command with every number in `BENCHMARKS.md`.
|
machine, commit and command with every number in `BENCHMARKS.md`.
|
||||||
- `scripts/run-benchmarks.sh` is stale (it benchmarks `rustyhdf5-format` and
|
- `BENCHMARKS.md` is written by hand from dated runs; no script regenerates
|
||||||
overwrites `BENCHMARKS.md`) — do not run it.
|
it (the old `scripts/run-benchmarks.sh`, which benchmarked the pre-rename
|
||||||
|
`rustyhdf5-format` and overwrote the file, was removed on 2026-09-28).
|
||||||
|
|
||||||
### CLI
|
### CLI
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -29,7 +29,8 @@
|
|||||||
# - Use wasm-pack with a custom bench harness
|
# - Use wasm-pack with a custom bench harness
|
||||||
# - Replace std::time::Instant with web_sys::Performance::now()
|
# - Replace std::time::Instant with web_sys::Performance::now()
|
||||||
# - Replace TempDir/HDF5 I/O with an in-memory backend (separate effort)
|
# - Replace TempDir/HDF5 I/O with an in-memory backend (separate effort)
|
||||||
# See ROADMAP.md §WASM for the full scope.
|
# Browser reads are tested (not benchmarked) by
|
||||||
|
# examples/wasm-viewer/test/run.sh; see examples/wasm-viewer/README.md.
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-accel"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "SIMD-accelerated operations for rustyhdf5"
|
description = "SIMD kernels (AVX2, NEON) used by clawhdf5 — pure Rust"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-android"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "Android JNI bridge for edgehdf5-memory HDF5 backend"
|
description = "Android JNI bindings for clawhdf5 agent memory"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-derive"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "Derive macros for rustyhdf5 HDF5 traits"
|
description = "Derive macro (H5Type) for clawhdf5 compound types"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-gpu"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "GPU-accelerated vector operations for rustyhdf5 using wgpu compute shaders"
|
description = "GPU vector distance computation for clawhdf5 using wgpu compute shaders (not HDF5 I/O)"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-io"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "I/O abstraction layer for rustyhdf5"
|
description = "I/O adapters for clawhdf5 (buffers, mmap, prefetch)"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "clawhdf5-netcdf4"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
description = "NetCDF-4 read support built on rustyhdf5 — pure Rust, no C dependencies"
|
description = "NetCDF-4 read support built on clawhdf5 — pure Rust, no C dependencies"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
repository = "https://git.redclaw.dev/quantumclaw/clawhdf5"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -129,7 +129,8 @@ with clawhdf5.File("data.h5", "r+") as f:
|
|||||||
`str` is stored as a fixed-length UTF-8 string (h5py stores a
|
`str` is stored as a fixed-length UTF-8 string (h5py stores a
|
||||||
variable-length one), so h5py reads it back as `bytes`.
|
variable-length one), so h5py reads it back as `bytes`.
|
||||||
- Not supported (`NotImplementedError`, nothing written): creating or
|
- Not supported (`NotImplementedError`, nothing written): creating or
|
||||||
deleting datasets, groups and attributes, writing compound fields by
|
deleting datasets and groups, deleting attributes (creating and
|
||||||
|
replacing them works, compact or dense), writing compound fields by
|
||||||
name, variable-length data, HDF5 array types, and whatever
|
name, variable-length data, HDF5 array types, and whatever
|
||||||
`FileEditor` refuses (listed in `docs/known-issues.md`).
|
`FileEditor` refuses (listed in `docs/known-issues.md`).
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -60,6 +60,6 @@ Every document in the repository, one line each. Start with the
|
|||||||
|---|---|
|
|---|---|
|
||||||
| [ROADMAP.md](../ROADMAP.md) | Agent-memory roadmap and implementation tracker |
|
| [ROADMAP.md](../ROADMAP.md) | Agent-memory roadmap and implementation tracker |
|
||||||
| [CLAUDE.md](../CLAUDE.md) | Architecture and workflow notes for contributors and coding agents |
|
| [CLAUDE.md](../CLAUDE.md) | Architecture and workflow notes for contributors and coding agents |
|
||||||
| [IMPROVEMENT_LOG.md](../IMPROVEMENT_LOG.md), [IMPROVEMENT_SCAN.md](../IMPROVEMENT_SCAN.md) | Logs of earlier automated improvement passes |
|
| [archive/IMPROVEMENT_LOG.md](archive/IMPROVEMENT_LOG.md), [archive/IMPROVEMENT_SCAN.md](archive/IMPROVEMENT_SCAN.md) | Logs of earlier automated improvement passes (archived, historical) |
|
||||||
| [superpowers/plans/](superpowers/plans/) | Implementation plans from June 2026 (filter codecs, format write extensions, MPI-IO); historical |
|
| [archive/plans/](archive/plans/) | Implementation plans from June 2026 (filter codecs, format write extensions, MPI-IO); archived, historical |
|
||||||
| [research/](../research/) | Research briefs from August 2026 (performance, security, provenance) |
|
| [research/](../research/) | Research briefs from August 2026 (performance, security, provenance) |
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Run Criterion benchmarks for rustyhdf5-format and generate a markdown report.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# ./scripts/run-benchmarks.sh
|
|
||||||
#
|
|
||||||
# Output:
|
|
||||||
# BENCHMARKS.md in the repository root
|
|
||||||
|
|
||||||
set -uo pipefail
|
|
||||||
|
|
||||||
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
||||||
REPORT="$REPO_ROOT/BENCHMARKS.md"
|
|
||||||
BENCH_OUTPUT=$(mktemp)
|
|
||||||
|
|
||||||
echo "==> Running benchmarks for rustyhdf5-format ..."
|
|
||||||
cargo bench -p rustyhdf5-format 2>&1 | tee "$BENCH_OUTPUT"
|
|
||||||
BENCH_EXIT=${PIPESTATUS[0]}
|
|
||||||
|
|
||||||
if [ "$BENCH_EXIT" -ne 0 ]; then
|
|
||||||
echo "ERROR: cargo bench failed with exit code $BENCH_EXIT"
|
|
||||||
rm -f "$BENCH_OUTPUT"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Parse criterion output lines like:
|
|
||||||
# bench_name time: [1.234 ms 1.256 ms 1.278 ms]
|
|
||||||
# We extract the middle (point estimate) value.
|
|
||||||
declare -a NAMES=()
|
|
||||||
declare -a TIMES=()
|
|
||||||
|
|
||||||
while IFS= read -r line; do
|
|
||||||
if [[ "$line" =~ ^([a-zA-Z0-9_/]+)[[:space:]]+time:[[:space:]]+\[.*[[:space:]]+([-0-9.]+[[:space:]]+(ns|µs|us|μs|ms|s))[[:space:]]+.*\] ]]; then
|
|
||||||
NAMES+=("${BASH_REMATCH[1]}")
|
|
||||||
TIMES+=("${BASH_REMATCH[2]}")
|
|
||||||
fi
|
|
||||||
done < "$BENCH_OUTPUT"
|
|
||||||
|
|
||||||
# Generate report
|
|
||||||
{
|
|
||||||
echo "# rustyhdf5-format Benchmark Results"
|
|
||||||
echo ""
|
|
||||||
echo "Generated: $(date -u '+%Y-%m-%d %H:%M:%S UTC')"
|
|
||||||
echo ""
|
|
||||||
echo "## System Info"
|
|
||||||
echo ""
|
|
||||||
echo "- **OS**: $(uname -srm)"
|
|
||||||
echo "- **Rust**: $(rustc --version)"
|
|
||||||
echo "- **CPU**: $(sysctl -n machdep.cpu.brand_string 2>/dev/null || lscpu 2>/dev/null | grep 'Model name' | sed 's/.*: *//' || echo 'unknown')"
|
|
||||||
echo ""
|
|
||||||
echo "## Results"
|
|
||||||
echo ""
|
|
||||||
echo "| Benchmark | Time (point estimate) |"
|
|
||||||
echo "|-----------|----------------------|"
|
|
||||||
|
|
||||||
for i in "${!NAMES[@]}"; do
|
|
||||||
echo "| ${NAMES[$i]} | ${TIMES[$i]} |"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "${#NAMES[@]}" -eq 0 ]; then
|
|
||||||
echo "| (no results parsed — see raw output below) | — |"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "## Notes"
|
|
||||||
echo ""
|
|
||||||
echo "- All benchmarks use Criterion.rs with default settings."
|
|
||||||
echo "- 1M dataset = 1,000,000 f64 values (~7.6 MB)."
|
|
||||||
echo "- Chunked benchmarks use 10K-element chunks."
|
|
||||||
echo "- Run with: \`./scripts/run-benchmarks.sh\`"
|
|
||||||
} > "$REPORT"
|
|
||||||
|
|
||||||
rm -f "$BENCH_OUTPUT"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "==> Benchmark report written to $REPORT"
|
|
||||||
echo "==> $(( ${#NAMES[@]} )) benchmarks captured."
|
|
||||||
Reference in New Issue
Block a user