Skip to content

[Refactor]: Deprecate and remove legacy 'joulex' and 'hyperfine' variables, aliases, and leftovers #225

Description

@matbrgz

Context

Following the rebrand of the project to perfratio (PR #224), compatibility aliases and legacy references were preserved to prevent breaking existing pipelines, scripts, and consumers.

This issue tracks the structured deprecation and eventual complete removal of all remaining joulex and hyperfine variables, aliases, internal identifiers, and test scaffolding.


Inventory of Leftovers to Remove

1. Environment Variables & Runtime Hooks

  • Iteration Forwarding: Remove $JOULEX_ITERATION and $HYPERFINE_ITERATION forwarding in src/benchmark/executor.rs, keeping exclusively $PERFRATIO_ITERATION.
  • System Check Testing Hook: Remove fallback to JOULEX_SYSTEM_CHECK_ROOT in src/system_check.rs, using only PERFRATIO_SYSTEM_CHECK_ROOT.

2. Export & Import Serialization

  • JSON Metadata Key: Remove the backwards-compatible "joulex": ... field in src/export/json.rs, retaining only "perfratio": ....
  • JSON Import Parser: Rename internal deserialization struct HyperfineSummary to PerfratioSummary in src/import.rs.
  • CLI Help: Update --import-json help string in src/cli.rs (currently references perfratio/joulex/hyperfine).

3. Progress Bar & Indicatif Keys

  • Template Keys: Remove the fallback key joulex_eta in src/output/progress_bar.rs, standardizing solely on perfratio_eta.

4. Shell Completions

  • Build Script: Remove generation of completions for binary name "joulex"" in build.rsandsrc/main.rs`.
  • Fish Custom Completions: Remove complete -c joulex ... snippet in src/cli.rs.

5. Test Suite & Harness

  • Test Runners: Rename hyperfine(), hyperfine_raw_command(), and hyperfine_debug() across tests/common.rs and tests/integration_tests.rs to perfratio(), perfratio_raw_command(), and perfratio_debug().
  • Iteration Tests: Remove or retire legacy iteration tests in tests/execution_order_tests.rs (prepare_and_conclude_see_the_current_joulex_and_hyperfine_iteration).
  • Metadata Tests: Clean up dual assertions in tests/export_metadata_tests.rs and tests/check_system_tests.rs that check both json["joulex"] and json["perfratio"].

6. Documentation & Legacy Files

  • Manpage: Delete doc/joulex.1 (retaining only doc/perfratio.1).
  • Assets: Update doc/execution-order.svg and any other diagrams referencing hyperfine.
  • Docs & Guides: Refactor remaining mentions in README.md, doc/understanding-output.md, and doc/ci.md that mention (or hyperfine <command>...).

Migration / Deprecation Strategy

  1. Deprecation Phase: If legacy environment variables or options are invoked, emit a single deprecation notice advising migration to PERFRATIO_*.
  2. Breaking Release: Drop all legacy bindings and clean the codebase so that grep -ri "joulex" src/ tests/ and grep -ri "hyperfine" src/ tests/ return only historical attribution / license notes in README.md and LICENSE.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestrustPull requests that update rust code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions