The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Build script (
build.rs) to automatically detect netmap installation and provide helpful error messages - Better error handling and diagnostic messages for missing netmap C library
- Environment variable
NETMAP_LOCATIONsupport for custom netmap installations - Comprehensive troubleshooting section in README
- Added
new()method toFramestruct as an alias fornew_borrowed()for consistency
- BREAKING: Updated Rust edition from 2024 to 2021 for better compatibility with current Rust toolchains
- Updated all dependencies to latest stable versions:
bitflags: 2.0 → 2.6tokio: 1 → 1.40thiserror: 1.0 → 2.0criterion: 0.4 → 0.5tempfile: 3.3 → 3.13ctrlc: 3.2 → 3.4polling: 3.2 → 3.7
- Updated
netmap-min-sysdependency to 0.2.2 to match what Cargo resolves - Improved error messages in
Error::fromimplementation - Enhanced README with detailed installation instructions and troubleshooting
- Fixed compilation issues with
Frame::new()method not being available - Fixed
io::Error::other()usage which is not available in current Rust versions - Fixed edition compatibility issues that prevented compilation
- Fixed documentation examples to use correct feature flags
- Fixed ring buffer synchronization logic to prevent potential race conditions
- Updated all dependencies to latest versions to address potential security vulnerabilities
- Improved error handling to prevent panic conditions
- Initial project structure for
netmap-rs. - Core Netmap abstractions:
NetmapBuilder,Netmap,TxRing,RxRing(available under thesysfeature). Framestructure for packet representation.- Error handling types.
- Fallback mechanisms for non-Netmap platforms (basic structure).
- Tokio async support via the
tokio-asyncfeature. - Example usage files in the
examples/directory. netmap-min-syscrate for low-level FFI bindings to Netmap.
- Technical Consideration: Feature Flags: The core functionality of interacting with Netmap relies on the
sysfeature flag. This flag enables the compilation of C bindings and makes types likeNetmapBuilder,Netmap,TxRing, andRxRingavailable. Withoutsys, these types are not exported by the crate. Users consuming this crate must enable this feature in theirCargo.toml(e.g.,netmap-rs = { version = "...", features = ["sys"] }) to use Netmap capabilities. - The
tokio-asyncfeature enables integration with the Tokio runtime, providingAsyncNetmapRxRing,AsyncNetmapTxRing, andTokioNetmaptypes. This also requires thesysfeature. - Clarified in documentation (README) that
NetmapBuilderand related types require thesysfeature to be enabled. This addresses potential compilation errors where these types might appear undeclared if the feature is missing. - Updated
README.mdto include troubleshooting tips for Netmap C library detection, highlighting the use of theNETMAP_LOCATIONenvironment variable. - The underlying
netmap-min-sysdependency's build script (build.rs) was enhanced to more robustly useNETMAP_LOCATIONfor discovering Netmap C headers. netmap-min-sysnow also has its ownREADME.mdandCHANGELOG.mdfor better clarity on its specific build options and changes.
- Resolved confusion regarding
NetmapBuildernot being found: This was identified as an issue in how consuming crates specify dependencies. Thesysfeature flag must be enabled in the dependent crate'sCargo.tomlto makeNetmapBuilderand othersys-gated items available.