Skip to content

Commit

Permalink
Prepare for release 5.0.0-alpha.13.
Browse files Browse the repository at this point in the history
  • Loading branch information
swankjesse committed Apr 17, 2024
1 parent 689d388 commit e274b91
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 1 deletion.
71 changes: 71 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,72 @@ Change Log

See [4.x Change log](https://square.github.io/okhttp/changelogs/changelog_4x/) for the stable version changelogs.

## Version 5.0.0-alpha.13

_2024-04-16_

* Breaking: Tag unstable new APIs as `@ExperimentalOkHttpApi`. We intend to release OkHttp 5.0
without stabilizing these new APIs first.

Do not use these experimental APIs in modules that may be executed using a version of OkHttp
different from the version that the module was compiled with. Do not use them in published
libraries. Do not use them if you aren't willing to track changes to them.

* Breaking: Drop support for Kotlin Multiplatform.

We planned to support multiplatform in OkHttp 5.0, but after building it, we weren't happy with
the implementation trade-offs. We can't use our HTTP client engine on Kotlin/JS, and we weren't
prepared to build a TLS API for Kotlin/Native.

We'd prefer a multiplatform HTTP client API that's backed by OkHttp on Android and JVM, and
other engines on other platforms. [Ktor] does this pretty well today!

* Breaking: Use `kotlin.time.Duration` in APIs like `OkHttpClient.Builder.callTimeout()`. This
update also drops support for the `DurationUnit` functions introduced in earlier alpha releases
of OkHttp 5.

* Breaking: Reorder the parameters in the Cache constructor that was introduced in 5.0.0-alpha.3.

* New: `Request.Builder.cacheUrlOverride()` customizes the cache key used for a request. This can
be used to make canonical URLs for the cache that omit insignificant query parameters or other
irrelevant data.

This feature may be used with `POST` requests to cache their responses. In such cases the
request body is not used to determine the cache key, so you must manually add cache-relevant
data to the override URL. For example, you could add a `request-body-sha256` query parameter so
requests with the same POST data get the same cache entry.

* New: `HttpLoggingInterceptor.redactQueryParams()` configures the query parameters to redact
in logs. For best security, don't put sensitive information in query parameters.

* New: `ConnectionPool.setPolicy()` configures a minimum connection pool size for a target
address. Use this to proactively open HTTP connections.

Connections opened to fulfill this policy are subject to the connection pool's
`keepAliveDuration` but do not count against the pool-wide `maxIdleConnections` limit.

This feature increases the client's traffic and the load on the server. Talking to your server's
operators before adopting it.

* New in okhttp-android: `HttpLoggingInterceptor.androidLogging()` and
`LoggingEventListener.androidLogging()` write HTTP calls or events to Logcat.

* New: `OkHttpClient.webSocketCloseTimeout` configures how long a web socket connection will wait
for a graceful shutdown before it performs an abrupt shutdown.

* Fix: Honor `RequestBody.isOneShot()` in `MultipartBody`

* Fix in `okhttp-coroutines`: Don't leak response bodies in `executeAsync()`. We had a bug where
we didn't call `Response.close()` if the coroutine was canceled before its response was
returned.

* Upgrade: [Okio 3.9.0][okio_3_9_0].

* Upgrade: [Kotlin 1.9.23][kotlin_1_9_23].

* Upgrade: [Unicode® IDNA 15.1.0][idna_15_1_0]


## Version 5.0.0-alpha.12

_2023-12-17_
Expand Down Expand Up @@ -357,20 +423,25 @@ Note that this was originally released on 2020-10-06 as 4.10.0-RC1. The only cha
release is the version name.


[Ktor]: https://ktor.io/
[assertk]: https://github.com/willowtreeapps/assertk
[graalvm]: https://www.graalvm.org/
[graalvm_21]: https://www.graalvm.org/release-notes/21_0/
[graalvm_22]: https://www.graalvm.org/release-notes/22_2/
[idna_15_1_0]: https://www.unicode.org/reports/tr46/#Modifications
[kotlin_1_4_20]: https://github.com/JetBrains/kotlin/releases/tag/v1.4.20
[kotlin_1_5_31]: https://github.com/JetBrains/kotlin/releases/tag/v1.5.31
[kotlin_1_6_10]: https://github.com/JetBrains/kotlin/releases/tag/v1.6.10
[kotlin_1_6_21]: https://github.com/JetBrains/kotlin/releases/tag/v1.6.21
[kotlin_1_7_10]: https://github.com/JetBrains/kotlin/releases/tag/v1.7.10
[kotlin_1_9_21]: https://github.com/JetBrains/kotlin/releases/tag/v1.9.21
[kotlin_1_9_23]: https://github.com/JetBrains/kotlin/releases/tag/v1.9.23
[loom]: https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html
[okio_2_9_0]: https://square.github.io/okio/changelog/#version-290
[okio_3_0_0]: https://square.github.io/okio/changelog/#version-300
[okio_3_1_0]: https://square.github.io/okio/changelog/#version-310
[okio_3_2_0]: https://square.github.io/okio/changelog/#version-320
[okio_3_7_0]: https://square.github.io/okio/changelog/#version-370
[okio_3_9_0]: https://square.github.io/okio/changelog/#version-390
[rfc_8305]: https://tools.ietf.org/html/rfc8305
[uts46]: https://www.unicode.org/reports/tr46
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ configure<SpotlessExtension> {

allprojects {
group = "com.squareup.okhttp3"
version = "5.0.0-SNAPSHOT"
version = "5.0.0-alpha.13"

repositories {
mavenCentral()
Expand Down
6 changes: 6 additions & 0 deletions docs/changelogs/changelog_4x.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,25 @@ OkHttp 4.x Change Log
_2023-10-16_

* Fix: Don't hang taking headers for HTTP 103 responses.

* Fix: Recover gracefully when a cache entry's certificate is corrupted.

* Fix: Fail permanently when there's a failure loading the bundled public suffix database.
This is the dataset that powers `HttpUrl.topPrivateDomain()`.

* Fix: Immediately update the connection's flow control window instead of waiting for the
receiving stream to process it.

This change may increase OkHttp's memory use for applications that make many concurrent HTTP
calls and that can receive data faster than they can process it. Previously, OkHttp limited
HTTP/2 to 16 MiB of unacknowledged data per connection. With this fix there is a limit of 16 MiB
of unacknowledged data per stream and no per-connection limit.

* Fix: Don't operate on a connection after it's been returned to the pool. This race occurred
on failed web socket connection attempts.

* Upgrade: [Okio 3.6.0][okio_3_6_0].

* Upgrade: [Kotlin 1.8.21][kotlin_1_8_21].


Expand Down

0 comments on commit e274b91

Please sign in to comment.