简体中文 | English
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fix Linux platform ping unable to recognize non-64 bytes ICMP request packet issue
- Update python development environment dependency version
2.1.0 - 2025-11-29
- DNS pre-resolution support with ability to disable DNS resolution
- Custom DNS resolution timeout configuration
- Extended sync and async ping interfaces with DNS configuration options
- Extended streaming interfaces with DNS configuration support
- Comprehensive documentation for ping module and related error types
- Documentation for Python bindings ping functionality and streaming interfaces
- Rust code quality and style checking configuration (Clippy and Rust lints)
- Refactored positive integer conversion logic for improved parameter validation
- Optimized parameter validation with extracted conversion functions
- Enhanced build.rs with improved robustness for build environment variables
- Unified documentation comment formatting with consistent backtick usage for code identifiers
- Standardized string formatting to Rust 1.58+ inline variable syntax
- Improved code comments with consistent punctuation and spacing
- Introduced
DnsPreResolveOptionsin dedicatedsrc/types/options.rsmodule for DNS configuration - Reorganized ping execution logic: moved
execute_pingandexecute_ping_asyncfromplatformmodule to mainicmpmodule - Deprecated
platformmodule; usecrate::protocols::icmp::{execute_ping, execute_ping_async}instead
- Fixed max_count conversion overflow error handling to prevent unwrap panics
- Improved error handling robustness in build configuration
2.0.1 - 2025-11-15
- Ensure typing override compatibility on Python < 3.12 by importing
overridefromtyping_extensionsin stubs - Align
PingStreamiterator protocol in stubs: make__next__synchronous and add constructor parameters to match Rust implementation - Remove duplicate top-level stub to avoid drift; keep authoritative stub at
ping_rs/_ping_rs.pyi - Correct
PingResultstubs: convert nested variant constructors to__new__and annotate base with@disjoint_baseto improve typing and pattern matching - Updated development/lint dependencies; add
typing_extensionsand refresh dependency set - CI: enable workflow concurrency cancellation to avoid duplicate runs on rapid pushes
- Release: derive changelog version by stripping leading
vfrom tag for changelog reader action - GitHub Release: treat tags containing
rcas prereleases (in addition toalpha/beta) - CI: unify continue-on-error settings to
falsefor stability - CI: simplify test/build matrices; temporarily drop free-threaded 3.13t and CPython 3.14 from testing
2.0.0 - 2025-11-15
- Enhanced comprehensive test coverage with async ping error handling and performance tests
- Added stress testing, memory usage, backpressure, and performance benchmark tests
- Enabled pytest parallel execution with
-n logicaloption - Added comprehensive async ping test coverage
- Added cross-platform architecture explanation
- Improved README with platform support details
- Unified timeout control across all ping operations
- Optimized async ping receiving logic, removed redundant blocking operations
- Refactored ICMP ping timeout calculation logic and result validation
- Migrated async ping result channels from blocking standard channels to Tokio async channels
- Simplified platform adaptation by using
pingerlibrary for all platforms - Adjusted test assertions to be more resilient
- Upgraded
pyo3and related libraries to version 0.27 - Upgraded
pyo3-logto version 0.13 - Upgraded
pingerto version 2.1.1 - Upgraded pre-commit-hooks version
- Adjusted Makefile pre-commit startup command
- Optimized pyproject.toml dependency configuration and classification information
- Adjusted async multiple ping test timeout parameters and result assertions to avoid flaky tests
- Fixed Windows platform ping timeout packet count calculation
- Fixed async ping timeout handling - now attempts to receive remaining results before stopping
- Fixed ping timeout logic and cross-platform timeout calculation
- Adjusted ping default timeout to 1000ms
- Removed Windows-specific ping implementation and related utility code
- Removed IP resolution and timing-related Windows utility code
1.1.0 - 2025-06-08
- AsyncPinger class for executing asynchronous ping operations
- AsyncPingStream for native async/await support with async iteration
- Added
countparameter tocreate_ping_streamfunction - Added validation functions for count and timeout parameters
- Usage examples for PingStream and AsyncPingStream
- Basic usage examples demonstrating synchronous and asynchronous ping operations
- Added comprehensive usage examples for PingStream as iterator
- Added examples for AsyncPingStream async iteration
- Enhanced documentation for asynchronous ping operations
- Improved async ping capabilities and refined interfaces
- Refactored non-blocking receiver logic in PingStream
- Refactored sync_stream_example to remove async elements
- Updated CI configuration to run tests in parallel using
pytest-xdist - Conditionally compiled IP functions for Windows only
- Refactored Windows ping implementation for better clarity and maintainability
- Removed
psutildependency from pytest-xdist configuration - Updated version to 1.1.0
- Added AsyncPinger to the export list in
__all__ - Improved error handling and input validation
- Removed redundant timeout assertion conditions
1.0.0 - 2025-06-02
- Initial release of ping-rs
- Core ping functionality with Rust backend and Python bindings
- Synchronous ping operations (
ping_once,ping_multiple) - Non-blocking ping stream (
create_ping_stream,PingStream) - Windows-specific ping implementation using native ICMP
- Cross-platform support (Linux, macOS, Windows, BSD)
- Comprehensive test suite with pytest
- MIT License
- CI/CD pipeline with GitHub Actions
- Code coverage integration with Codecov
- PingResult types: Pong, Timeout, Unknown, PingExited
- Flexible API: Support for custom timeout, interval, and interface selection
- IPv4/IPv6 support: Optional protocol selection
- Type hints: Full type annotation support with
.pyistub files - Performance: Built with Rust for high performance
- Comprehensive README in English and Chinese
- API reference documentation
- Usage examples
- Architecture documentation
- PyO3 for Python-Rust bindings
- pinger library for cross-platform ping functionality
- tokio for async runtime
- serde for serialization