enableBrotliAPIs were renamed to
addH2RawDomainsmethod. (:issue: #2590 <2590>)
build: building on macOS now requires Xcode 14.1. (#2664)
kotlin: always use
getaddrinfoDNS resolver. Remove
enableDNSUseSystemResolvermethods from the Kotlin engine builder. (#2618)
Envoy Mobile’s release builds compile without admin support by default. (
--define=admin_functionality=disabled) (:issue`#2693 <2693>`)
swift/kotlin: remove gauge, timer, and distribution methods from the PulseClient.
swift/kotlin: add cancel method to GRPCStream` type (#24780).
all: enable HTTP/3 by default in Engine builders.
extendKeepaliveTimeoutmethod from engine builders.
java: moved the Java builder to use the C++ builder’s generated bootstrap, rather than doing YAML string manipulation (:issue: #25392 <25392>)
dnsPreresolveHostnamesAPIs from taking concatenated cluster YAML to taking a list of String hostnames (:issue: #25297 <25297>, :issue: #25259 <25259>, :issue: #25457 <25457>)
setRuntimeGuardAPIs for all languages (:issue: #25434 <25434>)
setNodeLocalityAPIs for all languages
setCdsLayerAPIs for all languages (:issue: #26122 <26122>)
api: removed the
enableSkipDNSLookupAPI. The runtime guard can still be set via
clusters: removing the base_h2 cluster. Requests with
http2will be sent to the base cluster and use the best available protocol (:issue #25796 <25796>).
clusters: only creating the stats cluster if an endpoint is configured. Previously if no domain was configured a cluster would be configured pointed at 127.0.0.1. (:issue: #25816 <25816>).
clusters: removing the base_h3 cluster. If HTTP/3 is enabled, the base cluster will use HTTP/3 instead. (:issue: #25814 <25814>).
listeners: switched the default listener from Envoy’s TCP listener to a lightweight API listener by default. (:issue: #25899 <25899>).
headers: removed the APIs for protocol based routing, as best available protocol is now automatically selected (#25893).
build: the minimum supported iOS version is now 13.0 and minimum MacOS version is 10.15 (:issue: #24994 <24994>).
android: fix engine startup crash for when admin interface is enabled. (#2520)
android: respect system security policy when determining whether clear text requests are allowed. (#2528)
android: fix JNI crashes when responses would have empty trailers. (#25516)
api: Add a constructor which takes a URL to C++ RequestEngineBuilder.
api: add option to support platform provided certificates validation interfaces on iOS and Android. (:issue #2144 <2144>)
api: Add a
setPerTryIdleTimeoutSeconds()method to C++ EngineBuilder.
swift/kotlin: add an option to enable DNS cache by calling
kotlin: add a way to tell Envoy Mobile to respect system proxy settings by calling an
enableProxying(true)method on the engine builder. (#2416)
kotlin: add a
enableSkipDNSLookupForProxiedRequests(true)knob for controlling whether Envoy waits on DNS response in the dynamic forward proxy filter for proxied requests. (#2602)
api: Add various methods to C++ EngineBuilder to bring it to parity with the Java and Obj-C builders. (#2498)
api: Add support for String Accessors to the C++ EngineBuilder. (#2498)
api: Add support for Native Filters and Platform Filters to the C++ EngineBuilder. (#2498)
api: added upstream protocol to final stream intel. (#2613)
enableHappyEyeballsturning up happy eyeballs by default.
build: Add a build feature
exclude_certificatesto disable inclusion of the Envoy Mobile certificate list, for use when using platform certificate validation.
build: Add a build feature
envoy_http_datagramsto allow disabling HTTP Datagram support. (#23564)
build: Add a build feature
envoy_mobile_stats_reportingto allow disabling stats reporting. (26086)
swift: Add a new Swift implementation of generating the Envoy bootstrap that replaces the previous Objective-C implementation. This can be enabled by setting
useSwiftBootstrap(true)and requires building with
android: log cleared JNI exceptions to platform layer as jni_cleared_pending_exception events (#26133).
0.5.0 (September 2, 2022)¶
api: replace the
drainConnections()method with a broader
api: disallow setting ‘host’ header directly (#2275)
android: respect Android’s NetworkSecurityPolicy isCleartextTrafficPermitted APIs.
net: enable happy eyeballs by default (#2272)
iOS: remove support for installing via CocoaPods, which had not worked since 2020 (#2215)
iOS: enable usage of
NWPathMonitorby default (#2329)
enableNetworkPathMonitorwith a new
setNetworkMonitoringModeAPI to allow disabling monitoring (#2345)
iOS: release artifacts no longer embed bitcode
api: engines are no longer a singleton, you may need to update your code to only create engines once and hold on to them. You also cannot assume that an envoy_engine_t value of 1 will return the default engine. Support for using multiple engines concurrently is coming later. (#2129)
iOS: change release artifacts to use xcframeworks (#2216)
Cronvoy: Cancel the scheduled onSendWindowAvailable callback when a stream is cancelled (#2213)
fix bug where writing prevented the read loop from running (#2221)
Android: update Kotlin standard libraries to 1.6.21 (#2256)
fix bug where finalStreamIntel was not consistently set on cancel (#2285)
iOS: fix termination crash in ProvisionalDispatcher (#2059)
iOS: use correct DNS resolver when using C++ config builder (:issue: #2378 <2378 >)
Android, iOS, & C++: add support for registering a platform KV store (:issue: #2134 <2134>, :issue: #2335 <2335>, :issue: #2430 <2430>)
api: add option to extend the keepalive timeout when any frame is received on the owning HTTP/2 connection. (#2229)
api: add option to disable the gzip decompressor. (:issue: #2321 <2321>) (:issue: #2349 <2349>)
api: add option to enable the brotli decompressor. (:issue #2342 <2342>) (:issue: #2349 <2349>)
api: add option to enable socket tagging. (:issue #1512 <1521>)
configuration: enable h2 ping by default. (:issue: #2270 <2270>)
android: enable the filtering of unroutable families by default. (:issues: #2267 <2267>)
instrumentation: add timers and warnings to platform-provided callbacks (:issue: #2300 <2300>)
iOS: add support for integrating Envoy Mobile via the Swift Package Manager
android: create simple persistent SharedPreferencesStore (:issue: #2319 <2319>)
iOS: A documentation archive is now included in the GitHub release artifact (:issue: #2335 <2335>)
api: improved C++ APIs compatibility with Java / Kotlin / Swift (:issue #2362 <2362>)
Android: default to use a
getaddrinfo-based system DNS resolver instead of c-ares (:issue: #2419 <2419>)
KeyValueStoreprotocol conformance to
UserDefaults(:issue: #2452 <2452>)
iOS: add experimental option to force all connections to use IPv6. (:issue: #2396 <2396>)
android: force the use of IPv6 addresses for all connections. (:issue: #2510 <2510>)
0.4.6 (April 26, 2022)¶
iOS: the minimum supported iOS version is now 12.0 (#2084)
happy eyeballs: fix missing runtime configuration (#2068)
iOS: fix CocoaPods releases (#2175)
android: fix Maven releases (#2183)
dns: prevent dns refresh if network is unchanged (#2122)
happy eyeballs: fix crash on Android (#2132)
ios: fix termination crash in ProvisionalDispatcher (#2059)
api: added Envoy’s response flags to final stream intel (#2009)
size: the size of the dynamic library was reduced by ~46% (#2053)
tls: updated the bundled root certificates (#2016)
api: expose “received byte count” in the Java API (#2004)
bazel: allow configuring Android toolchain versions (#2041)
ios: add explicit flow control onSendWindowAvailable to public interface (#2046)
api: add option to add a list of H2-Raw domain names (#2088)
ios: add support for toggling trust chain verification (#2104)
api: add support for configuring minimum DNS refresh rate and per-host max connections (#2123)
h3/quic: add experimental option to the Android/JVM EngineBuilder (#2163)
android: include debug info in release binary (#2188)
0.4.5 (January 13, 2022)¶
Based off Envoy v1.21.0
Decompressor: decompress even when no-transform is specified (#1995)
HTTP: any negotiated ALPN now passed up as x-envoy-upstream-alpn header (:issue: #1965 <1965>)
0.4.4 (December 30, 2021)¶
Explicit Flow Control: fix a reset-after-fin bug with explicit flow control (#1898)
HTTP: solve a race condition when resumeData is too early (#1926)
HTTP: fix race condition for last resumeData (#1936)
HTTP: expand response buffer limit to 1Mb (#1987)
JNI: fix support for non-direct byte buffers (#1950)
Network: make SrcAddrSocketOptionImpl safely handle null addresses (#1905)
Obj-c: fix NSString to envoy_data conversion (#1958)
Observability: fix V6 interface binding logging (#1959)
Cronvoy: use Explicit Flow Control (#1924)
DNS: add ability to use fallback nameservers. Android only (#1953)
DNS: add EngineBuilder API to filter unroutable families (#1984)
Interface Binding: support interface binding on Android (#1897)
Interface Binding: filter alt interfaces for binding by well-known prefixes (#1901)
Network: use NWPathMonitor to determine network reachability on iOS (#1874)
Networl: add iOS/Android support for enabling Happy Eyeballs (#1971)
Observability: instrument first active interfaces when switching socket modes (#1889)
0.4.3 (October 20, 2021)¶
Headers: delete splitting comma-separated header values and add specific logic to the RetryPolicy classes (#1752)
Headers: prevent nil header value crashes in obj-c (#1826)
Android: conditionally build internal getifaddrs support (#1772)
Connection handling: add API to drain connections (#1729)
Connection handling: remove alternate clusters (#1756)
DNS: use v4_preferred option (#1811)
DNS: EngineBuilder API addDnsQueryTimeoutSeconds (#1583)
HTTP: advertise h2 alpn string when forcing h2 (#1737)
HTTP: integrate callback-based error path (#1592)
HTTP: add H2 ping config API (#1770)
HTTP: per try idle timeout (#1805)
HTTP: Switching to Envoy Mobile HCM (#1716)
Interface Binding: allow to be configured in programmatic API (#1832)
Interface Binding: support conditionally binding active alt interface (#1834)
Interface Binding: implement initial heuristic for binding alternate interface (#1858)
Network: introduce singleton configurator (#1816)
Observability: emit events based on ENVOY_LOG_EVENT (#1746)
Observability: add engine API to dump stats (#1733)
Observability: emit envoy event every time envoy bug macro is called (#1771)
Observability: add method for enabling admin interface (#1636)
Observability: expose StreamIntel on stream callbacks (#1657)
Observability: emit events for assertions (#1703)
0.4.2 (July 27, 2021)¶
Filters: Prevent spurious cancellation callbacks from the gRPC error path (#1560)
JNI: null terminate strings before passing to NewStringUTF (#1589)
0.4.1 (May 28, 2021)¶
Fixes platform-bridged filters crash when resumed asynchronously after stream termination.
Disables route timeout by default.
Connection classes will open minimum of 2 under most circumstances to a given endpoint and distribute requests between them (previously, only 1).
Adds Pulse support for stats tags.
Enables configuration of stream idle timeout.
Introduces a Python interface compatible with the popular Requests library.
Adds experimental QUIC integration test.
Adds pure JVM support.
0.4.0 (March 23, 2021)¶
This is a large release. Moving forward the team will aim to release smaller version updates. The following is a very high-level overview of the larger changes going into this release.
Richer Platform-level Feature Set:
Adds pluggable logging capabilities via setLogger
Adds platform APIs for emitting time-series data
Adds platform Filters
Adds API for accessing arbitrary strings from platform runtime via addStringAccessor
Additional Language Bindings:
Alpha version of python APIs via C++ bindings
Alpha version exposing cronet compatible APIs
Continued Bug fixes uncovered by additional testing:
Fixes several memory management corner-cases
Fixes several issues that have led to production crashes
Additional hardening of the codebase via extensive testing:
Adds end-to-end testing that covers roundtrip code execution from the platform layer to the core layer.
Adds coverage CI runs for core C++ core
0.3.1 (July 23, 2020)¶
In the last few months the team has continued to harden Envoy Mobile with production exposure.
Stability and Production Hardening:
Updates termination signal handling (#835)
Updates battery and cpu analysis (#852)
Adds bi-directional compression support (#861)
Fixes SIGPIPE handling for iOS (#965)
Introduces formal style for cross-platform enums (#966)
Updates to build to C++17 (#964)
Adds emission rule for upstream_rq_active (#775)
Adds stats for 4xx codes (#902)
Introduces Envoy’s extension platform (#860)
0.3.0 (Mar 26, 2020)¶
This is the first release of Envoy Mobile Lyft is using in a production application! 🎉
Since early November, when the team tagged v0.2.0, we have been hard at work to stabilize the library, and harden it via experiments with Lyft’s Alpha and Beta releases. We have released Lyft’s production binaries with Envoy Mobile for a couple weeks now, and are starting to expose a percentage of our production clients to Envoy Mobile with this release.
Since v0.2.3 we have largely focused on observability:
Adds basic stats for retries #718)
x-envoy-attempt-countresponse header (#751)
0.2.3 (Feb 21, 2020)¶
This release provides stabilization fixes as follow-up changes to 0.2.2:
Fixes race that caused double-deletion of HCM active streams crashing (#669)
Fixes DNS resolution when starting Envoy Mobile offline on iOS (#672)
Fixes for linking and assertions (#663)
Fixes bad access in ~DnsCache() in Envoy upstream (#690)
Fixes bug in Dynamic Forward Proxy Cluster in Envoy Upstream (#678)
Adds known issue assertion that prevents crash on force-close (#699)
0.2.2 (Feb 3, 2020)¶
Envoy Mobile v0.2.2 changes how network requests are performed to no longer use Envoy’s AsyncClient and to instead consume the ApiListener directly (#616).
0.2.1 (Jan 6, 2020)¶
This release of Envoy Mobile contains some small improvements:
Maven release script for Android builds
Streams are now limited to a single “terminal” callback
Keepalive settings are now in place to better support connection switching and long-lived streams
Properly support IPv6 networks by using updated DNS settings
0.2.0 (Nov 4, 2019)¶
Envoy Mobile v0.2 is a fundamental shift in how mobile clients use Envoy. Envoy Mobile now provides native Swift/Kotlin APIs that call through to Envoy directly (rather than using Envoy as a proxy), which apps use to create and interact with network streams.
This release includes a variety of new functionality: - HTTP request and streaming support - gRPC streaming support through a built-in codec - Automatic retries using Envoy’s retry policies - Programmatic, typed configuration for launching the Envoy network library
0.1.1 (Sep 11, 2019)¶
This release is identical to v0.1.0, but packages the license and support for additional architectures.
0.1.0 (Jun 18, 2019)¶
Initial open source release.