Changelog History
Page 1
-
v2.1.3 Changes
Published 26 October 2022
- JS: window.location.origin returns null when executed in iframe via srcdoc attribute (KTOR-4993)
- π SensitivityWatchEventModifier - Move the reflection call of this modifier out from the Ktor Core (KTOR-1647)
- π "java.lang.IllegalArgumentException: Failed requirement." in SelectorManagerSupport (KTOR-2914)
- HOCON: CLI parameters don't override custom properties since 2.1.0 (KTOR-5000)
- β± Websockets timeout doesn't cause a close of a connection (KTOR-3504)
- 0οΈβ£ DefaultHeaders: a header is duplicated in a StatusPages's handler (KTOR-4990)
- β± Websockets: timeout doesn't cause closing of incoming and outgoing channels (KTOR-2430)
- RFC 3986 recommendation for encoding URI is NOT followed (KTOR-993)
- Cookies: Invalid encoding of cookies' values since 1.4.0 (KTOR-917)
- ByteReadChannel is unable to read files with long lines (KTOR-2588)
- π§ WebSocketDeflateExtension configureProtocols always failed with stackOverflow (KTOR-4916)
- β‘οΈ Update Kotlin to 1.7.20 (KTOR-4963)
- π Netty HTTP/2: response headers contain ":status" header and that leads to IllegalHeaderNameException in the ConditionalHeaders plugin (KTOR-4943)
- β Maven: ktor-server-test-host-jvm causes dependency error starting from Ktor 2.0.3 (KTOR-4900)
- Autoreloading: "Flow invariant is violated" error since Ktor 2.0.3 (KTOR-4926)
- β Autoreloading: ClassCastException when retrieving plugins in testApplication (KTOR-4729)
- β± CIO engine has wrong doc for request timeout (KTOR-4941)
- CIO: A request through a proxy server results in 403 from Cloudflare (KTOR-4925)
-
v2.1.2 Changes
Published 29 September 2022
- HttpCacheEntry ignoring Request Cache-Control directives (KTOR-4894)
- β testApplication does not handle port and connectors (KTOR-4875)
- Native: Wrong status code when requesting with DELETE method and body (KTOR-3566)
- π Default host address 0.0.0.0 isn't reachable on Windows (KTOR-4834)
- β TestApplicationEngine error handling is inconsistent with DefaultEnginePipeline, breaking clients (KTOR-4009)
- π Routing: Wrong content-type results in 400 Bad Request instead of 415 Unsupported Media type (KTOR-4849)
-
v2.1.1 Changes
Published 6 September 2022
- π CIO: responses are received with a huge delay on JVM Windows (due to reverse DNS lookup internally) (KTOR-4827)
- Netty HTTP/2 not working (KTOR-578)
- HTTP/2 push fails with Netty engine (KTOR-800)
- HttpCookies: no space between cookie pairs (KTOR-3854)
- Netty ALPN provider detection not working (KTOR-4712)
- π CIO: Connection reset by peer on MacOS (KTOR-2036)
- CallLogging MDC with sessions: Application feature Sessions is not installed (KTOR-550)
- π Deprecate Public API with Atomicfu Declarations (KTOR-4774)
- π Deprecate receiveOrNull because it's confusing (KTOR-4772)
- π Server ContentNegotiation Plugin doesn't check ignoredTypes for Request Body (KTOR-4770)
- IllegalArgumentException is thrown when UnixSocketAddress.path is accessed on JVM (JDK 16+) (KTOR-4695)
- WebSocketDeflateExtension not following RFC (KTOR-4696)
- π The parseWebSocketExtensions function behaves incorrectly (KTOR-3189)
- Receive non-Nullable Type Throws NPE in Case of Failure (KTOR-4771)
- Darwin: Symbol not found: OBJC_CLASS$_NSURLSessionWebSocketMessage on iOS 12 (KTOR-4159)
- π Fix Merging Date Headers on the Client (KTOR-4782)
- β Replace exception in InputStreamAdapter and OutputStreamAdapter constructors with warning message If parking (KTOR-4736)
- Clearing Session Cookie in Chrome 80+ with SameSite and Secure (KTOR-437)
- The
OutgoingContent.toByteArray()
stalls when used in combination with aOutgoingContent.WriteChannelContent
(KTOR-2126) - Missing Content-Type header in a request (KTOR-1407)
- π· Crash when making requests from browser inside of web worker (KTOR-4715)
- An error occurs when there is a binary such as protobuf in the response body of error (KTOR-1619)
- π§ CallLogging configured MDC entries are not passed to StatusPages exception handlers (KTOR-4193)
- LocalFileContent incorrectly relies on the last modification time of a file to check its existence (KTOR-4707)
- Sessions: WSS in combination with Secure cookies throws IllegalArgumentException (KTOR-4697)
- π§ Json request failure with configured form authentication (KTOR-678)
-
v2.1.0 Changes
Published 11 August 2022
- β Add YAML Configuration Format Support (KTOR-3572)
- π Allow overriding HSTS settings per host (KTOR-4578)
- CORS: Pattern matching for origin (KTOR-316)
- Darwin: Allow setting custom NSURLSession (KTOR-583)
- π Support setting caching options on call (KTOR-457)
- βͺ Revert default behavior of string encoding for ContentNegotiation and JsonPlugin (KTOR-4739)
- π Make Content-Length header validation optional (KTOR-4655)
- π Client resources plugin miss builders for PATCH method (KTOR-4658)
- The awaitSuspend method wakes up early in closed ByteChannelSequential (KTOR-4597)
- π HttpCache plugin does not support max-stale directive (KTOR-4610)
- Incoming request body validation (KTOR-503)
- π Client does not support sending or receiving json null value (KTOR-745)
- π» Jetty: Content Length exception when body size is greater than 4096 bytes (KTOR-4622)
- π§ Darwin: configureRequest doesn't actually configure a NSMutableURLRequest when HTTP request is made (KTOR-4719)
- OAuth2: Allow sending extra parameters for authorization and access token requests (KTOR-2128)
- π§ Java engine: Allow configuring HTTP version (KTOR-4609)
- ContentEncoding: body<ByteArray>() receives truncated array (KTOR-4653)
- π Support configuring Netty codec limits via application config (KTOR-4636)
- [OkHttp] StreamRequestBody should override isOneShot or allow multiple reads of request body (KTOR-4637)
- OverridingClassLoader fails to delegate to parent for resources (KTOR-4004)
- OkHttp and iOS: request with only-if-cache directive in Cache-Control header fails with 504 when match is stale (KTOR-4127)
- π Allow Pebble to use Accepted Language header for built-in i18n support (KTOR-4593)
- β Test engine can't handle concurrent requests (KTOR-4572)
- π Parameters of cloned UrlBuilder affect parameters of an original builder (KTOR-4573)
- π Reified type causes ApplicationCall.receive() throw UnsupportedOperationException (KTOR-3715)
- ApplicationConfig lacks the ability to export a part of the config to a third-party library (KTOR-4416)
- Path parameter doesn't get encoded in type safe requests (KTOR-3953)
- β‘οΈ Update Kotlin to 1.7.0 (KTOR-4450)
- β¬οΈ Bump jteVersion from 2.0.3 to 2.1.2 (KTOR-4648)
-
v2.0.3 Changes
Published 28 June 2022
- Development mode class loader leads to ClassCastException within a CouroutineScope (KTOR-4164)
- Validate that the body of an incoming request is received completely (KTOR-4379)
- UrlBuilder escapes fragment parameters (KTOR-4412)
- CallLogging: JVM crashes when jansi checks whether a file descriptor refers to a terminal (KTOR-3476)
- β± WebSocket client closes connection due to an HTTP request timeout (KTOR-4419)
- [JS client] Cannot change redirect policy by followRedirects=false (KTOR-326)
- π CIO engine doesn't apply a request timeout from the
HttpTimeout
plugin (KTOR-4473) - CIO: Websockets request doesn't include query parameters (KTOR-4390)
- Ignore SIGPIPE for server sockets (KTOR-4474)
- Direct byte buffers are increased in size when server slowly processes request (KTOR-4397)
- π UDP responses are received with a huge delay on JVM Windows (due to reverse DNS lookup internally) (KTOR-4423)
- π "No instance for key AttributeKey: ApplicationPluginRegistry" when exception is thrown during the Call phase (KTOR-4448)
- π» Non-decipherable exception "No result transformation found" (KTOR-4287)
- Unable to set the Content-Type header in a request (KTOR-620)
- β‘οΈ Update kotlinx.coroutines to 1.6.2 (KTOR-4451)
- π Support the HttpTimeout capability in the DelegatingTestClientEngine (KTOR-4436)
- Limit the number of parallel running requests in Netty (KTOR-4575)
- π Resources plugin fails to process parameters of type UShort (KTOR-4424)
- 0οΈβ£ Resources plugin doesn't respect default values for Enum (KTOR-4411)
- Invalid request line produced by CIO engine for URL with parameters and without path (KTOR-4347)
- π call.receiveText() tries to parse body as JSON when the ContentNegotiation plugin is installed (KTOR-4426)
- Ignore ByteReadChannel as receive type in ContentNegotiation (KTOR-4511)
- π Setting body to TextContent leads to NPE when the ContentNegotiation plugin is installed (KTOR-4383)
- π submitFormWithBinaryData call leads to NPE when the ContentNegotiation plugin is installed (KTOR-4269)
- π ResponseConverter NPE when returning ByteArray with the ContentNegotiation plugin (KTOR-4399)
-
v2.0.2 Changes
Published 27 May 2022
- [iOS] Prevent HttpClient from persisting cookies across requests (KTOR-3748)
- π Web feedback from "Creating HTTP APIs", https://ktor.io/docs/creating-http-apis.html (KTOR-4380)
- When returning a String, content negotiation is ignored (KTOR-662)
- HttpResponse.bodyAsChannel should not be converted by ContentNegotiation (KTOR-4341)
- Strings are not decoded when received as application/json (KTOR-385)
- Document how to enable/disable HTTP/2 for different client engines (KTOR-4340)
- βͺ Revert Dokka to 1.6.10 due to Publication Freeze (KTOR-4290)
- Document a new memory model in KMM tutorial (KTOR-4354)
- π Make client docs less JVM-centric (KTOR-4351)
- Darwin engine: Client connection is closed after each request (KTOR-4145)
- Ios: NullPointerException when query parameters contain cyrillic symbols in values (KTOR-1858)
- A native application with the Darwin engine doesn't make a request (KTOR-3900)
- Darwin and Kotlin/JS: "List has more than one element" error when header like Content-type is duplicated in a response (KTOR-4105)
- Invalid response without error (KTOR-369)
- Invalid HTTP version should fail (KTOR-380)
- The colon after the host parameter requires a port (KTOR-382)
- β Kotlin/Native: testApplication's client sometimes fails to receive ByteArray response from a route (KTOR-4197)
- π¨ "Application started" is never printed (KTOR-4319)
- 0οΈβ£ Default request without explicit port sets port 80 for all requests (KTOR-4281)
- π Documentation about how to configure libcurl on Windows (KTOR-3988)
- π API Docs reference RFCs. Better to reference our own documentation (KTOR-3764)
- π UninitializedPropertyAccessException in the handleResponseExceptionWithRequest when request or response are accessed through (KTOR-4230)HttpClientCall
- π» The original exception is swallowed by "No request transformation found" exception when request body is serializable object (KTOR-4160)
- IncorrectDereferenceException when trying to create HttpClient from background thread on iOS (KTOR-4263)
- JacksonWebsocketContentConverter.deserialize just doesn't work (KTOR-4248)
- π Documentation for migration of Authentication server plugin (KTOR-4253)
- β Add sample for the AuthenticationChecked hook (KTOR-4278)
- π³ Web feedback from "Docker", https://ktor.io/docs/docker.html (KTOR-4282)
- Route's path parameters are empty when ApplicationCall.authentication is first accessed in a different ApplicationCall context (KTOR-4250)
- Routes with tailcard should not count for specific http error codes (KTOR-4280)
- π Documentation for appending query parameters for URL in the DefaultRequest (KTOR-4252)
- Routing returns 405 even for not completely matched paths (KTOR-4267)
- π Resources: builder methods return routes with PathSegmentConstantRouteSelector instead of HttpMethodRouteSelector (KTOR-4239)
- β‘οΈ Update Netty to 4.1.77.Final (KTOR-4339)
- External services should use config from environment (KTOR-4373)
- β‘οΈ Update Jackson to 2.13.3 (KTOR-4394)
-
v2.0.1 Changes
Published 28 April 2022
- π Fix URL representation (KTOR-4241)
- embeddedServer for CIO and Netty inconsistency (KTOR-755)
- β‘οΈ Update Coroutines to 1.6.1 (KTOR-4240)
- π Locations: Support trailing / (KTOR-836)
- Resources: Make
Route.handle
public (KTOR-4200) - π Fix CURL flaky initialization (KTOR-4223)
- β‘οΈ Optimize Slow Native Tests (KTOR-4224)
- π¨ Print Native Stacktrace on Timeout (KTOR-4198)
- β± """IllegalStateException: Operation is already in progress"" when the readByte is called the second time after a timeout" (KTOR-4218)
- β‘οΈ Update Kotlin to 1.6.21 (KTOR-4221)
- β‘οΈ Update code for editing an article in the 'Interactive website' tutorial (KTOR-4227)
- 0οΈβ£ DefaultRequest: HTTPS protocol isn't set when using Ktor 2.0.0 (KTOR-4142)
- 0οΈβ£ DefaultRequest: host and port aren't used for a request (KTOR-4154)
- β A table with test methods should span the entire width of the dialog (KTOR-4064)
- π StatusPages plugin does not handle most specific exception in Ktor 2.0.0 (KTOR-4187)
- Behaviour of ApplicationEngine start method not documented properly (KTOR-2271)
- π CORS plugin should be route scoped (KTOR-4157)
- π Raw Web Socket Connection Suspending Forever (KTOR-4166)
- π StatusPages: SerializationException isn't handled when CallID plugin is installed after StatusPages plugin (KTOR-4155)
- 0οΈβ£ HttpClient.wss defaults to port 80 instead of 443 (KTOR-4175)
- Missing subject parameter in StatusPages
status
config method (KTOR-4191) - ConditionalHeaders cause the Last-Modified header appears twice in a response (2.0.0) (KTOR-4163)
- 0οΈβ£ DefaultHeaders: The Server header appears twice in a response (2.0.0) (KTOR-4152)
- β Testing: Resolving a substitution to a value in default config fails when custom HOCON config is used (KTOR-4130)
π Combination of HttpCache and Logging plugins cause receiving incomplete response body for chunked replies (KTOR-3916)
2.0.0
Published 11 April 2022
HttpClient breaks permanently when certain exceptions occur while consuming ByteReadChannel (KTOR-3140)
π Fix Dokka publication for 2.0.0 (KTOR-4194)
π [Doc] invalid KDoc link for https://ktor.io/docs/http-client-engines.html#darwin (KTOR-4165)
π Update the 'Manual Configuration' help link after the 2.0.0 release (KTOR-3678)
π Where did 1.6.8 docs go? (KTOR-4147)
Fail to create response observer in different native thread. (KTOR-3278)
"Ktor app with Kotlin/Native fails with ""There is no event loop. Use runBlocking { ... } to start one.""" (KTOR-4149)
β‘οΈ Update limitations for Kotlin/Native (KTOR-4143)
UDP sockets on native (KTOR-1159)
β Ktor stopped working with latest Tomcat 9.0.39 (KTOR-1172)
β‘οΈ Update to Kotlin 1.6.20 (KTOR-4107)
π ContentNegotiation: the plugin removes Content-Type header even when a matching registration is not found (KTOR-4091)
JMXReporter not included in ktor-metrics:1.6.8 (KTOR-4102)
π Performance Issue / Ktor & Netty (KTOR-610)
π httpMethod is not affected by X-Http-Method-Override (in opposite to docs) (KTOR-404)
Android: Failed resolution of: Ljava/nio/file/Paths using API 25 and lower (KTOR-3269)
π ContentNegotiation plugins don't accept null-responses from ContentConverts (KTOR-3346)
Using proguard and CallLogging feature causes JVM crashes (KTOR-3345)
β Remove checking body transformation from ContentNegotation (KTOR-3272)
π Feature: Use websockets with serialization (KTOR-423)
π Fix
testErrorHandling
with JS (KTOR-3510)[netty] Headers are only flushed after first byte is written (KTOR-3364)
AttributeKey instance is identified by its identity instead of its name (KTOR-3538)
π HttpCookies: parse / in the name of a cookie (KTOR-3497)
Returning Thymeleaf fragments from Routes (KTOR-3624)
π Rewrite Thymeleaf to New Plugins API (KTOR-3687)
π Rewrite HSTS to new plugins API (KTOR-3752)
π Rewrite FreeMarker to new Plugins API (KTOR-3751)
π Rewrite CachingHeaders to New Plugins API (KTOR-3688)
π Implementation for Single Page Plugin (KTOR-3635)
Sockets no longer working on Android since 2.0.0-beta-1 (KTOR-3659)
π Implementation for Single Page Plugin (KTOR-3577)
Content Negotiation: Gson: Should be able to return 400 for badly formatted request. (KTOR-373)
π Rewrite ConditionalHeaders to New Plugins API (KTOR-3759)
π Single Page Plugin (KTOR-3531)
π HttpResponseValidator.handleResponseException should have access to request to provide valuable information in exceptions (KTOR-3652)
π Build in feature for Single PAge Applications (KTOR-515)
"ContentNegotiation: The ""charset=UTF-8"" part is added for the Content-Type header" (KTOR-3799)
Rewrite Netty Engine (KTOR-3467)
π SinglePageApplication plugin returns 404 for non-existent paths (KTOR-3944)
π¦ Split packages in KTOR Client 2.00-BETA-1 (KTOR-4106)
π Support WebSockets in Darwin engine (KTOR-4093)
β± Ktor http client with java engine uses incorrect timeout. (KTOR-4058)
π ktor-client performance (KTOR-506)
InvalidPathException in ApplicationEngineEnvironmentReloading (KTOR-3831)
"Screenshot with the new project wizard on the ""Create a new projectο»Ώ"" topic is outdated" (KTOR-4020)
β Add possibility to fully configure metricName in ktor-server-metrics-micrometer (KTOR-3302)
β Adding Native support to ktor-server-html-builder for 2.0.0 release (KTOR-3972)
π€‘ Ktor: Allow overriding coroutine dispatcher in MockEngine (KTOR-3230)
π HttpClient request hangs when Logging plugin is installed (KTOR-3970)
Ktor uses too much memory compared to other Http server libraries (KTOR-3903)
[client] MPP WebSockets client (KTOR-751)
π Native websocket client support (KTOR-599)
Don't perform migrations for MPP projects (KTOR-3812)
π Change visibility from internal to public to HttpResponse and HttpClientCall (KTOR-3984)
π Rename the 'header' function to 'allowHeader' for consistency with similar functions (KTOR-3980)
π The CallID plugin missing in a New Project wizard (KTOR-2911)
π IDEA plugin missing the Session authentication (KTOR-3359)
π Install plugin completion doesn't work with custom built version of Ktor from main (KTOR-4031)
π Memory leak when Compression plugin is installed (KTOR-4028)
π Make most useful hooks public (KTOR-3797)
β The ShutDownUrl sample doesn't work in the latest EAP (KTOR-4025)
OAuth: scopes are separated by + that's encoded to %2B (KTOR-3945)
β The Caching headers plugin stops working in the latest EAP (KTOR-4022)
π The 'allowHeadersPrefixed' and 'allowHeaders' CORS functions works incorrectly (KTOR-3979)
β Migrate Generator to New Testing API (KTOR-3763)
π Support receiving OAuth code response as form post (KTOR-3342)
β Ktor test websocket call hangs (KTOR-4000)
β Implementation for Create
ktor-test
module with mocks of engine and clients for writing tests (KTOR-3236)β Remove mutex from call logging (KTOR-3987)
β Add jte template support (KTOR-3749)
No contextual serializers when KotlinxSerializationConverter is used (KTOR-3782)
β Add support for list size methods in PlaceholderList (KTOR-3940)
Missing headers in OutgoingContent (KTOR-3758)
ResponseObserver does not respect MDC context (KTOR-2435)
Binary compatibility issue with ktor-2.0.0-beta1 when using JDK 1.8 (KTOR-3645)
β¨ Enhance api for ConditionalHeaders usage (KTOR-728)
π localization issue with new project wizard - plugin page (KTOR-3943)
IDE action to migrate to 2.0.0 (KTOR-3225)
β Add colors to CLI client (KTOR-3929)
π Support macOs M1 in CLI generator (KTOR-3922)
Bearer Auth: refreshTokens callback blocks indefinitely when server returns 401 (KTOR-3795)
"ContentEncoding: ""Unexpected EOF: expected 10 more bytes"" when trying to decode HEAD response" (KTOR-3781)
Memory leak in ktor-client-curl (KTOR-3767)
π Rename ApplicationPlugin to BaseApplicationPlugin (KTOR-3873)
Ktor Server and double receive break receiving of big files (KTOR-3832)
Setting Content-Length Header manually when using call.respondOutputStream (KTOR-560)
π Support for adding values to the MDC later on in the pipeline. (KTOR-536)
0οΈβ£ Default request: Query parameters in default URL are overwritten (KTOR-3793)
β± Timeout in receiving streaming body breaks client (KTOR-3704)
0οΈβ£ Setting DefaultRequest.url.protocol on the client side breaks the ability to establish a ws connection (KTOR-3890)
π¦ Rename the 'io.ktor.resources.serialisation' package to '...serialization' for consistency (KTOR-3842)
π Generator performance: cache Maven requests (KTOR-3866)
JS: Websocket errors are not being handled correctly (KTOR-1726)
β Logback transient depencency from ktor-server-test-host (KTOR-2038)
π Ktor plugin is asking to migrate to EAP versions (KTOR-3609)
"Module ""io.ktor:ktor-network (io.ktor:ktor-network-iosarm64)"" has a reference to symbol kotlinx.coroutines/SingleThreadDispatcher|null[0]" (KTOR-3562)
Retry on HttpCode or network error (KTOR-572)
Server hangs indefinitely when responding to requests on android using version 2.0.0 (KTOR-3653)
IllegalStateException when writing in coroutine context backed by more than one thread (KTOR-3801)
π· References for kotlinx.serialization plugin sample code in a new Ktor project created with Maven build system are unresolved (KTOR-3754)
multipart/form-data requests: No way of streaming data asynchronously (KTOR-3825)
π Migrate ForwardHeaderSupport to new API (KTOR-3677)
β Sort endpoints in Endpoint view and when creating tests (KTOR-3725)
StackOverflowError when opening Enpoints view with local Routing function (KTOR-3816)
Provide an example how to use new MultiPartFormDataContent (#KTOR-325) (KTOR-3549)
π Client docs for desktop are misleading (KTOR-3813)
When working with SessionStorage, write is called every time after read (KTOR-3336)
0οΈβ£ DefaultRequest API doc contains missing members (KTOR-3800)
β testApplication: Add https EngineConnector (KTOR-3810)
π Rewrite HttpsRedirect to New Plugins API (KTOR-3668)
π Rewrite WebJars to New Plugins API (KTOR-3667)
π Rewrite Metrics to New Plugins API (KTOR-3666)
π Rewrite PartialContent to New Plugins API (KTOR-3665)
π Rewrite CallId to New Plugins API (KTOR-3352)
β¬οΈ Drop Before/After from new plugins API (KTOR-3803)
π Performance: Don't store PSI elements in Ktor Url Mappings. Use Smart Reference or PSI Anchor, instead (KTOR-3789)
π Infrastructure: Build with JDK 11 for all modules fails: Can't inline metric micrometer because it uses jvm target 8 (KTOR-3712)
The 'refreshTokens' callback isn't invoked when an API returns a 401 response without the 'WWW-Authenticate' header (KTOR-3516)
β Add DslMarker to testApplication builder (KTOR-3783)
π§ Prohibit Nesting of
install
Blocks for Client and Server Configuration (KTOR-3333)π In docs and generated Gradle, Prometheus is misspelled as Promteteus (KTOR-3792)
submitFormWithBinaryData: mutation attempt of frozen @194c6a8 (KTOR-2947)
iOS: Failed to find HttpClientEngineContainer with new native memory model (KTOR-3517)
π Rewrite CallLogging to new plugins API (KTOR-3351)
β¬οΈ Drop @ExperimentalTime (KTOR-3595)
Using any Suspend or Coroutine function in Bearer Auth functions cause crash on iOS (KTOR-3177)
[iOS] InvalidMutabilityException: mutation attempt of frozen (KTOR-1223)
π§ InvalidMutabilityException: Configuration issues for ios (KTOR-1251)
β iOS testing MockEngine issue (KTOR-1541)
"""InvalidMutabilityException: Frozen during lazy computation"" when using by lazy for HttpClient" (KTOR-1087)
kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections on iOS when deserializing class that contains less properties than the json (KTOR-2740)
Native: Cannot mutate objects inside onDownload and onUpload lambdas (KTOR-3068)
π§ "HttpClient / native: ""mutation attempt of frozen"" crash when configuring the client" (KTOR-1628)
Ktor Kotlin Multiplatform leak (KTOR-3586)
Put label to local history before performing migration in Ktor (KTOR-3716)
π StatusPages plugin continues call after calling handler (KTOR-3707)
π» StatusPages not returning code 500 on catched exception (KTOR-3721)
π Rewrite Compression to New Plugins API (KTOR-3661)
π Rewrite Auto Head to New Plugins API (KTOR-3670)
π Rewrite DoubleReceive to New Plugins API (KTOR-3672)
0οΈβ£ Make default charset UTF-8 when using
receiveText
for application/json request (KTOR-789)π Rewrite CORS to New Plugins API (KTOR-3663)
π Rewrite Auth to New Plugins API (KTOR-3660)
π Rewrite Sessions to New Plugins API (KTOR-3664)
π Rewrite ContentNegotiation to New Plugins API (KTOR-3669)
π Rewrite MethodOverride to New Plugins API (KTOR-3662)
0οΈβ£ Client logging: no description of default loggers' behavior on different platforms (KTOR-3421)
β‘οΈ Update logback and slf4j (KTOR-3733)
π NoClassDefFoundError is thrown on Android because ktor-utils references a not supported Java API (KTOR-3690)
π Ktor-Utils references a Java API not supported by Android (KTOR-3426)
π Migrate plugins to multiplatform (KTOR-3539)
ByteBufferChannel leaves unflushed data after partial readAvailable causing Apache client request to stall (KTOR-3730)
0οΈβ£ Migrate DefaultHeaders to new API (KTOR-3676)
ByteReadPacket.headerSizeHint is unused (KTOR-3632)
π Hooks don't work with routing scoped plugins (KTOR-3740)
π Client request builder: add shortcuts for authentication headers (KTOR-2876)
π Pull Request - KTOR-404 Introduce support for X-Http-Method-Override (KTOR-1825)
Can't set a base url that includes path data (KTOR-730)
Mention about closing ActorSelector manager (KTOR-269)
βͺ Migrate to new kotlinx.coroutines and
limited
dispatcher(revert corePoolSize option) (KTOR-3463)Routing is called for handled requests (KTOR-3732)
π TomCat Documentation (KTOR-2395)
π¦ default resource package don't work (KTOR-3722)
webSocketSession method suspends indefinitely when there in connection error (Ktor beta) (KTOR-3654)
FUS metrics in IDE (KTOR-2775)
π Update Documentation and Code for DoubleReceive Feature (KTOR-1876)
β Add Defaults for the server.stop Method (KTOR-3505)
HTTP/2 not working with Netty (KTOR-3705)
β‘οΈ Include changes from hands-on PR: Update 03_customer-routes.md #120 (KTOR-3713)
Nested routing fails to match route (KTOR-1626)
URLBuilder from string with trailing slash or from
Url
with no trailing slash, produces double slash when appending segments (KTOR-3618)β Provide the capability to generate WebSocket tests (KTOR-3061)
β Add modulepath support for Java >= 9 (KTOR-619)
π HttpRequestRetry plugin expects Retry-After header value to be in milliseconds (KTOR-3634)
StringValuesBuilder.appendIfNameAbsent appends only if name is already present (KTOR-3650)
Migrations of the client code are not working for queries with non-trivial expression body (KTOR-3703)
π Curl Cinterop compilation is failed on MacOS (KTOR-3681)
Compression slow due to using BEST_COMPRESSION for deflate/gzip (KTOR-3680)
Could not resolve: io.ktor:ktor-locations:2.0.0-beta-1 on a new project created with IDEA 2021.3.1 (KTOR-3639)
β‘οΈ Update URL for the 'Adding Ktor dependencies' topic and add redirects (KTOR-3673)
π Support package split in Ktor migrations in plugin (java modules support) (KTOR-3679)
π Rewrite StatusPages with the new plugins API (KTOR-3312)
π§ "Save ""Create Run Configuration automatically"" within .idea directory" (KTOR-3282)
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer when Ktor is built with JDK 9+ (KTOR-1398)
β TestHttpClientEngine doesn't support HTTPS requests (KTOR-3614)
Endpoints view: Endpoints not populated if routes require authentication (KTOR-3182)
π Insecure user session samples in documentation (KTOR-3582)
HttpRequestTimeoutException should not inherit CancellationException in ktor http client (KTOR-3192)
π Update Documentation and Code for HSTS Feature (KTOR-1878)
β¬οΈ Reduce the number of versions displayed in a plugin (KTOR-3250)
π Update Documentation and Code for Webjars Feature (KTOR-1885)
π XForwardedHeaderSupport should let you specify which index (from end) to choose (KTOR-565)
π§ Make migrations more configurable (KTOR-3617)
EAP Naming: main-number conflicts with dependencies (KTOR-2724)
ktor.io/learn typo (KTOR-3563)
π Update Documentation and Code for HttpsRedirect Feature (KTOR-1879)
π Provide better support for Ktor clients (KTOR-883)
β¬οΈ Multiple messages around upgrading to new version (KTOR-3494)
HttpRequestRetry in KTOR 2.0 should allow for request altering between retries (KTOR-3544)
π Deploy Ktor application to docker topic contains hard coded project name (KTOR-2852)
π Improvements for Docker sample in documentation (KTOR-3294)
π¦ """io.ktor.serializaion.gson"" - package naming in 2.0" (KTOR-3527)
β¬οΈ Drop
client.get
Operator Because of Ambiguity withget(URL)
(KTOR-3487)"Option ""Add imports for Ktor modules automatically"" doesn't work" (KTOR-3226)
Migrations are unavailable (KTOR-3570)
β‘οΈ Pull Request - fix #1970 - update MultiPartFormDataContent to allow contentType override using optional builder (KTOR-1833)
0οΈβ£ Pull Request - KTOR-1264 - Add UUID to DefaultConversionService (KTOR-1815)
π Pull Request - Intercept pipeline at Setup phase for XForwardedHeaderSupport featureβ¦ (KTOR-1844)
Pull Request - Add locale to ThymeleafContent (KTOR-1838)
Objections to changing boundary to internal on MultiPartFormDataContent? (KTOR-325)
π Fix Log Size for Java 11 Windows Build (KTOR-3535)
ByteChannelSequential freezes after closing due to race condition (KTOR-2776)
Apple Arm: 'Resolving NPM dependencies using yarn' returns 139 (KTOR-3561)
π Change log level from
INFO
toERROR
for tests only (KTOR-3466)Responding without contentLength freezes on CIO native (KTOR-3492)
webSocketSession freeze every time (KTOR-3460)
Exceptions are Swallowed in
HttpClient.wss
block (KTOR-3461)π Support receiving headers before sending body in CIO client engine (KTOR-3491)
π Build and test on Apple Silicon Arm (KTOR-3248)
π Prototype anchors in new plugins API (KTOR-3392)
π Rename the 'Ios' client engine to more generic term to cover all Apple operating systems (KTOR-3394)
β‘οΈ Update Samples to Ktor 2.0 (KTOR-3218)
Implement new
Locations
feature (KTOR-1706)π Fix old metadata publication (KTOR-3469)
π· JS Client doesn't support ServiceWorker (KTOR-3448)
π Move Server Related Code from
ktor-http-cio
toktor-server-cio
(KTOR-3462)β Add Check if Feature is installed for
WebSocket
builders (KTOR-3459)β With test application should load environment from the
application.conf
(KTOR-2794)β TestEngineApplication - implement HttpClient API (KTOR-2416)
β Inconsistent TestApplicationRequest and Client HttpRequestBuilder API's (KTOR-1246)
Server features instead of client in the client
install
block (KTOR-3412)π
ContentNegotiation
is missing in the plugins completion window (KTOR-3411)π Code Snippets use Groovy in build files as opposed to default Kotlin option for Wizard (KTOR-2190)
π Improve documentation for native/Apple client engines (KTOR-3375)
IJ locked after attempt to create new run config in a dialog (KTOR-3385)
π "High CPU consumption/Lock after project opening in org.jetbrains.kotlin.storage.getValue ; org.jetbrains.kotlin.idea.caches.resolve.IdeaResolverForProject" (KTOR-3337)
β‘οΈ Update Ktor Plugin Description (KTOR-3388)
β Add explicit menu action for migration (KTOR-3400)
Project Generated with eap-256 has Errors in Imports (KTOR-3397)
β‘οΈ Update non-generic samples to 2.0 (KTOR-3285)
π Support New Native Memory Model (KTOR-3217)
π Simplify plugin descriptions in wizard, remove empty options (KTOR-3386)
Server for Kotlin Native (KTOR-746)
call.request.queryParameters decode plus as space (KTOR-3297)
π Migrate existing plugins to RoutingScoped (KTOR-3201)
Bearer Authentication: Queue requests until refresh of tokens is completed (KTOR-3325)
Article about storing sensitive data and accessing it in application.conf (KTOR-3340)
β Add parameter for specifying content-length in ApplicationCall#respondBytes (KTOR-3087)
π Update Documentation and Code for CallId Feature (KTOR-1874)
π² Passing port 0 to start server on random port doesn't publish correct port to log (KTOR-3288)
π Allow application environment configuration when running via commandLineEnvironment (KTOR-3027)
π XForwardedHeaderSupport is installed late in the pipeline (KTOR-731)
β Add locale to ThymeleafContent (KTOR-3313)
β Add support for ports in withTestApplication (KTOR-725)
Error in 2.0 doc/sample for HttpClient retry (KTOR-3303)
β Cyclic dependency issue in latest 2.0 (main branch) (KTOR-3240)
π§ An error occurred when running a sample with the configured XML serializer (KTOR-3286)
respondOutputStream behind nginx fails (KTOR-346)
π XML Support in Ktor (KTOR-489)
Start ktor server on random port (KTOR-686)
ProxyConfig.type checking for DIRECT instead of SOCKS (KTOR-1733)
Freeze the screen when I create routes (KTOR-3004)
π Client: DefaultRequest apply defaults before request builder (KTOR-2877)
KDoc: HttpRequestBuilder.header actually appends header value, does not set it (KTOR-2492)
parameterOf() should have a variant that takes in a Map> (KTOR-399)
π· TLS relared tests are failing on CI (KTOR-3224)
[Ktor Client] CborFeature (KTOR-3174)
π» Jackson: receiveOrNull crashes with an exception when sending empty content (KTOR-727)
Jackson-backed
ApplicationCall.receive
does not throwContentTransformationException
(KTOR-614)β Remove Obsolete Check Cast from SuspendFunctionGun (KTOR-3178)
Ktor: Fold internal stack frames for HTTP server (KTOR-2274)
π Support 2.0.0 in IDE (KTOR-3196)
Client HttpCache feature is not documented (KTOR-1279)
π Feature to Plugin changes in Documentation (KTOR-2372)
β‘οΈ Update server dependencies and imports in docs for 2.0.0 (KTOR-3150)
β Add method to Client and ServerResponseException (KTOR-3128)
β Add UUID to DefaultConversionService (KTOR-1264)
Prioritize text found in feature titles over descriptions (KTOR-2488)
SerializationException when serializing request body object of generic class type (KTOR-1019)
β The 'Create test for Ktor module' intention actions changes files from other modules for a multimodule Gradle project (KTOR-3062)
Implementation for Simple API for writing features (KTOR-2480)
π Wizard Plugin listing strange link (KTOR-2882)
β Add filtering support in Ktor client response interceptor (KTOR-2992)
β Nothing happens when no test routes is selected when generating Ktor test for module (KTOR-3095)
β The 'Create test for Ktor module' intention action doesn't create any tests if routes are defined inside the extension function (KTOR-3079)
π Allow using the client itself inside Auth plugin in the refreshTokens lambda. (KTOR-2977)
β‘οΈ ADE at io.ktor.ide.plugins.add.KtorMarketplacePluginsUpdater.checkForUpdates (KTOR-3076)
Define completion priorities for Ktor keywords (KTOR-2773)
β Adding features action in IDE (KTOR-2893)
Ktor Client JS: request to /example requests http://localhost/example (KTOR-453)
π URLBuilder: Move Default Values to build() function (KTOR-1345)
Implement design about moving features from ktor-server-core (KTOR-1239)
π¦ Move server code to io.ktor.server.* package (KTOR-2865)
Impossible to modify response headers (KTOR-2822)
ApplicationConfig: how to iterate over keys and values of config (KTOR-2318)
Missing Locations params result in 404 instead of 400 (KTOR-447)
Implementation for Events Feature For Client Metrics (KTOR-2472)
Should return 405 when route exists but not for given method instead of 404 (KTOR-737)
π Fix 2.0.0 branch compilation (KTOR-2603)
Query of pre-signed URL has been altered after decode and re-encode process (KTOR-778)
ApplicationCall.locationOrNull raises error (KTOR-1684)
ContentConverter.convertForSend should receive a KType (KTOR-444)
π Make
body
nullable for request builder (KTOR-1400)Send 100 Continue response only when getting a request to receive
IncomingContent
(KTOR-855)
-
v2.0.0-beta Changes
Published 23 December 2021
- EAP Naming: main-number conflicts with dependencies (KTOR-2724)
- ktor.io/learn typo (KTOR-3563)
- β¬οΈ Multiple messages around upgrading to new version (KTOR-3494)
- π Deploy Ktor application to docker topic contains hard coded project name (KTOR-2852)
- π Improvements for Docker sample in documentation (KTOR-3294)
- π¦ "io.ktor.serializaion.gson" - package naming in 2.0 (KTOR-3527)
- β¬οΈ Drop
client.get
Operator Because of Ambiguity withget(URL)
(KTOR-3487) - Option "Add imports for Ktor modules automatically" doesn't work (KTOR-3226)
- Migrations are unavailable (KTOR-3570)
- AttributeKey instance is identified by its identity instead of its name (KTOR-3538)
- π Fix Log Size for Java 11 Windows Build (KTOR-3535)
- ByteChannelSequential freezes after closing due to race condition (KTOR-2776)
- Apple Arm: 'Resolving NPM dependencies using yarn' returns 139 (KTOR-3561)
- π Change log level from
INFO
toERROR
for tests only (KTOR-3466) - Responding without contentLength freezes on CIO native (KTOR-3492)
- webSocketSession freeze every time (KTOR-3460)
- Exceptions are Swallowed in
HttpClient.wss
block (KTOR-3461) - π Support receiving headers before sending body in CIO client engine (KTOR-3491)
- [netty] Headers are only flushed after first byte is written (KTOR-3364)
- π Fix
testErrorHandling
with JS (KTOR-3510) - π Build and test on Apple Silicon Arm (KTOR-3248)
- π Fix old metadata publication (KTOR-3469)
- β Remove checking body transformation from ContentNegotation (KTOR-3272)
- π Ktor-Utils references a Java API not supported by Android (KTOR-3426)
- β
With test application should load environment from the
application.conf
(KTOR-2794) - β Inconsistent TestApplicationRequest and Client HttpRequestBuilder API's (KTOR-1246)
- Server features instead of client in the client
install
block (KTOR-3412) - Using proguard and CallLogging feature causes JVM crashes (KTOR-3345)
- π
ContentNegotiation
is missing in the plugins completion window (KTOR-3411) - π Code Snippets use Groovy in build files as opposed to default Kotlin option for Wizard (KTOR-2190)
- IJ locked after attempt to create new run config in a dialog (KTOR-3385)
- π ContentNegotiation plugins don't accept null-responses from ContentConverts (KTOR-3346)
- π High CPU consumption/Lock after project opening in org.jetbrains.kotlin.storage.getValue ; org.jetbrains.kotlin.idea.caches.resolve.IdeaResolverForProject (KTOR-3337)
- β‘οΈ Update Ktor Plugin Description (KTOR-3388)
- Project Generated with eap-256 has Errors in Imports (KTOR-3397)
- β‘οΈ Update non-generic samples to 2.0 (KTOR-3285)
- π Simplify plugin descriptions in wizard, remove empty options (KTOR-3386)
- Bearer Authentication: Queue requests until refresh of tokens is completed (KTOR-3325)
- Article about storing sensitive data and accessing it in application.conf (KTOR-3340)
- Android: Failed resolution of: Ljava/nio/file/Paths using API 25 and lower (KTOR-3269)
- IDE action to migrate to 2.0.0 (KTOR-3225)
- π² Passing port 0 to start server on random port doesn't publish correct port to log (KTOR-3288)
- π XForwardedHeaderSupport is installed late in the pipeline (KTOR-731)
- Error in 2.0 doc/sample for HttpClient retry (KTOR-3303)
- β Cyclic dependency issue in latest 2.0 (main branch) (KTOR-3240)
- π§ An error occurred when running a sample with the configured XML serializer (KTOR-3286)
- respondOutputStream behind nginx fails (KTOR-346)
- ProxyConfig.type checking for DIRECT instead of SOCKS (KTOR-1733)
- Freeze the screen when I create routes (KTOR-3004)
- π httpMethod is not affected by X-Http-Method-Override (in opposite to docs) (KTOR-404)
- π Client: DefaultRequest apply defaults before request builder (KTOR-2877)
- KDoc: HttpRequestBuilder.header actually appends header value, does not set it (KTOR-2492)
- π· TLS relared tests are failing on CI (KTOR-3224)
- π» Jackson: receiveOrNull crashes with an exception when sending empty content (KTOR-727)
- Content Negotiation: Gson: Should be able to return 400 for badly formatted request. (KTOR-373)
- Jackson-backed
ApplicationCall.receive
does not throwContentTransformationException
(KTOR-614) - β Remove Obsolete Check Cast from SuspendFunctionGun (KTOR-3178)
- π Support 2.0.0 in IDE (KTOR-3196)
- Client HttpCache feature is not documented (KTOR-1279)
- β‘οΈ Update server dependencies and imports in docs for 2.0.0 (KTOR-3150)
- Prioritize text found in feature titles over descriptions (KTOR-2488)
- SerializationException when serializing request body object of generic class type (KTOR-1019)
- β The 'Create test for Ktor module' intention actions changes files from other modules for a multimodule Gradle project (KTOR-3062)
- π Wizard Plugin listing strange link (KTOR-2882)
- β Nothing happens when no test routes is selected when generating Ktor test for module (KTOR-3095)
- β The 'Create test for Ktor module' intention action doesn't create any tests if routes are defined inside the extension function (KTOR-3079)
- π Allow using the client itself inside Auth plugin in the refreshTokens lambda. (KTOR-2977)
- β‘οΈ ADE at io.ktor.ide.plugins.add.KtorMarketplacePluginsUpdater.checkForUpdates (KTOR-3076)
- Ktor Client JS: request to /example requests http://localhost/example (KTOR-453)
- π URLBuilder: Move Default Values to build() function (KTOR-1345)
- Impossible to modify response headers (KTOR-2822)
- Missing Locations params result in 404 instead of 400 (KTOR-447)
- Should return 405 when route exists but not for given method instead of 404 (KTOR-737)
- π Fix 2.0.0 branch compilation (KTOR-2603)
- Query of pre-signed URL has been altered after decode and re-encode process (KTOR-778)
- ApplicationCall.locationOrNull raises error (KTOR-1684)
- π Make
body
nullable for request builder (KTOR-1400) - π Provide better support for Ktor clients (KTOR-883)
- Retry on HttpCode or network error (KTOR-572)
- HttpRequestRetry in KTOR 2.0 should allow for request altering between retries (KTOR-3544)
- π HttpCookies: parse / in the name of a cookie (KTOR-3497)
- π Support for adding values to the MDC later on in the pipeline. (KTOR-536)
- β‘οΈ Pull Request - fix #1970 - update MultiPartFormDataContent to allow contentType override using optional builder (KTOR-1833)
- 0οΈβ£ Pull Request - KTOR-1264 - Add UUID to DefaultConversionService (KTOR-1815)
- π Pull Request - Intercept pipeline at Setup phase for XForwardedHeaderSupport featureβ¦ (KTOR-1844)
- Pull Request - Add locale to ThymeleafContent (KTOR-1838)
- π Pull Request - KTOR-404 Introduce support for X-Http-Method-Override (KTOR-1825)
- Objections to changing boundary to internal on MultiPartFormDataContent? (KTOR-325)
- π Prototype anchors in new plugins API (KTOR-3392)
- π Rename the 'Ios' client engine to more generic term to cover all Apple operating systems (KTOR-3394)
- β‘οΈ Update Samples to Ktor 2.0 (KTOR-3218)
- Implement new
Locations
feature (KTOR-1706) - π Feature: Use websockets with serialization (KTOR-423)
- π· JS Client doesn't support ServiceWorker (KTOR-3448)
- π Move Server Related Code from
ktor-http-cio
toktor-server-cio
(KTOR-3462) - π Client request builder: add shortcuts for authentication headers (KTOR-2876)
- β Add Check if Feature is installed for
WebSocket
builders (KTOR-3459) - β
Implementation for Create
ktor-test
module with mocks of engine and clients for writing tests (KTOR-3236) - β TestEngineApplication - implement HttpClient API (KTOR-2416)
- β Add explicit menu action for migration (KTOR-3400)
- β Add possibility to fully configure metricName in ktor-server-metrics-micrometer (KTOR-3302)
- π Support New Native Memory Model (KTOR-3217)
- Server for Kotlin Native (KTOR-746)
- call.request.queryParameters decode plus as space (KTOR-3297)
- π Migrate existing plugins to RoutingScoped (KTOR-3201)
- π Support receiving OAuth code response as form post (KTOR-3342)
- β Add parameter for specifying content-length in ApplicationCall#respondBytes (KTOR-3087)
- π Allow application environment configuration when running via commandLineEnvironment (KTOR-3027)
- β Add locale to ThymeleafContent (KTOR-3313)
- β Add support for ports in withTestApplication (KTOR-725)
- π¦ Expose non-reified request methods (KTOR-2590)
- π XML Support in Ktor (KTOR-489)
- Start ktor server on random port (KTOR-686)
- parameterOf() should have a variant that takes in a Map> (KTOR-399)
- [Ktor Client] CborFeature (KTOR-3174)
- Can't set a base url that includes path data (KTOR-730)
- Ktor: Fold internal stack frames for HTTP server (KTOR-2274)
- β Add method to Client and ServerResponseException (KTOR-3128)
- β Add UUID to DefaultConversionService (KTOR-1264)
- Implementation for Simple API for writing features (KTOR-2480)
- β Add filtering support in Ktor client response interceptor (KTOR-2992)
- Define completion priorities for Ktor keywords (KTOR-2773)
- β Adding features action in IDE (KTOR-2893)
- Implement design about moving features from ktor-server-core (KTOR-1239)
- π¦ Move server code to io.ktor.server.* package (KTOR-2865)
- ApplicationConfig: how to iterate over keys and values of config (KTOR-2318)
- Implementation for Events Feature For Client Metrics (KTOR-2472)
- ContentConverter.convertForSend should receive a KType (KTOR-444)
- Send 100 Continue response only when getting a request to receive
IncomingContent
(KTOR-855) - π Update Documentation and Code for HttpsRedirect Feature (KTOR-1879)
- π Improve documentation for native/Apple client engines (KTOR-3375)
- π Update Documentation and Code for CallId Feature (KTOR-1874)
- π Feature to Plugin changes in Documentation (KTOR-2372)
-
v1.6.8 Changes
Published 14 March 2022
- β‘οΈ Update Gradle to 7.4
- β‘οΈ Update Kotlin to 1.6.10
- Migrate gradle to version catalog
- β‘οΈ Update logback version to 1.2.11 (KTOR-3935)
- β‘οΈ Update atomicfu to 0.17.1
- β‘οΈ Update netty to 4.1.74.Final
- β‘οΈ Update netty-tcnative to 2.0.45.Final
- β‘οΈ Update jetty to 9.4.45.v20220203
- β‘οΈ Update tomcat to 9.0.59
- β‘οΈ Update apache to 4.1.5
- β‘οΈ Update okhttp to 4.9.3
- β‘οΈ Update gson to 2.9.0
- β‘οΈ Update jackson 2.13.1
- β‘οΈ Update slf4j to 1.7.36
- β‘οΈ Update node-fetch to 2.6.7
- β‘οΈ Update js ws package to 8.5.0
- βͺ Revert wrong check to prevent anyHost with allowCredentials (KTOR-2872