Skip to content

# Intqual Release Notes (v1.0.8)

Choose a tag to compare

@RaijuMounun RaijuMounun released this 12 Jul 22:39

This release introduces massive performance and stability improvements by transitioning the network engine's core to a true asynchronous I/O architecture. Furthermore, it brings enterprise-grade enhancements to bandwidth testing and UI responsiveness.

🚀 New Features & Enhancements

  • Bandwidth Engine Modernization: Replaced the custom raw TCP/TLS socket implementation with reqwest (rustls-tls) for enhanced stability, better cross-platform support, and native HTTP connection pooling.
  • Zero-Copy Upload Stream: Implemented a zero-copy (bytes::Bytes::from_static) approach during upload tests, eliminating the need to clone 2MB payloads into memory. This drastically reduces CPU overhead and memory footprint.
  • Time-Boxed Streaming: Transitioned from fixed-size file downloads to 10-second time-boxed continuous streaming, yielding highly accurate bandwidth saturation measurements.
  • Real-Time UI Progress Tracking: Integrated an O(1) byte counter directly into the upload stream to provide smooth, real-time UI updates, eliminating chunky visual jumps.
  • Enterprise Traceroute: Upgraded the traceroute algorithm to send 3 ICMP packets per TTL instead of one. The UI now calculates and displays the Average RTT (Round Trip Time).
  • Mock Engine (Simulation Mode): Introduced a --mock CLI flag and a MockEngine implementation to generate simulated network data for isolated, offline UI testing.

🛠️ Architecture & Performance

  • True Non-Blocking Async I/O (ICMP): Resolved OS-level thread blocking within ICMP sockets. Implemented tokio::io::unix::AsyncFd for zero-cost async polling on Unix platforms and added a spawn_blocking fallback for Windows to prevent Tokio event loop starvation.
  • Dependency Inversion (UI & Engine): Decoupled the UI from the network engine by introducing a NetworkEngine trait, heavily abstracting core probing operations.
  • UI Deadlock Resolution: Completely asynchronousized Crossterm's blocking keyboard read mechanism using tokio::select! and EventStream.
  • Lock Optimization (RwLock): Replaced Mutex with RwLock for UI state management. This allows the UI to render concurrently while the network engine updates data in the background, significantly reducing FPS drops and eliminating rendering deadlocks.

🐛 Bug Fixes & UX Improvements

  • Rate Limit & Ban Handling: Fixed crashes caused by network bans (e.g., Cloudflare HTTP 429). Added ProbeError::RateLimited and ensured engine workers execute a graceful shutdown.
  • Flash & Return Bug Fixed: The application no longer abruptly returns to the main screen upon bandwidth test failure (e.g., internet disconnection). The error screen now remains locked until explicitly dismissed by the user.
  • Persistent Test Results: Restored the functionality where the last bandwidth speed test results persist on the main dashboard (LatencyDashboardWidget) after returning from the test screen.
  • State Leak & Jitter Fixes: Cleared stale datasets when switching views and resolved a race condition in the Jitter deviation calculation.

🧹 Housekeeping & Chores

  • Resolved project-wide cargo clippy warnings by adopting idiomatic let-chains and collapsing redundant logic.
  • Added a Makefile to standardize the local build workflow.
  • Updated PKGBUILD for Linux packaging.

Full Changelog: v1.0.7...v1.0.8