Skip to content

Chore/rename program#34

Merged
denispol merged 7 commits intomainfrom
chore/rename-program
Jan 31, 2026
Merged

Chore/rename program#34
denispol merged 7 commits intomainfrom
chore/rename-program

Conversation

@denispol
Copy link
Owner

What

Rebrand darwin-timeout to procguard with dual-binary support and updated release infrastructure

Why

Strategic repositioning from "timeout replacement" to "formally verified process supervisor for macOS" with professional branding and v1.5.0 release preparation

Changes

Branding & Core (~40 files):

  • Rename package to procguard in Cargo.toml
  • Add dual-binary: procguard (wall-clock default) + timeout (active-time default for GNU compatibility)
  • Add argv[0] detection for automatic mode switching based on binary name
  • Update all source files, tests, docs, and scripts with new naming
  • Rename shell completions to procguard.*
  • Bump JSON schema to v8 (adds clock field showing wall or active)

Release Infrastructure (v1.5.0):

  • Version bump: 1.4.01.5.0
  • Rename release tarballs: timeout-macos-*procguard-macos-*
  • Tarball now includes both procguard binary and timeout symlink
  • Update homebrew workflow to download procguard-macos-universal.tar.gz
  • Update build-universal.sh to build procguard with timeout symlink

Testing:

  • Add 6 new dual-binary integration tests (185 total)
  • All references to darwin-timeout removed from tracked files
  • Test count documentation updated: 179 → 185

Verification

  • cargo test (154 unit + 185 integration + 10 library API)
  • cargo test --test proptest (30 properties)
  • cargo clippy -- -D warnings
  • cargo fmt --check
  • binary size ≤150KB (119KB actual)
  • No darwin-timeout remnants in tracked files
  • JSON schema v8 with clock field working

Complete rebrand from darwin-timeout to procguard:

Core Changes:
- Rename package to procguard in Cargo.toml
- Add dual-binary support: procguard (primary) + timeout (alias)
- Add argv[0] detection for timeout backward compatibility
- Timeout alias defaults to --confine active (GNU compatibility)
- Bump JSON schema to v8 (adds clock field)

Files Modified (~40 files):
- src/*.rs: Update crate name references
- tests/: Add 6 new dual-binary tests (185 total)
- docs/: Update all documentation
- completions/: Rename to procguard.*
- fuzz/: Update crate references
- scripts/: Update binary names
- workflows/: Update binary references

JSON Schema v8:
- Added clock field showing wall or active
- Allows users to verify which time mode was used

Verification:
- 154 unit tests passing
- 185 integration tests passing
- 10 library API tests passing
- 30 proptest properties passing
- Binary size: 119KB (under 150KB limit)
- Bump version to 1.5.0
- Rename tarballs: timeout-macos-* → procguard-macos-*
- Release now includes both procguard binary and timeout symlink
- Update homebrew.yml to download procguard-macos-universal.tar.gz
- Update build-universal.sh to build procguard with timeout symlink
@denispol denispol added documentation Improvements or additions to documentation enhancement New feature or request labels Jan 31, 2026
@denispol denispol self-assigned this Jan 31, 2026
- Build only `procguard` binary, create `timeout` symlink at runtime
- Update test helpers to create symlink dynamically
- Update CI to test both binaries via symlink
- Fixes cargo warning: file found in multiple build targets

This removes the warning while maintaining dual-binary functionality
through argv[0] detection. The `timeout` symlink is created during:
- Release packaging (release.yml, build-universal.sh)
- Integration tests (tests/{integration,benchmarks}.rs)
- CI verification (.github/workflows/ci.yml)
- Add back `timeout` binary target to Cargo.toml
- `cargo install procguard` now installs both procguard and timeout
- Fix README test count: 184 → 185

The cargo warning about shared main.rs is intentional and harmless.
This ensures users get both binaries without manual symlink creation:
  cargo install procguard  # installs both procguard and timeout
- Remove symlink creation from test helpers (cargo builds both binaries)
- Use Command::cargo_bin("timeout") directly with #[allow(deprecated)]
- Restructure README: procguard as unique process supervisor, not just timeout
- Lead with resource limits, lifecycle control, formal verification
- Move GNU timeout compatibility to secondary feature
- Lead with 'Linux has cgroups. macOS has nothing—until now.'
- Add 'Built with Rust' section: no_std, 100KB, formal verification
- Position timeout as bonus feature, not comparison battle
- 'Exact GNU behavior' without defensive comparison tables
- Clean problem/solution table without 'impossible' language
- Add architecture highlights for Rust developers
@denispol denispol force-pushed the chore/rename-program branch 3 times, most recently from 67c1c03 to f77328a Compare January 31, 2026 21:23
- Position as process supervisor, not timeout replacement
- Lead with resource limits (memory, CPU) - unique on macOS
- Clean examples section organized by use case
- 'For Rust Developers' section with architecture highlights
- GNU timeout as compatible bonus, not comparison battle
- Concise reference section
@denispol denispol force-pushed the chore/rename-program branch from f77328a to 2299f22 Compare January 31, 2026 22:18
@denispol denispol merged commit 873dba0 into main Jan 31, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant