Skip to content

chore: rebrand project from joulex to perfratio - #224

Merged
matbrgz merged 7 commits into
masterfrom
chore/rebrand-perfratio
Sep 27, 2026
Merged

matbrgz merged 7 commits into
masterfrom
chore/rebrand-perfratio

Conversation

@matbrgz

@matbrgz matbrgz commented Sep 26, 2026

Copy link
Copy Markdown
Member

Summary

This PR completes the rebranding of the project from joulex to perfratio.

Rationale

The name perfratio reflects the project's evolution beyond standalone energy measurement to a multi-dimensional performance analysis and comparative benchmarking tool. It embodies:

  1. Performance telemetry (CPU cycles, instructions, peak memory RSS, RAPL hardware energy & active power).
  2. Efficiency & Statistical Ratios (Speedup ratios with 95% bootstrap confidence intervals and p-value hypothesis testing, IPC/CPI ratios, cache/branch miss rates, and energy-delay product).

Key Changes

  • Crate & Binaries: Renamed crate and binary to perfratio in Cargo.toml, with perfratio.1 manpage.
  • Backwards Compatibility:
    • Preserved iteration environment variables: $PERFRATIO_ITERATION is primary, while $JOULEX_ITERATION and $HYPERFINE_ITERATION remain supported.
    • JSON exports serialize metadata under both perfratio and joulex keys so existing downstream consumers and scripts continue to parse without interruption.
    • System check root hook supports PERFRATIO_SYSTEM_CHECK_ROOT with fallback to JOULEX_SYSTEM_CHECK_ROOT.
    • Shell completion generation supports both perfratio and joulex.
  • Documentation & Spec:
    • Canonical Spec-Driven Development (SDD) spec added at docs/specs/rebrand-to-perfratio.md.
    • Updated README.md, CITATION.cff, doc/understanding-output.md, and doc/ci.md.
  • Quality Assurance:
    • 100% test suite pass (cargo test).
    • Formatting and lints clean (cargo fmt --check, cargo clippy --all-targets -- -D warnings).

- Rename crate, binary, package name, and documentation to perfratio
- Retain backwards-compatibility environment variables ($PERFRATIO_ITERATION, $JOULEX_ITERATION, $HYPERFINE_ITERATION) and export metadata aliases
- Generate shell completions for both perfratio and joulex
- Add canonical SDD specification at docs/specs/rebrand-to-perfratio.md
- Add manpage doc/perfratio.1 and update CITATION.cff and README.md

Co-Authored-By: Antigravity <noreply@google.com>
matbrgz and others added 6 commits September 27, 2026 00:08
…tibility

- Add Win32_System_Registry feature to windows-sys dependency to export PowerGetActiveScheme and PowerReadFriendlyName
- Avoid raw pointer capture in Watchdog::arm thread closure on Windows
- Use zeroed libc::sched_param to support musl Linux targets
- Add SAFETY comments for OwnedFd from_raw_fd and pre_exec in post-fork timing
- Inline msg_template in create_progress_template to satisfy clippy on MSRV

Co-Authored-By: Antigravity <noreply@google.com>
- Inline stddev format arg in benchmark/mod.rs for clippy MSRV
- Gate rapl tests to non-windows targets to prevent invalid NTFS colon path errors
- Guard against unsupported rusage in QEMU user emulation environments

Co-Authored-By: Antigravity <noreply@google.com>
…diagnostics, and qemu rusage

- In util::priority, invoke SYS_sched_setscheduler directly on Linux because musl returns ENOSYS by design
- In CICD.yml, pass crate binary name without .exe to cargo test --bin for arm/aarch64 targets
- In tests/diagnostics_tests.rs, skip sub-100ms timing tests when running under Rosetta 2 translation
- In timer::unix_timer tests, accommodate QEMU user-mode emulator base RSS overhead

Co-Authored-By: Antigravity <noreply@google.com>
… Rosetta

- Define common::is_rosetta() helper to skip outlier and diagnostics timing tests under Rosetta 2 emulation
- Detect QEMU user-mode emulation in unix_timer unit tests
- Guard against zeroed/unsupported rusage counters in resource_usage_tests under 32-bit musl container environments

Co-Authored-By: Antigravity <noreply@google.com>
Co-Authored-By: Antigravity <noreply@google.com>
@matbrgz
matbrgz merged commit baf1ce4 into master Sep 27, 2026
21 checks passed
@matbrgz
matbrgz deleted the chore/rebrand-perfratio branch September 27, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant