Skip to content

v0.8.0

Pre-release
Pre-release

Choose a tag to compare

@rocketman-code rocketman-code released this 05 Mar 06:10
· 456 commits to main since this release

Major UX overhaul: smarter defaults, better error messages, and less typing for common workflows.

Added

  • `--exact` flag for `piano build` and `piano profile`: exact-match mode for `--fn`, mirroring `cargo test -- --exact` (#120)
  • `--list-skipped` flag: shows functions Piano cannot instrument (const, unsafe, extern) with file paths and reasons (#137, #186, #192)
  • `piano tag` with no arguments lists all saved tags; `piano tag ` saves (#175)
  • `piano diff` with no arguments compares the two most recent runs, showing tag names or relative timestamps (#125)
  • User labels as diff column headers: tag names, filename stems, or relative timestamps instead of generic "Before"/"After" (#124)
  • Auto-detect project root by walking up from cwd to find Cargo.toml, removing the need for `--project` in most cases (#135)
  • Colored report tables with bold headers and dim separators; full NO_COLOR/CLICOLOR/CLICOLOR_FORCE/TERM=dumb support (#122)
  • Recovery guidance on NoTargetsFound: shows similar function names via edit distance, or lists all available functions (#127)

Fixed

  • Diff table sorted by absolute self-time delta descending instead of alphabetically (#193)
  • `--fn` substring matching now checks qualified names (`Type::method`), not just bare names (#185)
  • Missing tag produces "no run found for tag '...'" instead of leaking internal file paths (#198)
  • Duplicate error message when all matched functions were skipped (#191)
  • Internal staging paths removed from all user-facing error messages (#129)
  • Cascading NoRuns error suppressed when profiled program exits non-zero (#139)
  • Stale tags produce a helpful error with recovery guidance instead of generic NoRuns (#160)
  • Non-printable characters in tag names displayed safely in error messages (#166)
  • Invalid tag error defines the valid character set instead of listing what is invalid (#128)
  • App name shown in build output instead of internal binary path (#121)
  • `--fn` help text harmonized between build and profile commands (#123)
  • Redundant "invalid tag:" prefix removed from tag validation errors (#165)
  • Run ID removed from tag confirmation message (#126)
  • Concurrency warning simplified to one line per function (#138)

Changed

  • Report columns reordered: Function | Self | Calls | Allocs | Alloc Bytes -- self-time leads, Total removed from default view (#180, #136)
  • Runtime exits non-zero on profiling data write failure instead of silently discarding