The release contents the JVM version of the Kotlin compiler, and also the Kotlin/Native compiler for the supported platforms: Linux, macOS and Windows.
Changelog
1.4.0
Compiler
New Features
KT-23729 Provide a way to generate JVM default method bodies in interfaces delegating to DefaultImpls
KT-30330 Introduce KotlinNothingValueException and throw it instead of NPE on expressions of type Nothing
KT-38435 Support suspend conversion on callable references in JVM backend
KT-40646 NI: TYPE_MISMATCH: "inferred type is Unit but Observer was expected" caused by LieData.observe inference
KT-40691 False positive CAPTURED_VAL_INITIALIZATION with EXACTLY_ONCE contract
KT-40693 UnsupportedOperationException: no descriptor for type constructor of (CapturedType(out TResult)..CapturedType(out TResult)?)
KT-40824 Usages of a typealias lose nullability and annotations in deserialization
KT-40843 Unhandled exception for suspending methods that return Result type
KT-40869 Recursion computation inside compiler resolve on a correct code
KT-40893 Error "Captured values initialization is forbidden due to possible reassignment" when attempting to use the plusAssign operator with a java list inside an inline function
KT-40919 kotlin.collections.ArrayDeque requires an explicit import when compiling with kotlinc 1.4-RC and -language-version 1.3
KT-40920 Regression in JvmDefault: incorrect access to missing DefaultImpls on default methods in Java interface overriding Kotlin interface
KT-40978 Prohibit using suspend functions as SAM in fun interfaces
KT-40646 NI: TYPE_MISMATCH: "inferred type is Unit but Observer was expected" caused by LieData.observe inference
KT-40691 False positive CAPTURED_VAL_INITIALIZATION with EXACTLY_ONCE contract
KT-40693 UnsupportedOperationException: no descriptor for type constructor of (CapturedType(out TResult)..CapturedType(out TResult)?)
KT-40824 Usages of a typealias lose nullability and annotations in deserialization
KT-40843 Unhandled exception for suspending methods that return Result type
KT-40869 Recursion computation inside compiler resolve on a correct code
KT-40893 Error "Captured values initialization is forbidden due to possible reassignment" when attempting to use the plusAssign operator with a java list inside an inline function
KT-40919 kotlin.collections.ArrayDeque requires an explicit import when compiling with kotlinc 1.4-RC and -language-version 1.3
KT-40920 Regression in JvmDefault: incorrect access to missing DefaultImpls on default methods in Java interface overriding Kotlin interface
KT-40978 Prohibit using suspend functions as SAM in fun interfaces
Docs & Examples
KT-35218 Fix misleading in JavaDoc for createTempDir/createTempFile
KT-36981 Provide a visual illustration of source sets structure generated by ios(), watchos(), tvos() presets
KT-38050 Language Guide: MPP reference: add sample of language settings for all roots instead of common root only
IDE
KT-30265 IDE, MPP: False negative TYPE_PARAMETER_AS_REIFIED in common code
KT-40494 UAST: "NoSuchElementException: No element of given type found" with use-site target annotation
KT-40639 Shift IDE plugins updater numbers for Kotlin plugin
IDE. Code Style, Formatting
KT-40636 Hard freeze on formatter: infinite recursion
IDE. Gradle Integration
KT-30116 IDE: Unresolved reference in MPP module (androidMain source set) for annotation from common module (defined in commonMain and with JVM target)
IDE. Gradle. Script
Commits
0ddb793 Use GPG agent for signing in PublishedKotlinModule
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps kotlin-gradle-plugin from 1.3.72 to 1.4.0.
Release notes
Sourced from kotlin-gradle-plugin's releases.
Changelog
Sourced from kotlin-gradle-plugin's changelog.
Commits
0ddb793
Use GPG agent for signing in PublishedKotlinModule60340bd
Sign with GnuPG agent923742e
Update Kotlin/Native: 1.43e9162f
Fixed changelog for 1.4.0-rc3115e5b
Add changelog for 1.4.0df2d140
Add change-notes for 1.4 to 1.4.0 branch3f34bc1
Temporal remove of registerAdditionalResourceBundleInTests hack in as 41034b947
Update maven signing for working with gpg 2 (KTI-314)cd005cd
Update Kotlin/Native: 1.4-rc1-74d25b099
Add @SinceKotlin to kotlinx.browser and kotlinx.dom packagesDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)