Skip to content

Conversation

@isofinly
Copy link
Owner

… package. Adjust benchmark measurement and warm-up times for improved accuracy. Refactor SPSC and WaitBudget for better performance.

… package. Adjust benchmark measurement and warm-up times for improved accuracy. Refactor SPSC and WaitBudget for better performance.
…er APIs. Implement `lock_apply`, `lock_apply_then`, `lock_apply_with`, and `lock_with` methods for better latch management. Introduce `LocalTrustee` for allocation-free entrustment of values.
…onsistent performance testing. Commented out dynamic worker calculation for clarity.
…Introduce profiling settings in Cargo.toml and new benchmark files for local and remote trustees.
…es during profiling. This ensures only valid binaries are processed, improving the accuracy of memory and performance checks.
…ofiling-specific commands. This streamlines the workflow for running tests and captures output without unnecessary profiling steps.
…ries and improve error handling. Added BENCH_BIN_NAMES for clarity and updated test command to use profiling settings, ensuring only valid executables are processed.
@isofinly isofinly force-pushed the dev branch 4 times, most recently from 729ae80 to 629d963 Compare September 24, 2025 18:39
…ime. Updated worker handle to be optional and implemented clean termination logic in Drop.
@isofinly isofinly force-pushed the dev branch 6 times, most recently from c8b7e8a to a3de2ac Compare September 25, 2025 09:59
…te CI workflow

- Introduced `perf_local`, `perf_latch`, and `perf_pinned_remote` benchmarks in `benches/`.
- Updated `Cargo.toml` to include new benchmarks.
- Modified Valgrind CI workflow to use `BENCH_NAMES` for clarity and increased iteration count for tests.
- Replaced inline always with inline for the `step` method to improve inlining decisions.
- Utilized `likely` for branch prediction in both spin and yield conditions to enhance performance.
- Removed unnecessary `step_slow` method, streamlining the logic for better efficiency.
- Added `Spsc` struct for single-producer/single-consumer ring buffer with power-of-two capacity and optimized for delegation patterns.
- Introduced `WaitBudget` for lightweight wait management, allowing bounded spin and yield without parking.
- Updated dependencies in `Cargo.toml` and removed unused packages from `Cargo.lock`.
- Refactored `trustee` module to utilize the new ring buffer implementation.
- Added `prod_head_cache` and `cons_tail_cache` to `Spsc` struct to reduce cross-core traffic.
- Updated `try_push` and `try_pop` methods to utilize cached values for improved performance during contention.
- Deleted the `Spsc` struct and its associated methods, replacing it with `ArrayQueue` and `SegQueue` for better concurrency support.
- Updated `RemoteRuntime` and `LocalTrustee` to utilize the new queue implementations.
- Cleaned up `Cargo.toml` and `Cargo.lock` by removing unused dependencies.
- Added `PhantomData` to structs for improved type safety.
- Renamed `Trust<T>` to `Trust-T` and streamlined the overview to focus on trust-based concurrency.
- Consolidated features and architecture sections for clarity.
- Updated API examples to reflect new usage patterns with `Trust` and `Latch`.
- Removed outdated sections and improved overall readability.
- Added new example files demonstrating basic usage and latch functionality.
…y `Trust::new` calls

- Updated various benchmark and example files to directly use `Local::entrust` and `Remote::entrust` instead of wrapping them in `Trust::new`.
- Cleaned up code by removing redundant trust instances, enhancing readability and consistency across the codebase.
- Adjusted comments and documentation to reflect the new usage patterns.
@isofinly isofinly force-pushed the dev branch 3 times, most recently from 19419c4 to 708225f Compare September 29, 2025 12:47
- Created a new GitHub Actions workflow for Miri to run tests, examples, and benchmarks under the Undefined Behavior (UB) sanitizer.
- Configured the workflow to trigger on pushes to the main branch and pull requests.
- Set up environment variables for benchmark names and iteration counts.
- Included steps for checking out the code, installing the nightly Rust toolchain with Miri, and executing tests and examples.
- Removed the memcheck step from the Valgrind workflow to streamline the process.
- Updated lock acquisition in `Remote` implementations to use `WaitBudget::acquire_lock_with_budget` for improved efficiency.
- Removed spin loop logic, enhancing code readability and performance during lock contention.
- Added a new `Registrar` struct to handle registration of `ChannelPair` instances with the worker thread, improving modularity and clarity.
- Updated `Remote` struct to include a `registrar` field, allowing for better management of channel pairs.
- Removed the `client_lock` from `ChannelPair`, simplifying the structure and eliminating unnecessary locking logic.
- Enhanced the `clone` method in `Remote` to register new `ChannelPair` instances during cloning, ensuring thread safety and proper resource management.
- Deleted the steps for running tests and uploading results in the Valgrind GitHub Actions workflow to streamline the process.
@isofinly isofinly merged commit 1b63b05 into main Nov 24, 2025
2 checks passed
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.

2 participants