Skip to content

Latest commit

 

History

History
166 lines (129 loc) · 7.28 KB

File metadata and controls

166 lines (129 loc) · 7.28 KB

Changelog

简体中文 | 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.

[2.1.1] - 2025-11-29

Fixed

  • 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

Added

  • 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)

Changed

  • 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 DnsPreResolveOptions in dedicated src/types/options.rs module for DNS configuration
  • Reorganized ping execution logic: moved execute_ping and execute_ping_async from platform module to main icmp module
  • Deprecated platform module; use crate::protocols::icmp::{execute_ping, execute_ping_async} instead

Fixed

  • Fixed max_count conversion overflow error handling to prevent unwrap panics
  • Improved error handling robustness in build configuration

2.0.1 - 2025-11-15

Fixed

  • Ensure typing override compatibility on Python < 3.12 by importing override from typing_extensions in stubs
  • Align PingStream iterator 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 PingResult stubs: convert nested variant constructors to __new__ and annotate base with @disjoint_base to improve typing and pattern matching
  • Updated development/lint dependencies; add typing_extensions and refresh dependency set
  • CI: enable workflow concurrency cancellation to avoid duplicate runs on rapid pushes
  • Release: derive changelog version by stripping leading v from tag for changelog reader action
  • GitHub Release: treat tags containing rc as prereleases (in addition to alpha/beta)
  • CI: unify continue-on-error settings to false for stability
  • CI: simplify test/build matrices; temporarily drop free-threaded 3.13t and CPython 3.14 from testing

2.0.0 - 2025-11-15

Added

  • 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 logical option
  • Added comprehensive async ping test coverage
  • Added cross-platform architecture explanation
  • Improved README with platform support details

Changed

  • 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 pinger library for all platforms
  • Adjusted test assertions to be more resilient
  • Upgraded pyo3 and related libraries to version 0.27
  • Upgraded pyo3-log to version 0.13
  • Upgraded pinger to version 2.1.1
  • Upgraded pre-commit-hooks version
  • Adjusted Makefile pre-commit startup command
  • Optimized pyproject.toml dependency configuration and classification information

Fixed

  • 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

  • Removed Windows-specific ping implementation and related utility code
  • Removed IP resolution and timing-related Windows utility code

1.1.0 - 2025-06-08

Added

  • AsyncPinger class for executing asynchronous ping operations
  • AsyncPingStream for native async/await support with async iteration
  • Added count parameter to create_ping_stream function
  • 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

Changed

  • 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 psutil dependency from pytest-xdist configuration
  • Updated version to 1.1.0

Fixed

  • 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

Added

  • 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 .pyi stub 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