- Updated
README.mdto reflect the latest changes and benchmark performance.
- Exclusion Pattern Defaults: Updated the default exclusion pattern to use
glob syntax (
**/{node_modules,.git,target,dist,vendor}/**/*) for more precise matching of entire directories - Optimized Directory Traversal: Refactored entry filtering logic to:
- Use
filter_entryfor early exclusion of entire directories (pruning) - Simplify file filtering with direct path checks
- Eliminate redundant pattern matching operations
- Use
- Massive Performance Overhaul: The application's core logic has been re-architected for maximum performance, resulting in a ~40% reduction in total CPU time and a ~86% reduction in system call overhead. The application is now definitively I/O bound on the filesystem walk, its ideal state.
- Efficient Exclusion Filtering: Replaced naive string matching with the
high-performance
globsetcrate for path exclusions. This compiles patterns once and matches them against thousands of paths far more efficiently. - Optimized Command Processing: Commands are now pre-parsed and analyzed for GPG requirements once at startup, eliminating redundant string splitting and analysis inside the hot execution loops.
- Correct Async I/O in Sequential Mode: Fixed a critical performance bug in
sequential mode by replacing blocking
std::process::Commandwith the non-blockingtokio::process::Command, preventing the async runtime from stalling. - Idiomatic Caching: Replaced a manual, two-flag atomic cache for GPG status
with the industry-standard
once_cell::sync::OnceCell, resulting in cleaner, safer, and more readable code. - Robust Error Handling: Replaced most
.expect()calls and panics with properResultpropagation and descriptiveeprintln!messages, making the application more resilient to failures like file permission errors or failed command executions.
- Consistent Code Style: Refactored the entire codebase to use
PascalCasefor all variables and types as per the new style guide, enhancing readability and consistency. - Enhanced Documentation: Added comprehensive, high-quality documentation (doc comments) to all public functions and structs, clearly explaining their purpose, arguments, and behavior.
- Streamlined Path Logic: The logic for finding target directories has been
improved to use efficient
PathandPathBufmethods instead of lossy and wasteful string splitting and joining. - Centralized CLI Argument Parsing: Encapsulated
clapargument parsing within aonce_cell::sync::Lazystatic to guarantee it runs only once and provides a clean, global access point to configuration.
- Removed
Source/Graph.mddocumentation with Mermaid diagrams as the execution flow documentation was deprecated.
- Updated dependencies:
- Removed
unbugdependency - Simplified
rayondependency syntax in Cargo.toml
- Removed
- Refactored parallel execution in
Command/Parallel.rs:- Reintroduced
rayonparallel iterators combined withcrossbeam-queuefor efficient work distribution - Implemented hybrid async/parallel model using
tokio::sync::mpscfor output handling - Simplified resource management with atomic queue-based entry distribution
- Added proper thread pool sizing based on available CPU cores
- Improved error handling for channel communication failures
- Reintroduced
- Added
Source/Graph.mdwith Mermaid diagrams documenting execution flow and command processing.
- Updated dependencies:
clapto 4.5.35once_cellto 1.21.3tokioto 1.44.1
- Updated author email address to
<Source/Open@PlayForm.Cloud>in CLI output.
- Optimized exclusion filtering in
Command/Entry.rs:- Avoid unnecessary cloning of exclude patterns
- Improved variable naming and code clarity
- Refactored parallel execution in
Command/Parallel.rs:- Replaced
crossbeam-queueandrayonwithfutures::streamfor better async integration - Simplified concurrency model and improved resource management
- Replaced
- Enhanced error handling in sequential command execution:
- Added status code checking and error reporting in
Command/Sequential.rs
- Added status code checking and error reporting in
- Added Knowledge.dot to visualize project structure.
- Updated dependencies:
clapto 4.5.32crossbeam-queueto 0.3.12futuresto 0.3.31once_cellto 1.21.0tokioto 1.44.0unbugto 0.4.0
- Updated build-dependencies:
serdeto 1.0.219tomlto 0.8.20
- Modified project description to "Run 🍺" and updated the edition to "2024" in Cargo.toml.
- Updated author information in Source/Fn/Binary/Command.rs to "Source ✍🏻 Open 👐🏻 Source/Open@PlayForm.Cloud".
- Updated help messages in Source/Fn/Binary/Command.rs for brevity.
- Enhanced parallel execution in Source/Fn/Binary/Command/Parallel.rs:
- Refactored for improved performance and clarity, using par_iter for parallel processing.
- Improved error handling and queue management.
- Removed unnecessary mutex locking.
- Streamlined worker task execution.
- Removed redundant filtering in Source/Fn/Binary/Command/Entry.rs.
- Enhanced parallel execution in Source/Fn/Binary/Command/Parallel.rs:
- Leverages
tokio::sync::mpscfor improved channel communication. - Refactored for clarity and conciseness.
- Leverages
- Updated documentation for the Fn function in
Source/Fn/Binary/Command/Parallel.rs:
- Provides a more concise and informative description of the function's purpose.
- Includes a revised, more practical example of how to use the function.
- Minor code style and formatting adjustments for consistency.
- Updated once_cell dependency to version 1.19.0
- Updated version number to 0.1.2 in Cargo.toml
- Simplified project description in README.md
- Updated benchmark results in README.md
- Changed find command example in README.md to use -iname instead of -name
- Added detailed usage instructions and options to README.md
- Updated dependencies section in README.md with more detailed information
- Changed
use tokio::sync::Mutex;touse std::sync::{Arc, Mutex};for better compatibility
- Added
crossbeam-queue = "0.3.11"dependency
- Enhanced parallel execution in Source/Fn/Binary/Command/Parallel.rs:
- Leverages
crossbeam-queuefor managing entries concurrently. - Utilizes a thread pool for parallel processing of entries.
- Leverages
- Updated documentation for the Fn function in
Source/Fn/Binary/Command/Parallel.rs:
- Provides clearer explanation of the function's purpose.
- Includes an example of how to use the function.
- Added support for multiple commands using the
-Cor--Commandflag. - Introduced a new GPG module to handle Git commit signing.
- Added a Process module to encapsulate asynchronous command execution.
- Updated various dependencies to their latest versions:
clapto 4.5.17tokioto 1.40.0serdeto 1.0.210tomlto 0.8.19
- Updated the project repository URL to
https://GitHub.Com/PlayForm/Run.git. - Improved the README with clearer usage instructions and examples.
- Renamed the binary target from
InnkeepertoInnKeeperfor consistency. - Enhanced error handling during parallel command execution.
- Resolved an issue where parallel execution could deadlock when Git commit signing was enabled.
- Removed the
--Separatoroption.
- Updated version number from 0.0.7 to 0.1.0 in
Cargo.toml
- Enhanced
README.mdwith more detailed information and updated benchmarks:- Changed "Benchmark" section to "Bench"
- Updated benchmark results with new timings
- Removed one benchmark example
- Updated description for the
--Excludeoption - Removed the
--Separatoroption description
- Refined command-line argument descriptions in
Source/Fn/Binary/Command.rs - Updated author information in
Source/Fn/Binary/Command.rs
- Corrected import in
Source/Fn/Binary/Command/Parallel.rs:- Changed
stream::itertofutures::stream::iter - Updated import statement for
StreamExt
- Changed
- Updated
clapdependency to version 4.5.11: Dependency updates can sometimes introduce breaking changes if the new version is not backward compatible. - Updated
tokiodependency to version 1.39.1 with full features: Similar to theclapupdate, this could introduce breaking changes if the new version oftokiois not backward compatible. - Major refactoring of
Source/Fn/Binary/Command/Parallel.rsfor better async support: Major refactoring often introduces breaking changes, especially if the public API or expected behavior changes. - Updated
Source/Library.rsto use async main function: Changing the main function to async can be a breaking change if users were not expecting this and need to adjust their code accordingly. - Refactored
Source/Struct/Binary/Command.rsfor improved type safety and async support: Refactoring for type safety and async support can introduce breaking changes if the function signatures or expected usage patterns change.
- New
.cargo/Config.tomlfile with build and profile configurations - Added
futures = "0.3.30"dependency - Added
rayon = "1.10.0"dependency - Added
num_cpus = "1.16.0"dependency
- Updated
.gitignoreto use "Target" instead of "target" for consistency - Updated
clapdependency to version 4.5.11 - Updated
tokiodependency to version 1.39.1 with full features - Changed project description to "🍺 Run —"
- Updated repository URL to "https://github.com/PlayForm/Run.git"
- Enhanced
README.mdwith more detailed feature descriptions and usage instructions - Added documentation for command-line options in
README.md - Improved error handling and added documentation in various source files
- Major refactoring of
Source/Fn/Binary/Command/Parallel.rsfor better async support - Updated
Source/Library.rsto use async main function - Refactored
Source/Struct/Binary/Command.rsfor improved type safety and async support
- Updated
clapdependency to version 4.5.11: As mentioned before, dependency updates can introduce breaking changes. - Updated
tokiodependency to version 1.39.1: Similar to theclapupdate, this could introduce breaking changes. - Refactored Parallel execution to use async/await and
tokio: This is likely a breaking change as it changes the execution model. - Updated main function to use
tokioruntime: Changing the main function to use a specific runtime can be a breaking change.
- New
.github/FUNDING.ymlfile with Open Collective funding information - Added
serde = { version = "1.0.204", features = ["derive"] }as a build dependency - Added
toml = "0.8.16"as a build dependency
- Updated various GitHub Action workflows
- Updated
clapdependency to version 4.5.11 - Updated
tokiodependency to version 1.39.1 - Changed copyright holder in
LICENSEfile to PlayForm - Removed
Cargo.lockfrom.gitignore
- Enhanced
build.rsscript to useserdefor parsingCargo.toml - Improved
README.mdwith more detailed feature descriptions - Added extensive documentation to various source files
- Major refactoring of
Source/Fn/Binary/Command/Parallel.rsfor better async support - Updated
Source/Library.rsto use async main function - Refactored
Source/Struct/Binary/Command.rsfor improved type safety and async support
- Updated
tokiodependency to version 1.37.0: Dependency updates can introduce breaking changes.
- Updated
tokiodependency to version 1.37.0 - Changed project description to "🍺 Run"
- Updated version number to 0.0.5
- Enhanced
README.mdwith more detailed information about the tool's features and usage - Improved command-line argument descriptions in
Source/Fn/Binary/Command.rs - Added documentation to
Source/Fn/Binary/Command/Entry.rsandSource/Fn/Binary/Command/Parallel.rs
- Updated links in
CODE_OF_CONDUCT.mdandCONTRIBUTING.mdto use HTTPS
- Updated version number to 0.0.4
- Enhanced
README.mdwith more detailed information about the tool's features and usage - Refined command-line argument descriptions in
Source/Fn/Binary/Command.rs
- Updated version number to 0.0.3
- Added new binary targets: "Inn" and "InnKeeper": Adding new binaries is not a breaking change, but if it involved changes to existing binaries or their interfaces, it could be.
- New binary targets: "Inn" and "InnKeeper"
- Updated version number from 0.0.1 to 0.0.2
- Initial release