1.3.0
- ktor 客户端代理支持
- 消除了 kotlinx.io 依赖
- 修复了服务器一致性压缩处理:保持原始内容长度
- 修复了处理正文的 GET 请求问题 #1302
- 修复了带有空正文的 curl 请求问题
- 添加了 iOS url 会话配置
- 修复了 CIO 引擎不再在“Host”头中发送端口的问题 #1295
- 向 TLS 签名算法添加 INTRINSIC 值
- 引入了在请求正文中发送字符串的能力
- 改进了客户端与服务器使用 kotlinx.serialization 的 typeOf 支持
- 具有新版元数据的 Gradle 5.4.1+
- 改进了 Android 上客户端与服务器的异常处理
- 添加了缺少的 TLS 的参数并放宽了 TLS 解析以忽略不支持的特性
- 改进了会话诊断 #1368
- 修复了测试引擎中
hookRequests
的问题 #1300
- 弃用了 java.time 相关 API 并进行相关清理(为了将来的 kotlin.time 支持)
- 限制了 CIO HTTP 头解析
- 引入了头名称与值验证
- 修复了 ktor 客户端在请求端必须重新验证的问题 #1406
- 修复了 OkHttp 客户端关闭时资源清理的问题
- 添加了 watchos/tvos 原生目标平台
- 修复了原生与 JS 目标平台的内容截断问题
- 修复了服务端的
If-Range
头解析问题,以免在日期解析时崩溃 #1377
- 修复了服务端的条件头处理问题
- 降低了
DefaultHeaders
服务端特性所需的 JDK 版本
- 修复了由于响应流水线中的异常导致客户端挂起的问题
- 将 HttpClientJvmEngine 替换成了现在所有平台共用的 HttpClientEngineBase(只影响自定义客户端引擎)
- 修复了客户端中执行与调用上下文的层次结构,允许使用执行上下文正确处理请求生存期。
- 优化 JS 模块导入时间 #1464
- 升级了 Netty、Jetty 与 Tomcat 实现的版本
- 添加了 Pebble 模板引擎 #1374
- 引入了始终与实际套接字端口绑定的 localPort 路由 #1392
- 修正了 cookie 过期日期解析的问题 #1390
- 服务端身份验证特性的各个阶段现在都已公开 #1160
- 修复了重定向后重新发送身份验证头的问题 #1467
- 对 CIO 客户端引擎来说 TCP 半关闭已可选,并且默认情况下是禁用的。 #1456
- 修复了 Apache 客户端随机超时问题
- 修复了区域设置相关代码 #1491
- 修复了提前关闭频道时的 unclosed websocket channels 问题
- 将 ktor-client-mock 引擎改进为线程安全 #1505
- 修复了客户端 cookie 日志记录 #1506
- 修复了测试引擎中的多次应用程序停止事件的问题 #1498
- 修复了 CIO ActorSelectorManager 因取消的键而不自旋的问题(既影响 CIO 客户端也影响 CIO 服务器)
- 使默认身份验证函数失败,以强制用户实现之
- 在测试服务器中引入了测试客户端实例
- 修复了各种服务器与客户端引擎,对于不存在的头返回 null 而非空列表
- 引入了对客户端和服务器中 json 结构的支持 #1519
- 修正了区域设置相关代码 #1491
-
kotlinx.coroutines 1.3.3
- 完整更新日志:https://github.com/ktorio/ktor/compare/1.2.4...1.3.0
- API 文档:https://api.ktor.io/1.3.0
发布于 2020-01-14(1.3.0
)
版本升级:
- Kotlin
1.3.50
-> 1.3.61
- kotlinx.coroutines
1.3.0
-> 1.3.3
- Dropwizard:
3.2.4
-> 4.1.0
- Tomcat:
9.0.10
-> 9.0.29
- Jetty:
9.4.22.v20191022
-> 9.4.24.v20191120
- Netty:
4.1.37.Final
-> 4.1.43.Final
- kotlinx.io ->
0.1.14
-> none
破坏性变更:
- 已删除 kotlinx.io 依赖,请替换导入项:
import kotlinx.io.
-> import io.ktor.utils.io.
import kotlinx.coroutines.io.
-> import io.ktor.utils.io.
- 与 1.2.x 二进制不兼容
- 不兼容的 Gradle 元数据版本(MPP 需要 5.4.1+ 版本)
- 忘记调用
HttpResponse.close
会很危险,因此我们清除了其 API:
HttpResponse
不再是 Closeable
:无需关闭,无资源泄露
HttpResponse
默认在内存中
- 引入了
HttpStatement
:用于流式处理与部分加载的新的原语
- Web socket session
send
function now throws CancellationException
instead of ClosedSendChannelException
.
已知问题:
- Netty HTTP/2 推送有时会被拒绝
- 仍然不支持在非 main worker 上运行 iOS 与原生客户端
- JS 引擎可能会触发 CORS 预检 (#1533)