Skip to content

v0.9.0 Beta

Pre-release
Pre-release

Choose a tag to compare

@jamesgober jamesgober released this 26 Aug 16:18
· 26 commits to main since this release

v0.9.0-Beta: Advanced Performance Tuning & Live Coordination

This release marks a significant milestone, introducing a powerful suite of optional, high-performance features and a sophisticated new eventing system for live subsystem coordination. proc-daemon now provides deep hooks for performance tuning, including a swappable global allocator, high-resolution timing, and scheduler hints.

A major new capability is Configuration Hot-Reloading, allowing the daemon to dynamically update its configuration from the filesystem without requiring a restart. This is coupled with a new lock-free eventing system that enables components to react to subsystem state changes in real-time.

This beta is stable, and the API surface is ready for production workloads.

Highlights

Performance & Profiling Features

A suite of new, opt-in features has been added for developers who need to squeeze every nanosecond of performance out of their daemons:

  • mimalloc: Use mimalloc as the global allocator for potential speedups in allocation-heavy workloads.
  • high-res-timing: Access fast, monotonic timestamps backed by quanta for high-precision measurements.
  • scheduler-hints: Apply best-effort scheduler tuning, including renice on Unix and CPU affinity on Linux.
  • profiling: Optional helpers for CPU profiling with pprof and heap profiling with dhat.

Live Configuration & Coordination

  • Configuration Hot-Reload (config-watch feature): The daemon can now monitor its configuration file and live-reload on changes, making dynamic adjustments possible without downtime. A new Daemon::config_snapshot() method provides atomic access to the latest configuration.
  • Subsystem Eventing: A new event channel allows for non-blocking notifications of subsystem state changes (StateChanged). You can enable it with SubsystemManager::enable_events() and subscribe to the event stream for advanced coordination patterns.
  • Lock-Free Backend (lockfree-coordination feature): Opt-in to use a lock-free MPMC channel from crossbeam-channel as the backend for the eventing system, minimizing contention in highly concurrent applications.

Fixes & Code Quality

  • Robustness: Fixed error conversions for the new notify dependency used in configuration watching.
  • Code Quality: A major cleanup of clippy lints was performed across the entire codebase, improving lock lifetimes, documentation, and code idioms. The library is now clean against cargo clippy -- -D warnings.

Full Changelog: v0.6.1...v0.9.0