ech_http 0.2.1
ech_http: ^0.2.1 copied to clipboard
An HTTP client with explicit TLS Encrypted Client Hello, proxy support, and a C++ backend bundled through Dart build hooks.
Changelog #
All notable changes to the ech_http package will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
0.2.1 - 2026-09-29 #
Changed #
- Raise the default
maxConcurrentRequestsfrom 6 to 64 per client and addmaxConcurrentRequestsPerHost, defaulting to 6 per URL hostname across ports and schemes. Scheduling skips saturated hosts while preserving queue order among eligible requests; redirects acquire the destination host's capacity.
Fixed #
- Release native request slots on completion or timeout even when the response body is unread or paused. Acknowledge body chunks when consumed to retain bounded buffering without pausing completion and error delivery.
0.2.0 - 2026-09-27 #
Changed #
- Advertise gzip by default and decode gzip response bodies on the native worker.
This changes the previous raw-response default; use
EchClient(autoUncompress: false)to retain compressed response bytes. - Match Dart HttpClient / package:http IOClient negotiation and response length behavior: preserve wire headers and streamed contentLength, while buffered Response.contentLength remains the decoded body size.
- Apply the response size limit and native delivery budget to decoded bytes.
- Pin zlib 1.3.2 in all 14 prebuilt SDK targets and verify its source digest, static library, matching headers, and license during cache preparation.
Added #
- Gzip compression state, concatenated-member support, malformed/truncated stream errors, and IOClient compatibility and decoded-backpressure tests.
0.1.3 - 2026-09-26 #
Changed #
- Replace the 10 ms response polling timer with native
Dart_PostCObjectevents delivered through per-request receive ports, withoutNativeCallable. - Preserve the 256 KiB streaming budget with body acknowledgements.
- Release request handles without joining network threads; retain worker state through cancellation and clean up abandoned handles with native finalizers.
- Update the internal C ABI and build hooks for Dart SDK message-port headers.
Added #
- Regression coverage for timer-free delivery, repeated stream pauses, bounded in-flight messages, closed ports, and isolate group shutdown during transfers.
0.1.2 #
Changed #
- Update repository, issue tracker, dependency SDK download URLs, and maintainer tooling to the
ech-researchGitHub organization. - Keep the existing SDK release versions and SHA-256 pins; no native dependency rebuild is required.
0.1.1 #
Added #
- Precompiled SDK Pipeline: Added automated downloads of pinned, SHA-256-verified dependency SDKs from dedicated public GitHub Release repositories.
- Offline Binary Caching: Added reusable native binary cache via
hooks.user_defines.ech_http.binary_cachewith archive integrity validation, offline reuse, and automatic self-repair of damaged files. - Maintainer Automation: Added
tool/update_prebuilt.pyfor automated pinning and hash verification of new SDK release versions. - Live End-to-End Suite: Added environment-variable-driven live network tests for ECH validation, authenticated retries, and proxy tunneling (
test/live_ech_test.dart).
Changed #
- Move build helpers and dependency pins outside the reserved
hook/directory for pub.dev upload compatibility. - Build Hook Acceleration: Switched to compiling only the C++ bridge locally via CMake/Ninja (~15 s cold builds), eliminating local compilation of BoringSSL and libcurl from source.
- Documentation Overhaul: Restructured all project documentation, added comprehensive English and Chinese guides, Mermaid architecture diagrams, and multi-platform verification records.
Removed #
- Removed application-specific integration recipes in favor of generic, configurable discovery examples and resolvers.
0.1.0 #
Added #
- Core HTTP Client: Initial release of
EchClientimplementingpackage:http.Client, backed by an in-process C++17 engine (libcurl + BoringSSL). - TLS Encrypted Client Hello (ECH): Full support for ECH negotiation, fail-closed security enforcement, and automated authenticated retries.
- Routing & Resolvers: Added
DohEchResolverfor DNS JSON HTTPS record (Type 65) discovery andStaticEchResolverfor pre-configured routes. - Proxy & Physical Routing: Supported HTTP CONNECT proxies, physical destination IP overrides (
addresses), and custom PKI root injection (trustedRootsPem). - Native Assets Integration: Supported cross-platform compilation and bundling for Android, iOS, Linux, macOS, and Windows via Dart build hooks.