Skip to content

BenchBox 0.1.3

Choose a tag to compare

@joeharris76 joeharris76 released this 24 Feb 00:28
· 14 commits to main since this release

Added

  • Driver version pinning--platform-option driver_version=X.Y.Z pins any platform's Python driver; pair with driver_auto_install=true to have BenchBox install it automatically via uv. Active driver version is shown in the run announcement line.
  • Bulk multi-shard table loading — new load_table_bulk() interface on FileFormatHandler ingests multi-shard tables in a single native call. DuckDB (CSV, Parquet) and ClickHouse Native are the first implementations; TPC-DS sharded runs are measurably faster.
  • Greyscale / no-color ASCII chart fallbacks — all seven ASCII chart types now use fill-pattern and glyph differentiation when color is unavailable (CI logs, NO_COLOR, piped output).
  • Five new ASCII chart types — percentile ladder, stacked bar, sparkline table, CDF, rank table, and normalized speedup (log₂-scaled). All registered in the chart registry and accessible via CLI and MCP.
  • Post-run summary charts — charts are automatically generated and displayed in the terminal after every benchmark run and included in MCP run_benchmark responses.
  • Three new chart template bundleslatency_deep_dive, regression_triage, and executive_summary.
  • fabric-dw as a preferred CLI alias for the fabric_dw platform.

Fixed

  • Driver auto-install version switching — stale sys.modules and metadata caching could return the wrong driver version after driver_auto_install swapped versions; module cache is now invalidated on switch.
  • DataFrame cache path mismatch — DataFrame and SQL modes now share a flat directory layout, eliminating redundant data generation when switching modes on the same scale factor.
  • ClickHouse zstd double-decompressionClickHouseNativeHandler was applying manual decompression on top of the driver's built-in decompression, corrupting data for compressed bulk loads.
  • Platform display names — corrected for Amazon Athena, Google Cloud Dataproc, Microsoft Azure platforms, and Databricks SQL.
  • CLI warning when a platform option's default value is not in the declared choices list.
  • Ranking normalization crash when all metric values are negative finite numbers.
  • PySpark SIGINT handler hanging pytest-xdist workers.
  • --validation-mode CLI prompt crash when spec.default is not a string.

Changed

  • Four platform drivers moved to optional extras — DuckDB (benchbox[duckdb]), Polars (benchbox[polars]), ClickHouse Connect (benchbox[clickhouse-connect]), and psycopg2 (benchbox[postgresql]) are no longer hard dependencies. Use pip install benchbox[all] to restore the previous behaviour.
  • All user-facing terminal output in the run pipeline flows through emit(), making --quiet suppression and output capture in tests consistent.
  • BaseQueryCatalogMixin and TranslatableQueryMixin extracted from duplicate query-catalog implementations.

Full Changelog: https://github.com/joeharris76/BenchBox/blob/main/CHANGELOG.md#0130---2026-02-23