Skip to content

Latest commit

 

History

History
2297 lines (1784 loc) · 212 KB

ChangeLog.md

File metadata and controls

2297 lines (1784 loc) · 212 KB

1.8.20-RC2

Compiler

  • KT-57388 Kapt+JVM_IR: "RuntimeException: No type for expression" for delegated property
  • KT-57242 Equals behaviour for value classes implementing interfaces is different between 1.8.10 and 1.8.20-RC
  • KT-57261 "IllegalArgumentException was thrown at: MemoizedInlineClassReplacements.getSpecializedEqualsMethod" when comparing non-inline class instance with an inline class instance
  • KT-56527 K2: "AssertionError: Assertion failed" during compilation in SequentialFilePositionFinder
  • KT-57107 Handling of Windows line endings CRLF broken in latest snapshot with K2

Tools. Gradle

  • KT-57296 Build statistics sending errors in case of buildSrc directory usage with kotlin-dsl plugin applied

Tools. Gradle. JS

  • KT-57285 KJS / Gradle / MPP: FileNotFoundException on publishing empty KJS sourceset

Tools. Gradle. Multiplatform

  • KT-57460 Kotlin Gradle Plugin: Null this pointer in transformCommonMainDependenciesMetadata
  • KT-57306 [Kotlin 1.8.20-RC] GradleException: Could not load the value of field apiConfiguration of org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationConfigurationsContainer

1.8.20-RC

Backend. Wasm

  • KT-56584 K/Wasm: Can't link symbol class

Compiler

Fixes

  • KT-57053 Problem around anonymous objects in inline functions
  • KT-56965 K/N: linkDebugFrameworkIosArm64 tasks failing with UnsupportedOperationException: VAR name:disposables type:com.badoo.reaktive.disposable.CompositeDisposable [val]
  • KT-56815 compileKotlin task is stuck with while(true) and suspend function
  • KT-56258 VerifyError: Bad local variable type when using -Xdebug
  • KT-56847 Unresolved reference to Java annotation in Kotlin class with the same name packages
  • KT-56526 InvalidProtocolBufferException on reading module metadata compiled by K2 in 1.8.20
  • KT-56500 The type parameter TYPE_PARAMETER name:E index:0 variance: superTypes:[kotlin.Any?] reified:false is not defined in the referenced function FUN LOCAL_FUNCTION_FOR_LAMBDA
  • KT-56611 Native: new native caches are broken when KONAN_DATA_DIR is defined to a directory inside ~/.gradle
  • KT-56215 JVM: Object extension function nullable receiver null check false negative when object is null
  • KT-56033 Restore 'isMostPreciseContravariantArgument' function signature for compatibility
  • KT-56407 Backend Internal error: Exception during IR lowering during :daemon-common-new:compileKotlin
  • KT-56701 K2 (with LightTree) reports syntax errors without additional information
  • KT-56649 K2 uses 0-index for line numbers rather than 1-index
  • KT-56521 Static scope initializers sometimes not called when first accessed from interop
  • KT-49182 Strange cast from Unit to String
  • KT-55125 Difference in generated bytecode for open suspend functions of generic classes

IDE. Gradle. Script

  • KT-56941 Gradle KTS / Navigation: Go to declaration for Java types doesn't work

JavaScript

  • KT-56602 KJS / Serialization: polymorphicDefaultDeserializer unbound on Kotlin 1.8.20-Beta
  • KT-56580 KJS: languageVersionSettings string is unstable
  • KT-56581 KJS: Lock file for incremental cache
  • KT-56582 KJS: Function type interface reflection crashes the compiler in incremental build
  • KT-56469 KJS: BE Incremental rebuild spoils source map comment

Libraries

  • KT-55935 [Kotlin/JVM] Path.copyToRecursively does not work across file systems

Native

  • KT-56443 Native link task reports w: Cached libraries will not be used for optimized compilation

Tools. CLI

  • KT-56789 Metaspace memory leak in CoreJrtFileSystem
  • KT-56992 Performance test regression in Gradle when switching to Kotlin 1.8.20
  • KT-56925 Remove warning about assignment plugin
  • KT-57077 1.8.20-RC-243 shows Java 19 warnings even if configured with Java 17 toolchain

Tools. Compiler Plugins

  • KT-56487 Add more methods to DescriptorSerializerPlugin

Tools. Compiler plugins. Serialization

  • KT-56738 Unexpected SERIALIZER_NOT_FOUND when compiling against binary with enum
  • KT-56990 "AssertionError: SyntheticAccessorLowering should not attempt to modify other files" in kotlinx-serialization using @Serializer and List argument

Tools. Gradle

  • KT-56221 Gradle KTS: False positive Val cannot be reassigned when using an extension and its property with an implicit set operator
  • KT-55452 Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs task
  • KT-56645 Gradle: KGP reports an incorrect resources processing task name for JVM projects
  • KT-55565 Consider de-duping or blocking standard addition of freeCompilerArgs to KaptGenerateStubsTask
  • KT-56414 Dependency locking and failed builds with Kotlin 1.8.10

Tools. Gradle. JS

  • KT-57068 KJS / Gradle: "Unable to find method 'kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl.testTask'" after updating to 1.8.20-Beta
  • KT-56999 K/JS: KotlinJsIrLink::rootCacheDirectory property must be public
  • KT-56765 K/JS: Several binaries use same cache directory
  • KT-56488 Debugger won't stop on breakpoints of JS browser test
  • KT-56719 KJS / Gradle: Compile sync task has to sync only changed files

Tools. Gradle. Multiplatform

  • KT-56729 commonizeCInterop: Duplicated libraries: co.touchlab:sqliter-driver-cinterop-sqlite3
  • KT-56510 Import with included plugin build may fail with OverlappingFileLockException during commonizeNativeDistribution

Tools. Kapt

  • KT-56635 KAPT / IR: "Unresolved reference: DaggerGeneratedCodeTest_AppComponent " caused by stub generation with Kotlin 1.8.20-Beta
  • KT-56360 Kapt with JVM IR changes fields order

1.8.20-Beta

Analysis API

  • KT-55510 K2: Lost designation for local classes
  • KT-55191 AA: add an API to compare symbol pointers
  • KT-55487 K2: symbol pointer restoring doesn't work for static members
  • KT-55336 K2 IDE: "java.lang.IllegalStateException: Required value was null." exception while importing a compiled JPS project
  • KT-55098 AA: KtDeclarationRenderer should render a context receivers
  • KT-51181 LL API: errors for SAM with suspend function from another module
  • KT-50250 Analysis API: Implement Analysis API of KtExpression.isUsedAsExpression
  • KT-54360 KtPropertySymbol: support JvmField in javaSetterName and javaGetterName

Analysis API. FIR

  • KT-54311 K2: proper implementation of KtSymbolPointer
  • KT-50238 Analysis API: Implement KSymbolPointer for KtSymbol

Analysis API. FIR Low Level API

  • KT-52160 FIR: Substitution overrides on FirValueParameter-s are incorrectly unwrapped
  • KT-54826 KtSymbolPointer: migrate from IdSignature to our own solution

Android

  • KT-54464 MPP, Android SSL2: Add a flag for suppressing warning in case of using Android Style folders

Backend. Wasm

  • KT-56160 Getting WebAssembly.CompileError in browsers not supported GC and other required proposals
  • KT-56166 Fix compatibility with Firefox Nightly
  • KT-55589 Basic support of WASI
  • KT-46773 Implement an experimental version of the Kotlin/Wasm compiler backend
  • KT-53790 Reading from "node:module" is not handled by plugins error with Kotlin/Wasm 1.7.20-Beta

Compiler

New Features

  • KT-55949 Release experimental @Volatile support in native
  • KT-44698 Frontend (K2): print file name/line on compiler crash/exception
  • KT-54666 K2: Allow to skip specifying type arguments for members from raw type scope
  • KT-54535 Implement custom equals and hashCode for value classes in Kotlin/JVM
  • KT-54524 Implement Java synthetic property references in compiler
  • KT-54024 K2: support -Xlink-via-signatures mode

Performance Improvements

  • KT-53330 Optimize for-loops and contains over open-ended ranges with until operator (..<) for all backends
  • KT-48759 Infix compareTo boxes inline classes
  • KT-55033 Make org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl#runTransaction an inline function
  • KT-33722 JVM: Result API causes unnecessary boxing

Fixes

  • KT-53153 Synthetic Enum.entries can be shadowed by user-defined declarations
  • KT-54140 SOE at IrBasedDescriptorsKt.makeKotlinType with mixing recursive definitely not nullable type with nullability
  • KT-56224 Clarify message "Secondary constructors with bodies are reserved for for future releases" for secondary constructors in value classes with bodies
  • KT-54662 K2: Assign operator ambiguity on synthetic property from java
  • KT-54507 K2: Wrong implicitModality for interface in FirHelpers
  • KT-55912 "UnsupportedOperationException: Unsupported const element type kotlin.Any" caused by kotlin fqn in annotation
  • KT-55251 Enum.entries compilation error should be more specific
  • KT-43296 FIR: Complicated interaction between smart cast and inference leads to false-positive diagnostic
  • KT-55483 K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory
  • KT-56188 K/N: AssertionError when casting SAM wrapper with generic type parameter
  • KT-54209 K2: false positive deprecation on a class literal with deprecated companion
  • KT-55408 K2: can't access indirectly inherited from a package-private class Java members through a type alias
  • KT-55116 K2: store static qualifiers in dispatch receiver field
  • KT-55436 K1: implement warning about shadowing of the derived property by the base class field
  • KT-55368 K2/MPP: Metadata compiler
  • KT-53846 K2 / Context receivers: ClassCastException on secondary constructor of class with context receiver
  • KT-54305 K1: implement warning "synthetic setter projected out"
  • KT-52027 "NullPointerException" when using context receivers with inline fun
  • KT-55984 Stack allocated array is not cleaned between loop iterations
  • KT-52593 Provide Alpha support for JS in the K2 platform
  • KT-54656 NoSuchMethodError on invoking Java constructor which takes an inline value class as a parameter
  • KT-55606 K2. Infix operator "in" works on ConcurrentHashMap when it's declared through another class
  • KT-53884 K2: "IllegalStateException: Fir is not initialized for FirRegularClassSymbol com/appodeal/consent/Consent.a" when importing this class
  • KT-54502 Synthetic extensions on raw types work differently from regular getter calls
  • KT-49351 FIR: Raw type scopes are unsupported
  • KT-49345 FIR: Properly support raw types in type parameter upper bounds
  • KT-55887 K2. "IllegalStateException: org.jetbrains.kotlin.ir.expressions.impl.IrErrorCallExpressionImpl is not expected" on adding kotlin.plugin.jpa
  • KT-55733 K2. Reference resolve works incorrectly for classes declared through typealias
  • KT-46369 FIR: Investigate raw types for arrays
  • KT-41794 [FIR] Implement raw type based scope
  • KT-55181 K2. No compilation error on throwing not throwable
  • KT-55398 Kotlin inline nested inline lambda's inline variable will inline not correctly
  • KT-55359 K2. No error when secondary constructor does not delegate to primary one
  • KT-55759 K2: Unresolved reference of serializer if library linking is used (with kotlinx.serialization plugin)
  • KT-54705 Kotlin scripting doesn't support files with UTF-8 BOM
  • KT-51753 FIR: various errors due to expect/actual mapping absence in translator
  • KT-44515 FIR DFA: extract non-null info from anonymous object's initialization
  • KT-55018 K2 / serialization: FIR2IR fails on local companion
  • KT-55284 Refactor org.jetbrains.kotlin.diagnostics.KtDiagnosticReportContextHelpersKt#reportOn(...)
  • KT-55693 K2. Type inference changed in k2
  • KT-54332 Add deprecation warning for false-negative TYPE_MISMATCH for KT-49404
  • KT-55597 K2. This type has a constructor, and thus must be initialized here error is missed for anonymous object inherits class with no-arg constructor
  • KT-52459 Context receivers: AbstractMethodError caused by Interface method with both an extension and a context receiver is overriden incorrectly in subclasses
  • KT-54357 "ClassCastException: class org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver cannot be cast to class org.jetbrains.kotlin.resolve.scopes.receivers.ContextClassReceiver" with anonymous object extending a class with a context receiver
  • KT-51397 "VerifyError: Bad type on operand stack" with context receivers
  • KT-54905 KLIB check on compiled with pre-release version
  • KT-55615 K2 often does not expand type aliases in annotation position
  • KT-54522 K2: ambiguity between operator candidates on += (plusAssign) to reassigned var of MutableList type
  • KT-54300 K2: No "Projections are not allowed for immediate arguments of a supertype" for projection in supertypes of an anonymous object
  • KT-55495 K2: support lateinit intrinsic applicability checker
  • KT-33132 Cannot override the equals operator twice (in a class and its subclass) unless omitting the operator keyword in the subclass
  • KT-55288 False negative WRONG_ANNOTATION_TARGET on type under a nullability qualifier
  • KT-54730 K2: type aliases to generic functional interfaces attempt to re-infer explicitly specified type parameters
  • KT-55611 IC / MPP: Optional internal annotations are not visible on incremental builds
  • KT-55656 K2: PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED being a warning causes a NPE in runtime
  • KT-51277 "NoSuchElementException: Collection contains no element matching the predicate" with context receivers and star projection
  • KT-52791 Class with multiple context receivers fails -Xvalidate-ir with "Validation failed in file"
  • KT-55071 Shared Native Compilation: Calls from intermediate common source set cannot use default parameters declared in expect common functions
  • KT-54573 K2: untouched implicit types in delegated constructor call of data class with @JvmRecord
  • KT-55037 Support jspecify annotations moved to the new package org.jspecify.annotations in jspecify 0.3
  • KT-48989 JVM / IR: "IllegalStateException: Bad exception handler end" when first parameter of inline function is nullable with "try/catch/finally" default value and second parameter tries to call toString() on the first
  • KT-55231 K2: Contract declarations are not passed to checkers
  • KT-54411 False positive: INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION on kotlinx.coroutines code
  • KT-55005 Inconsistent behavior of array set operation in Kotlin 1.7.21
  • KT-44625 Property backing/delegate field annotations are not serialized/deserialized for non-JVM targets
  • KT-42490 Receiver annotations are not serialized/deserialized for non-JVM targets
  • KT-53441 K2: cannot access static method of package-private Java grandparent class
  • KT-54197 [K2] Exception from inliner for inline function with context receiver
  • KT-55246 Disable 'CustomEqualsInValueClasses' feature in 1.9 language version
  • KT-55247 Disable 'InlineLateinit' feature in 1.9 language version
  • KT-53957 K2 and -Xlambdas=indy: LambdaConversionException on reference to method with both context and extension receivers
  • KT-55421 K2: get rid of potentially redundant call of preCacheBuiltinClassMembers from getIrClassSymbol
  • KT-52815 Compiler option -Xjdk-release fails to compile mixed projects
  • KT-52236 Different modality in psi and fir
  • KT-54921 K2: cannot access static field of package-private Java parent class
  • KT-53698 K2: FIR2IR fails on call of inivisble extension function with Suppress
  • KT-53920 K2: "NoSuchElementException: Key org.jetbrains.kotlin.fir.resolve.dfa.cfg.ClassExitNode@ef115ab is missing in the map" with unreachable code and anonymous object
  • KT-51290 "AssertionError: Parameter indices mismatch at context" with context receivers
  • KT-51475 "ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4" with context(Any) on inline function with contract
  • KT-51247 "AssertionError: org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl" caused by context receiver functional types
  • KT-51951 "IllegalStateException: No receiver" caused by implicit invoke on typealias context receiver
  • KT-52373 Context receivers: ClassCastException: function with dispatch, context, and extension receivers produces this when a parameter's default is included
  • KT-54807 K2. Support @OnlyInputTypes diagnostic checks (contains like calls)
  • KT-54824 K2: missing smartcast after two levels of aliasing and a reassignment
  • KT-53368 Out of bounds read in sse version of String::hashCode
  • KT-51863 ClassCastException when using context receivers with named argument.
  • KT-55123 JvmSerializableLambda is not applicable in common code in multiplatform projects
  • KT-45970 Missing deprecation warnings for constant operators calls in property initializers
  • KT-54851 K2: analysis of as/is contains multiple errors that result in missing diagnostics
  • KT-54668 K2: Inference error in body of lazy property with elvis with Nothing in RHS
  • KT-53070 Update intellij testdata fixes for FIR and merge it to master
  • KT-54950 NoSuchMethodError on calling 'addAll' on inline class implementing mutable list
  • KT-53492 No parameter null check generated for constructor taking an inline class type
  • KT-55160 Kotlin's fragment element types must not extend IStubFileElementType
  • KT-55143 K2: INAPPLICABLE_JVM_NAME in JVM does not work for inline classes
  • KT-47933 Report warning if kotlin.annotation.Repeatable is used together with java.lang.annotation.Repeatable
  • KT-55035 FIR: do not use FirValueParameter for FirFunctionalTypeRef
  • KT-55095 Wrong containingDeclarationSymbol in type parameter from Enhancement
  • KT-53946 K2: don't resolve Enum.declaringClass and Enum.getDeclaringClass
  • KT-55074 OptIn false negative: constructor call with default argument value
  • KT-54260 K2: "AssertionError: No modifier list, but modifier has been found by the analyzer" when annotated annotation and AllOpen plugin
  • KT-55034 FIR: provide information about containing function/constructor to FirValueParameter
  • KT-53988 K2: False negative "The expression cannot be a selector (occur after a dot)"
  • KT-53983 K2 crashes with NPE when 'this' is used inside enum class constructor
  • KT-53371 Properly resolve FIR to get fully resolved annotations
  • KT-53519 FIR: argument mapping for annotations on value parameter is not properly built
  • KT-54827 MPP: "java.lang.IndexOutOfBoundsException: Index: 0" during compilation of androidMain target
  • KT-54417 K2: move receiver-targeted annotations to KtReceiverParameterSymbol and remove it from FirProperty receiver type
  • KT-54762 Private constructor is accessible from a public inline function via @PublishedAPI annotation
  • KT-54732 DirectedGraphCondensationBuilder.paint fails with StackOverflowError during linkReleaseFrameworkIos64
  • KT-54897 K2: value class with private constructor stripped by jvm-abi-gen cannot be used in another module
  • KT-54784 NPE from IrSourceCompilerForInlineKt.nonLocalReturnLabel on non-local break and continue in anonymous initializers and in scripts
  • KT-54840 Field for const property on interface companion object loses deprecated status when copied to interface
  • KT-53825 class files are generated when compilation fails with platform declaration clash
  • KT-52157 Annotation on type parameter isn't present in the symbol loaded from the library
  • KT-54654 K2: Implicit types leaks into delegated member
  • KT-53255 [FIR2IR] StackOverflowError with long when-expression conditions
  • KT-48861 No warning on incorrect usage of array type annotated as Nullable in Java
  • KT-54539 @Deprecated on members of private companion object is no longer needed
  • KT-54401 Unhandled exception on compilation inline class with 'equals' from 'Any' returning 'Nothing'
  • KT-54455 Unexpected result of equality comparison of inline class objects
  • KT-54378 K2: smart cast breaks subtyping in case with complex projections
  • KT-53761 Reified type not propagated to supertype token through two inline functions
  • KT-53876 Manually instantiated annotations with unsigned arrays are not equal
  • KT-51740 NO_VALUE_FOR_PARAMETER: Consider increasing error highlighting range
  • KT-54084 ClassCastException when trying to call a context receiver's method
  • KT-51282 IllegalAccessError: Compiler for JVM 1.8+ makes lambdas access unaccessible classes when using @JvmMultifileClasses
  • KT-53479 False positive "Cannot access 'runCatching' before superclass constructor has been called"
  • KT-50950 JVM IR: "AssertionError: FUN SYNTHETIC_GENERATED_SAM_IMPLEMENTATION" when using bound reference to suspend SAM function
  • KT-49364 "VerifyError: Bad type on operand stack" on cast which "can never succeed" from ULong to Int

IDE

Performance Improvements

  • KT-55445 KtUltraLightClassModifierList.hasModifierProperty requires resolve for PsiModifier.PRIVATE

Fixes

  • KT-55862 Can't resolve kotlin-stdlib-js sources in IDE
  • KT-55743 K2 SLC: SymbolLightClassForClassOrObject must have a name
  • KT-55604 Descriptor leak
  • KT-55502 SLC: drop redundant 'final' modifier from synthetic static enum members
  • KT-55497 LC: drop @NotNull annotation from parameter from synthetic Enum.valueOf
  • KT-55496 SLC: generated synthetic enum methods by symbols instead of manual creation
  • KT-55481 SLC: implement correct java annotations for annotation classes (Retention, Target, etc.)
  • KT-55470 SLC: implement light class for RepeatableContainer
  • KT-55442 SLC: 'isInheritor' for 'DefaultImpls' should work correctly
  • KT-40609 IDE: False positive "Exception is never thrown..." in Java when Kotlin getter is annotated with Throws
  • KT-54051 Migrate symbol light classes from KtSymbol to KtElement

JavaScript

New Features

  • KT-35655 Investigate could we use "names" field in SourceMaps to improve debug experience
  • KT-54118 Kotlin/JS IR: keep declarations with non-minified names

Fixes

  • KT-55720 KJS: ReferenceError: SuspendFunction1 is not defined with 1.8 when importingkotlin.coroutines.SuspendFunction1
  • KT-55930 KJS: A recursive callable reference of the inline function leads broken cross module references
  • KT-31888 Kotlin/JS: make possible to call main() in main run tasks, but not in test tasks
  • KT-51581 FIR: support JS backend
  • KT-55786 KJS: Rewriting of secondary constructors if they are protected
  • KT-52563 KJS / IR: Invalid TypeScript generated for class extending base class with private constructor
  • KT-55367 KJS / IR + IC: Moving an external declaration between different JsModules() doesn't rebuild the JS code
  • KT-55240 KJS: "NoSuchElementException: No element of given type found" caused by @JsExport and Throwable's child class
  • KT-54398 KJS / IR + IC: Support *.d.ts generation
  • KT-55144 KJS / IR + IC: Modifying an inline function which is used as a default param in another inline function doesn't invalidate a caller
  • KT-54134 KJS / IR: "TypeError: Cannot read properties of undefined" in js block wrapped with suspend functions around
  • KT-54911 KJS / IR + IC: invalidate all klib dependencies after removing it
  • KT-54912 KJS / IR + IC: Commit cache header only in the end (after lowering)
  • KT-52677 Native: StackOverFlow during "kotlin.ir.util.RenderIrElementVisitor$renderTypeAnnotations$1.invoke"
  • KT-54480 KJS: "Exported declaration contains non-consumable identifier" warning when exporting modules as default
  • KT-41294 KJS: Weird behaviour of j2v8 in test infra

Language Design

  • KT-55344 Deprecate @Synchronized in platforms except JVM

Libraries

  • KT-55978 Provide Common Base64 encoding in stdlib
  • KT-46211 [Kotlin/Native] Stack overflow crash in Regex classes with simple pattern and very large input
  • KT-31066 Add Closeable & use to common stdlib
  • KT-55609 Introduce experimental kotlin.concurrent.Volatile annotation
  • KT-39789 Segfault in Kotlin/Native regex interpreter
  • KT-35508 EXC_BAD_ACCESS(code=2, address=0x16d8dbff0) crashes on iOS when using a sequence (from map() etc.)
  • KT-53310 Native: HashMap/HashSet doesn't reclaim storage after removing elements

Native

  • KT-55938 [Kotlin/Native] Inline functions accessing ObjC class companion cause compiler to crash when building static caches in 1.8.20 dev build

Native. C and ObjC Import

  • KT-55303 Objective-C import: improve -fmodules flag discoverability.
  • KT-39120 Cinterop tool doesn't support the -fmodules compiler argument
  • KT-40426 Incorrect Objective-C extensions importing that prevents UIKit usage
  • KT-55653 Since Kotlin 1.8.0 NSView.resetCursorRects doesn't exist anymore and cannot override it
  • KT-54284 Kotlin/Native: cinterop produces non-deterministic metadata

Native. ObjC Export

  • KT-56350 Kotlin/Native: restore "use Foundation" in generated Objective-C frameworks
  • KT-53638 Native: support disabling mangling globally for Swift names in generated Objective-C header
  • KT-53069 SOE on K/N framework build for Arm64
  • KT-53317 ObjCName annotation is not applied to an extension receiver in Objective-C export

Native. Stdlib

  • KT-53064 Native: provide stdlib API to obtain memory management statistics

Reflection

  • KT-27585 Flaky IllegalPropertyDelegateAccessException: Cannot obtain the delegate of a non-accessible property. Use "isAccessible = true" to make the property accessible
  • KT-55178 Improve performance of KCallable.callBy
  • KT-53279 Reflection: "KotlinReflectionInternalError: Method is not supported" caused by @Repeatable annotation deserialization at runtime if it's repeated and contains arrays
  • KT-44977 Reflection: ClassCastException caused by annotations with "AnnotationTarget.TYPE" usage on array attributes access

Tools. CLI

  • KT-54652 Enable -Xuse-fir-lt by default when -Xuse-k2 is turned on, provide way to disable
  • KT-55784 Unable to format compilation errors with ansi colors in compilation server
  • KT-54337 CLI: compiling module-info.java without explicitly specified JDK home leads to a weird error

Tools. Commonizer

  • KT-47429 [Commonizer] OKIO support
  • KT-51517 C Interop Commonizer Fails On Classifier That Doesn't Exist

Tools. Compiler Plugins

  • KT-53590 K2 Allopen does not look for transitive meta-annotations
  • KT-54020 [K2] [NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER] error in case 'static Name' param was added to @ AllArgsConstructor annotation and an empty list is set as a constructor param value
  • KT-53096 Create a pack of compiler utilities for generating declarations from plugins
  • KT-55248 K2/PluginAPI: getCallableNamesForClass/generateClassLikeDeclaration are not called for synthetic companions of local classes
  • KT-54756 Deprecate "legacy" mode of jvm-abi-gen plugin
  • KT-55233 jvm-abi-gen strips out InnerClass attributes
  • KT-54500 Private type aliases can be referenced from public declarations, but are stripped by jvm-abi-gen

Tools. Compiler plugins. Serialization

  • KT-49983 Implement prototype of kotlinx.serialization for K2 compiler
  • KT-54441 Prohibit implicit serializer customization via companion object
  • KT-48733 "AssertionError: Unexpected IR element found during code generation" caused by Serialization and annotation with default parameter
  • KT-54297 Regression in serializable classes with star projections

Tools. Gradle

New Features

  • KT-54492 Send gradle build errors from idea
  • KT-55540 Add compilation speed metric in build reports
  • KT-54691 Kotlin Gradle Plugin libraries alignment platform
  • KT-55541 Validate FUS metrics values on Gradle side

Performance Improvements

  • KT-55995 Add ability to perform precise compilation task outputs backup
  • KT-54836 Kotlin/JVM Gradle plugin creates task eagerly on Gradle 7.3+
  • KT-54579 Kapt tasks slow down significantly on Windows when running with JDK 17 compared to JDK 11
  • KT-54588 KotlinCompile: Avoid calling FileCollection.getFiles() multiple times

Fixes

  • KT-52625 Compatibility with Gradle 7.4 release
  • KT-55544 Gradle: add more debugging information for finding usages of kotlinOptions.freeCompilerArgs
  • KT-52149 Gradle: declare shared build services usages with Task#usesService
  • KT-53811 Compatibility with Gradle 7.6 release
  • KT-52998 Compatibility with Gradle 7.5 release
  • KT-55741 Gradle 8: Build service '' is being used by task '' without the corresponding declaration via 'Task#usesService'.
  • KT-55174 KotlinCompile task produces deprecation "Build service 'variant_impl_factories_...' is being used by task"
  • KT-54425 Kotlin Gradle Plugin should not use deprecated UsageContext#getUsage()
  • KT-54998 "kotlin.gradle.performance" FUS collector reports data twice
  • KT-55520 Add required configuration for Kotlin Gradle Plugin API reference publication
  • KT-52963 Build report code breaks Gradle project isolation.
  • KT-55164 KGP: "Cannot access project ':' from project ':list'" JVM - Project Isolation with Multi Modules and Configuration Cache fails
  • KT-52490 Gradle: [org.jetbrains.kotlin.gradle.testing.internal] TestReport.destinationDir and TestReport.reportOn deprecation warnings
  • KT-55000 Include information about the new IC into "kotlin.gradle.performance" FUS collector
  • KT-45748 Migrate all Kotlin Gradle plugin Android tests to new test setup
  • KT-54029 Validate Binary Compatibility for kotlin-gradle-plugin-api

Tools. Gradle. Cocoapods

  • KT-41830 CocoaPods integration: Support link-only mode for pods
  • KT-55801 Deprecate useLibraries
  • KT-55790 Improper sdk selected for watchosDeviceArm64 target

Tools. Gradle. JS

New Features

  • KT-37759 [Gradle, JS] Support arguments of command line for webpack and nodejs task
  • KT-33518 Allow specifying command line args for node in nodejs or mocha tests
  • KT-46163 KJS / Ktor: Support run on the next free port if default one is occupied

Performance Improvements

  • KT-39108 Kotlin multiplatform plugin targeting js takes too long compared to the old kotlin-frontend plugin
  • KT-45411 Investigate memory consumption in npm package
  • KT-55476 KotlinWebpack should be cacheable
  • KT-51376 KJS / Gradle: Dukat tasks make impact on build time even if there's no npm dependencies

Fixes

  • KT-56131 KJS / Gradle: Could not create an instance of type org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs when task configuration avoidance is broken
  • KT-37668 Kotlin/JS: nodeTest failure due to main() function fail is reported as "BUILD SUCCESSFUL"
  • KT-35285 Kotlin/JS + Gradle: browserDevelopementWebpack and browserProductionWebpack could write to different locations
  • KT-55593 KotlinJsCompilerType and KotlinJsCompilerTypeHolder LEGACY and BOTH constants should be marked as @Deprecated in 1.8
  • KT-33291 JS: No build result with gradle parallel build in multiproject build
  • KT-40925 KJS: need a way to configure extra environment variables for the test task
  • KT-47236 KJS: kotlinNpmInstall fails if no yarn is downloaded
  • KT-53288 KJS / Gradle: FileNotFoundException when customising moduleName
  • KT-54445 KJS Remove dukat integration
  • KT-54421 KJS / Legacy: Kotlin 1.7.20 fails when running tests on Node 14
  • KT-54418 KJS: Change test running with kotlin-test adapter
  • KT-54132 KJS IR: Sometimes karma failed on teamcity because of uninitialized browser

Tools. Gradle. Multiplatform

New Features

  • KT-53570 multiplatform 'natural hierarchy' prototype

Fixes

  • KT-55873 Unrequested dependencies leaking into common source sets: Regression after 703fd0f2
  • KT-55891 Deprecate pre-HMPP flags
  • KT-56285 TCS: Gradle Sync: IdeProjectToProjectCInteropDependencyResolver: Ensure lenient resolution
  • KT-56115 Multiplatform;Composite Builds: Support import with cinterop commonization enabled
  • KT-56204 KotlinTargetHierarchy: Changing naming from 'any' to 'with' prefix
  • KT-54974 TCS: Gradle Sync: Implement IdeKotlinDependencyResolvers
  • KT-38712 Gradle configuration's name with word "implementation" is camelcased to "İmplementation" if default locale is Turkish
  • KT-54975 TCS: Gradle Sync: Implement stdlib-common filter for platform source sets
  • KT-36943 Gradle Plugin (multiplatform) - Consider publishing a 'sourcesElements' variant for the sources.jar
  • KT-48839 Sources.jar of the root artifact of MPP library includes source files from test sourcesets
  • KT-55492 TCS: Gradle Sync: Sources and Documentation as extra 'classpath'
  • KT-55237 TCS: Gradle Sync: Support stdlib-native sources
  • KT-55475 TCS: Gradle Sync: Fine tune jvmAndAndroid source sets
  • KT-55189 TCS: Gradle Sync: Support icons (native, js) and global libraries
  • KT-55218 KotlinTargetHierarchy: Disambiguate declaring targets vs including targets
  • KT-55112 TCS: Gradle Sync: Resolve Source Dependencies
  • KT-54977 TCS: Gradle Sync: Implement debugging tools
  • KT-54948 TCS: Gradle Sync: Port IdeaKpmPlatformDependencyResolver to TCS
  • KT-55289 TCS: Gradle Sync: Prototypical sources jar resolution
  • KT-55238 TCS: Gradle Sync: Support commonized native distribution
  • KT-55230 Remove metadata dependencies transformation for runtimeOnly scope
  • KT-53338 Prettify the message about incompatible AGP and KGP versions
  • KT-54506 Test tasks are considered up-to-date after a failure when triggered by allTests
  • KT-54787 Test tasks are not up-to-date when an individual test task called after aggregating test task
  • KT-54033 Multiplatform/Android Source Set Layout 1: Also support setting source dirs using AGP Apis
  • KT-54202 CInterop Commonization fails on first run when native distribution is not yet commonizied
  • KT-54135 Add documentation with examples to CompositeMetadataArtifact

Tools. Gradle. Native

  • KT-55650 Pass through errors from Gradle to Xcode
  • KT-56205 Shared Native Compilation: False positive 'w: Could not find' warnings on metadata klibs
  • KT-54969 Support podspec generation for the new K/N artifact DSL

Tools. Incremental Compile

  • KT-53832 Enable new incremental compilation by default in Gradle
  • KT-55309 IC: Get rid of NonCachingLazyStorage
  • KT-53402 Incremental compilation tries to compile resources

Tools. JPS

  • KT-56165 Language version 1.9 and 2.0 is absent in Kotlin Compiler settings
  • KT-51536 [JPS] Recompile module on facet settings change
  • KT-53735 JPS / IC: "IOException: The system cannot find the file specified" on Windows
  • KT-47983 [JPS] Adding compilerSettings to Facet should initiate rebuild of module
  • KT-54449 Cyrillic characters in a filename break builds on linux

Tools. Kapt

New Features

  • KT-53135 Enable JVM IR for KAPT stub generation by default
  • KT-41129 kotlin-maven-plugin + kapt - allow aptMode to be set according to docs

Fixes

  • KT-54380 Kapt / IR: Build failed when inheritance by functional interface with suspend modifier
  • KT-55490 Kapt + JVM IR: "annotation @Foo is missing default values"
  • KT-43786 KAPT: IllegalStateException: SimpleTypeImpl should not be created for error type: ErrorScope
  • KT-43117 Kapt: "System is already defined in this compilation unit"
  • KT-46966 Kapt: correctErrorTypes: receiver type is NonExistentClass
  • KT-46965 Kapt: correctErrorTypes: custom setter gets Object parameter type
  • KT-51087 KAPT: @JvmRepeatable annotations are present in inverse order in KAPT stubs
  • KT-54245 JVM IR / Kapt / Serialization: NullPointerException in SerializableIrGenerator.kt
  • KT-54870 KAPT stub generation with JVM_IR backend throws exception for delegated properties
  • KT-44350 Kapt Gradle integration tests failing with Android Gradle plugin 7.0
  • KT-33847 Kapt does not included Filer-generated class files on compilation classpath
  • KT-54030 Kapt: annotation processor warnings are displayed as errors on JDK 17+
  • KT-32596 kapt replaces class generated by annotation processor with error.NonExistentClass when the class is used as an annotation
  • KT-37586 KAPT: When delegated property use an unknown type (to-be-generated class), correctTypeError will mess up the $delegate field type

Tools. Maven

  • KT-29346 Add components.xml to automatically compile kotlin maven projects
  • KT-13995 Maven: Kotlin compiler plugin should respect model's compile source roots
  • KT-54822 Maven: Too low-level error message "Parameter specified as non-null is null: method kotlin.text.StringsKt__StringsJVMKt.startsWith, parameter " from Kotlin Maven plugin invoking compiler when tags are empty
  • KT-47110 Disable jdk8-specific warnings in kotlin-maven-plugin

Tools. Scripts

  • KT-54461 Warnings and stack traces when executing scripts via kotlin-maven-plugin
  • KT-54733 Scripts: ConcurrentModificationException in *.main.kts scripts
  • KT-53283 Scripts: main-kts JAR does not relocate embedded SLF4J and jsoup libraries
  • KT-54095 It is difficult (if not impossible) to use kotlin compiler plugins with scripting

1.8.0

Analysis API

  • KT-50255 Analysis API: Implement standalone mode for the Analysis API

Analysis API. FIR

  • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
  • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

Android

  • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
  • KT-53013 Increase AGP compile version in KGP to 4.1.3
  • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
  • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

Backend. Native. Debug

  • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

Compiler

New Features

  • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
  • KT-54460 Implementation of non-local break and continue
  • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
  • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
  • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

Performance Improvements

  • KT-53347 Get rid of excess allocations in parser
  • KT-53689 JVM: Optimize equality on class literals
  • KT-53119 Improve String Concatenation Lowering

Fixes

  • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
  • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
  • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
  • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
  • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
  • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
  • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
  • KT-51284 SAM conversion doesn't work if method has context receivers
  • KT-48532 Remove old JVM backend
  • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend
  • KT-53270 K1: implement synthetic Enum.entries property
  • KT-52823 Cannot access class Thread.State after upgrading to 1.7 from 1.6.1 using -Xjdk-release=1.8
  • KT-55108 IR interpreter: Error occurred while optimizing an expression: VARARG
  • KT-53547 Missing fun IrBuilderWithScope.irFunctionReference
  • KT-54884 "StackOverflowError: null" caused by Enum constant name in constructor of the same Enum constant
  • KT-47475 "IncompatibleClassChangeError: disagree on InnerClasses attribute": cross-module inlined WhenMappings has mismatched InnerClasses
  • KT-55013 State checker use-after-free with XCode 14.1
  • KT-54802 "VerifyError: Bad type on operand stack" for inline functions on arrays
  • KT-54707 "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
  • KT-48678 Coroutine debugger: disable "was optimised out" compiler feature
  • KT-54745 Restore KtToken constructors without tokenId parameter to preserve back compatibility
  • KT-54650 Binary incompatible ABI change in Kotlin 1.7.20
  • KT-52786 Frontend / K2: IndexOutOfBoundsException when opting in to K2
  • KT-54004 Builder type inference does not work correctly with variable assignment and breaks run-time
  • KT-54581 JVM: "VerifyError: Bad type on operand stack" with generic inline function and when inside try-catch block
  • KT-53794 IAE "Unknown visibility: protected/protected and package/" on callable reference to protected member of Java superclass
  • KT-54600 NPE on passing nullable Kotlin lambda as Java's generic SAM interface with super type bound
  • KT-54463 Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
  • KT-54509 Ir Interpreter: unable to evaluate string concatenation with "this" as argument
  • KT-54615 JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
  • KT-53146 JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
  • KT-53712 Add mode to prevent generating JVM 1.8+ annotation targets (TYPE_USE, TYPE_PARAMETER)
  • KT-54366 K2: no JVM BE specific diagnostics (in particular CONFLICTING_JVM_DECLARATIONS) in 1.8
  • KT-35187 NullPointerException on compiling suspend inline fun with typealias to suspend function type
  • KT-54275 K2: "IllegalArgumentException: KtParameter is not a subtype of class KtAnnotationEntry for factory REPEATED_ANNOTATION"
  • KT-53656 "IllegalStateException: typeParameters == null for SimpleFunctionDescriptorImpl" with recursive generic type parameters
  • KT-46727 Report warning on contravariant usages of star projected argument from Java
  • KT-53197 K2: 'init' hides member of supertype 'UIComponent' and needs 'override' modifier
  • KT-53867 K2: @JvmRecord does not compile to a java record
  • KT-53964 K2 is unable to work with Java records
  • KT-53349 K2: TYPE_MISMATCH caused by non-local return
  • KT-54100 "Type variable TypeVariable(P) should not be fixed" crash in code with errors
  • KT-54212 K2: cannot calculate implicit property type
  • KT-53699 K2: Exception during IR lowering in code with coroutines
  • KT-54192 Warn about unsupported feature on generic inline class parameters
  • KT-53723 Friend modules aren't getting passed to cache build during box tests
  • KT-53873 K2: Duplicated diagnostics reported from user type ref checkers
  • KT-50909 "VerifyError: Bad type on operand stack" caused by smartcasting for nullable inline class property in class
  • KT-54115 Restore Psi2IrTranslator constructor from 1.7.20
  • KT-53908 K2: Self-referencing generics in Java class causes New Inference Error (IE: class Foo<T extends Foo>)
  • KT-53193 K2: compile error on project that compiles fine with normal 1.7.10
  • KT-54062 K2 Invalid serialization for type-aliased suspend function type with extension receiver
  • KT-53953 Forbid usages of super or super if in fact it accesses an abstract member
  • KT-47473 NI: Missed UPPER_BOUND_VIOLATED diagnostics if use type aliases with type parameters
  • KT-54049 K2: false positive MANY_IMPL_MEMBER_NOT_IMPLEMENTED
  • KT-30054 Wrong approximation if nullable anonymous object with implemented interface is used
  • KT-53751 Postpone IgnoreNullabilityForErasedValueParameters feature
  • KT-53324 Implement Enum.entries lowering on K/N
  • KT-44441 K2: report redeclaration error if there is a Java class with the same name as the Kotlin class
  • KT-53807 No warning about declaringClass on an enum value
  • KT-53493 K2: val on function parameter counts as just warning
  • KT-53435 K2: "IllegalArgumentException: class KtValueArgument is not a subtype of class KtExpression for factory ANNOTATION_ARGUMENT_MUST_BE_CONST" if string in nested annotation is concatenated
  • KT-52927 AssertionError: LambdaKotlinCallArgumentImpl
  • KT-53922 Make Enum.entries unstable feature to poison binaries
  • KT-53783 Exception during psi2ir when declaring expect data object
  • KT-53622 [OVERLOAD_RESOLUTION_AMBIGUITY] when enum entry called 'entries' is present in K2
  • KT-41670 JVM IR: AbstractMethodError when using inheritance for fun interfaces
  • KT-53178 K2: implement diagnostics for serialization plugin
  • KT-53804 Restore old and incorrect logic of generating InnerClasses attributes for kotlin-stdlib
  • KT-52970 Default value constant in companion object works on JVM and JS, but fails on native
  • KT-51114 FIR: Support DNN checks
  • KT-27936 Write InnerClasses attribute for all class names used in a class file
  • KT-53719 Parsing regression on function call with type arguments and labeled lambda
  • KT-53261 Evaluate effect from inline for primitive types
  • KT-53706 K2: Context receivers are not resolved on properties during type resolution stage
  • KT-39492 Kotlin.Metadata's packageName field cannot be an empty string
  • KT-53664 Ir Interpreter: unable to evaluate name of function reference marked with JvmStatic from another module
  • KT-52478 [Native] Partial linkage: Building native binary from cached KLIBs fails if one library depends on removed nested callable member from another one
  • KT-48822 CompilationException: Back-end (JVM) Internal error: Failed to generate expression: KtProperty - ConcurrentModificationException
  • KT-50281 IllegalStateException: unsupported call of reified inlined function
  • KT-50083 Different error messages in android and JVM (Intrinsics.checkNotNullParameter).
  • KT-53236 Support Enum.entries codegen on JVM/IR BE
  • KT-41017 FIR: should we support smartcast after null check
  • KT-53202 "ISE: Descriptor can be left only if it is last" after direct invoke optimization on a capturing lambda
  • KT-46969 @BuilderInference with nested DSL scopes cause false-positive scope violation in Kotlin 1.5
  • KT-53257 FIR: Improper context receiver argument is chosen when there are two extension receiver candidates
  • KT-53090 Anonymous function and extension function literals are generated as classes even with -Xlambdas=indy
  • KT-53208 K2: Cannot get annotation for default interface method parameter when compiled with -Xuse-k2
  • KT-53184 K2: NoSuchMethodError on KProperty1.get() referenced via nullable typealias
  • KT-53198 K2: Return type mismatch: expected kotlin/Unit, actual kotlin/Unit?
  • KT-53100 Optimization needed: (CONSTANT_PRIMITIVE(x: T?)) => x
  • KT-49875 [FIR] Support infering PRIVATE_TO_THIS visibility
  • KT-53024 Refactor FIR renderer to composable architecture
  • KT-50995 [FIR] Support SAM with receiver plugin
  • KT-53148 K1: introduce warning for inline virtual member in enum
  • KT-49847 Devirtualization fails to eliminate boxing in function reference context
  • KT-52875 Extension function literal creation with -Xlambdas=indy fails with incorrect arguments
  • KT-53072 INVALID_IF_AS_EXPRESSION error isn't shown in the IDE (LV 1.8)
  • KT-52985 Native: a function with type T? returned a kotlin.Unit instead of null
  • KT-52020 FIR warning message includes internal rendering
  • KT-48778 -Xtype-enhancement-improvements-strict-mode not respecting @NonNull annotation for property accesses?

IDE

Fixes

  • KTIJ-22357 CCE “class org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl cannot be cast to class org.jetbrains.kotlin.fir.types.FirResolvedTypeRef” in K2
  • KT-55150 Argument for @NotNull parameter 'scope' of org/jetbrains/kotlin/resolve/AnnotationResolverImpl.resolveAnnotationType must not be null
  • KTIJ-22165 IDE notification to promote users to migrate to the new Kotlin/JS toolchain
  • KTIJ-22166 IDE notification (or something else) about JPS and Maven support for Kotlin/JS is deprecated
  • KT-53543 Rework light classes for file facade
  • KT-48773 Investigate the possibility of removing dependency on old JVM backend in light classes
  • KTIJ-19699 IDE: False positive type mismatch in Java code for Kotlin nested class non-direct inheritor from external library
  • KT-51101 FIR IDE: Exception on "Show Type Info" action
  • KTIJ-22295 MPP, IDE: False positive UPPER_BOUND_VIOLATED when JVM module implements the generic interface from MPP module and the type parameter is not equal to itself.
  • KT-51656 FIR IDE: ProgressCancelled exception is masked in the compiler during resolve
  • KT-51315 FIR IDE: move out base modules from fe10 plugin to reuse in k2 plugin
  • KTIJ-22323 K2: ISE during resolve of stdlib calls from the stdlib
  • KTIJ-21391 Generate -> Override methods : don't delegate to abstract methods
  • KT-53097 Extract common part of light classes to another module
  • KTIJ-22354 FIR LC: annotation owner is always null
  • KTIJ-22157 Kotlin call resolver leaks user code when reporting exception

IDE. Completion

  • KTIJ-22552 Kotlin: 'for loop' postfix completion doesn't work - "Fe10SuggestVariableNameMacro must be not requested from main classloader"
  • KTIJ-22503 Support code completion for data objects

IDE. Debugger

  • KT-51755 Compilation exception with scripting compilation during debug session
  • KTIJ-21963 Debugger / IR: Expression evaluation of the debugger doesn't work

IDE. Decompiler, Indexing, Stubs

  • KTIJ-22750 Initialize Kotlin stub element types lazily
  • KTIJ-18094 IDE: "AssertionError: Stub count doesn't match stubbed node length" with minified Android AAR library
  • KTIJ-17632 IndexOutOfBoundsException: Cannot decompile a class located in minified AAR

IDE. Gradle Integration

  • KT-48135 In the IDE import, reuse dependency granular source set KLIBs across multi-project build to avoid duplicate external libraries
  • KTIJ-22345 False positive unresolved reference for members of subclasses of expect classes.
  • KT-53514 HMPP: False positive for None of the following functions can be called with the arguments supplied. with Enum in common module
  • KT-51583 Gradle 7.4+ | SamplesVariantRule interference: Could not resolve all files for configuration ':kotlinKlibCommonizerClasspath'
  • KTIJ-21077 Dependency matrix does not work with Jetpack compose / multiplatform projects

IDE. Inspections and Intentions

  • KTIJ-19531 Adapt changes about new rules for method implementation requirements
  • KTIJ-22087 Support IDE inspections for upcoming data objects
  • KTIJ-20510 Quick fix to implement and call correct super method in case of inheritance with defaults
  • KTIJ-20170 Provide quickfix for deprecated resolution to private constructor of sealed class
  • KTIJ-22630 FIR IDE: Lazy resolve exception after invocation of Override members action on value class
  • KT-49643 Intentions: "Implement members" fails when base type function declaration uses unresolved generic types

IDE. JS

  • KTIJ-22167 Make JS IR default in projects created by wizard
  • KTIJ-22332 Wizard: Kotlin/JS projects: cssSupport DSL should be updated

IDE. KDoc

  • KTIJ-22324 K2 IDE: implement reference resolve inside KDocs

IDE. Multiplatform

  • KTIJ-19566 New Project Wizard: Update HMPP-related flags in multiplatform wizards

IDE. Navigation

  • KT-51314 FIR IDE: show Kotlin declarations in search symbol
  • KTIJ-22755 Find usage for constructor from kotlin library doesn't work for secondary constructor usages

IDE. Script

  • KTIJ-22598 Add warning for standalone scripts in source roots
  • KT-54325 .settings.gradle.kts and .init.gradle.kts are reported as standalone scripts

IDE. Structural Search

  • KTIJ-21986 KSSR: "CodeFragment with non-kotlin context should have fakeContextForJavaFile set: originalContext = null" warning shows up when replacing

IDE. Tests Support

  • KT-50269 FIR IDE: Allow running tests via gutter

IDE. Wizards

  • KTIJ-23537 Wizard: projects with Android modules require higher sdkCompileVersion
  • KTIJ-23525 Wizard: Compose multiplatform: project won't build and require higher compileSdkVersion
  • KTIJ-22763 New Project Wizard: remove deprecated Android extensions plugin from Android target in the project constructor
  • KTIJ-22481 Wizard: Kotlin -> Browser application (gradle groove). Build error

JavaScript

Fixes

  • KT-55097 KJS / IR + IC: Using an internal function from a friend module throws an unbound symbol exception
  • KT-54406 Kotlin/JS: build with dependencies fails with "Could not find "kotlin" in [~/.local/share/kotlin/daemon]"
  • KT-53074 Make JS IR BE default in toolchain (gradle & CLI)
  • KT-50589 UTF-8 Instability in kotlin.js.map
  • KT-54934 KJS / IR + IC: Suspend abstract function stubs are generated with unstable lowered ic signatures
  • KT-54895 KJS / IR + IC: broken cross module references for function default param wrappers
  • KT-54520 KJS / IR Allow IdSignature clashes
  • KT-54120 JS IR + IC: pointless invalidation of dependent code after modifying companions
  • KT-53986 KJS / IR + IC: compiler produces different JS file names with IC and without IC
  • KT-54010 JS IR + IC: Force IC cache invalidation after updating language version or features
  • KT-53931 KJS / Gradle: Regression with 1.7.20-RC: ReferenceError: println is not defined
  • KT-53968 Kotlin/JS: no UninitializedPropertyAccessException on access to non-initialized lateinit property defined in dependencies
  • KT-54686 KJS / IR: Incorrect generation of signatures when one of argument is nested class
  • KT-54479 KJS / IR + IC: Adding or removing companion fields leads java.lang.IllegalStateException in the compiler IC infrastructure
  • KT-54382 KJS / IR: Wrong type check for inheritors of suspend functions
  • KT-54323 KJS / IR + IC: Intrinsics from stdlib may lose their dependencies in incremental rebuild
  • KT-53361 KJS / IR: No debug info is generated for in-line js code
  • KT-53321 Implement Enum.entries lowering on JS/IR
  • KT-53112 KJS IR turn on IC infra by default
  • KT-50503 Kotlin/JS: IR + IC: compileTestDevelopmentExecutableKotlinJs fails with ISE: "Could not find library" after removing module dependency
  • KT-54011 JS IR + IC: EnumEntries don't work well when IC is enabled
  • KT-53672 KJS / IR: "IndexOutOfBoundsException: Index 0 out of bounds for length 0" caused by function reference to extension function of reified type variable
  • KT-43455 KJS: IR. Incremental compilation problem with unbound symbols
  • KT-53539 KJS: Exported class inherited non-exported class shows warning
  • KT-53443 KJS/IR: NullPointerException caused by anonymous objects inside lambdas
  • KT-52795 K/JS and K/Native IR-validation/compilation errors for a valid kotlin code
  • KT-52805 KJS/IR: Invalid call of inline function in also block
  • KT-51151 KJS / IR: Wrong overloaded generic method with receiver is called
  • KT-52830 KJS/IR: Sourcemap disabling doesn't work
  • KT-52968 KJS / IR: Buggy generation of overridden methods
  • KT-53063 KJS / IR + IC: undefined cross module reference for implemented interface functions
  • KT-51099 KJS / IR + IC: Cache invalidation doesn't check generic class variance annotations (in, out)
  • KT-51090 KJS / IR + IC: Cache invalidation doesn't check suspend qualifier
  • KT-51088 KJS / IR + IC: Cache invalidation doesn't check class qualifiers (data, inline)
  • KT-51083 KJS / IR + IC: Cache invalidation doesn't check inline function which was non inline initially
  • KT-51896 KJS / IR + IC: Cache invalidation doesn't trigger rebuild for fake overridden inline functions

Language Design

  • KT-48385 Deprecate confusing grammar in when-with-subject
  • KT-48516 Forbid @Synchronized annotation on suspend functions
  • KT-41886 Ability to require opt-in for interface implementation, but not for usage
  • KT-34943 OVERLOAD_RESOLUTION_AMBIGUITY inconsistent with the equivalent Java code
  • KT-51334 Implement type-bound label this@Type

Libraries

New Features

  • KT-21007 Provide Kotlin OSGI Bundle with extensions for JRE8 (and JRE7)
  • KT-54082 Comparable and subtractible TimeMarks
  • KT-52928 Provide copyToRecursively and deleteRecursively extension functions for java.nio.file.Path
  • KT-49425 Update OptIn documentation to reflect latest design changes
  • KT-54005 Allow calling declaringJavaClass on Enum
  • KT-52933 rangeUntil members in built-in types

Performance Improvements

  • KT-53508 Cache typeOf-related KType instances when kotlin-reflect is used

Fixes

  • KT-51907 Switch JVM target of the standard libraries to 1.8
  • KT-54835 Document that Iterable.all(emptyCollection) returns TRUE.
  • KT-54168 Expand on natural order in comparator docs
  • KT-53277 Stabilize experimental API for 1.8
  • KT-53864 Review deprecations in stdlib for 1.8
  • KT-47707 Remove the system property and the brittle contains optimization code itself
  • KT-52336 Different behavior on JVM and Native in stringBuilder.append(charArray, 0, 1)
  • KT-53927 Remove deprecation from ConcurrentModificationException constructors
  • KT-53152 Introduce EnumEntries to stdlib as backing implementation of Enum.entries
  • KT-53134 stdlib > object Charsets > not thread safe lazy initialization
  • KT-51063 Gradle project with JPS runner: "JUnitException: Failed to parse version" JUnit runner internal error with JUnit
  • KT-52908 Native: setUnhandledExceptionHook swallows exceptions

Native

  • KT-51043 Kotlin Native: ObjC-Interop: kotlin.ClassCastException: null cannot be cast to kotlin.Function2
  • KT-50786 Native: prohibit suspend calls inside autoreleasepool {}
  • KT-52834 Implement test infrastructure for K2/Native

Native. C Export

  • KT-36878 Reverse C Interop: incorrect headers generation for primitive unassigned type arrays
  • KT-53599 [Reverse C Interop] Provide box/unbox API for unsigned primitive types
  • KT-41904 Kotlin/Native : error: duplicate member for interface and function with the same name
  • KT-42830 [Reverse C Interop] Add API to get value of boxed primitives
  • KT-39496 K/N C: optional unsigned types as function parameters crash the compiler
  • KT-39015 Cannot compile native library with nullable inline class

Native. C and ObjC Import

  • KT-54738 Cocoapods cinterop: linking platform.CoreGraphics package
  • KT-54001 Kotlin/Native: support header exclusion in cinterop def files
  • KT-53151 Native: Custom declarations in .def don't work with modules, only headers

Native. ObjC Export

  • KT-53680 Obj-C refinement annotations
  • KT-54119 Native: runtime assertion failed due to missing thread state switch
  • KT-42641 Don't export generated component* methods from Kotlin data classes to Obj-C header

Native. Platform Libraries

  • KT-54225 Native: update to Xcode 14.1
  • KT-54164 Native: commonizer fails on CoreFoundation types
  • KT-39747 Why is there no WinHttp API in Kotlin/Native's Windows API?

Native. Runtime

  • KT-49228 Kotlin/Native: Allow to unset unhandled exception hook
  • KT-27305 Fix FILE macro inside RuntimeCheck and RuntimeAssert

Native. Runtime. Memory

  • KT-54498 Deprecation message of 'FreezingIsDeprecated' is not really helpful
  • KT-53182 New memory manager: Unexpected memory usage on IOS

Native. Stdlib

  • KT-52429 Small Usability Improvements for Worker API

Reflection

  • KT-54629 Incorrectly cached class classifier
  • KT-54611 KTypeImpl does not take into account class loader from the classifier property
  • KT-48136 Make Reflection.getOrCreateKotlinPackage use cache when kotlin-reflect is used
  • KT-50705 Use ClassValue to cache KClass objects in kotlin-reflect
  • KT-53454 Properly cache the same class's KClass when it's loaded by multiple classloaders in getOrCreateKotlinClass

Specification

  • KT-54210 Update Kotlin specification to mention that since 1.8 generics in value classes are allowed

Tools. CLI

  • KT-54116 Add JVM target bytecode version 19
  • KT-53278 Support values 6 and 8 for -Xjdk-release
  • KT-46312 CLI: Kotlin runner should use platform class loader to load JDK modules on Java 9+

Tools. Commonizer

  • KT-54310 Commonizer fails on 1.8.0-dev K/N distributions
  • KT-48576 [Commonizer] platform.posix.pselect not commonized in Ktor

Tools. Compiler Plugins

  • KT-46959 Kotlin Lombok: Support generated builders (@Builder)
  • KT-53683 Unresolved reference compilation error occurs if a file is annotated with @ Singular and has any guava collection type : ImmutableTable, ImmutableList or else
  • KT-53657 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type NavigableMap without explicit types specification
  • KT-53647 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type Iterable<>
  • KT-53724 Param of the @ Singular lombok annotation ignoreNullCollections=true is ignored by kotlin compiler
  • KT-53451 [K2] References to methods generated by @ With lombok annotation can't be resolved with enabled K2 compiler
  • KT-53721 [K2] There is no compilation error while trying to add null as a param of the field with non-null type
  • KT-53370 Kotlin Lombok compiler plugin can't resolve methods generated for java boolean fields annotated with @ With annotation

Tools. Compiler plugins. Serialization

  • KT-54878 JVM/IR: java.lang.ClassCastException: class org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl cannot be cast to class org.jetbrains.kotlin.ir.types.IrTypeProjection on serializer<Box<*>>()
  • KT-55340 Argument for kotlinx.serialization.UseSerializers does not implement KSerializer or does not provide serializer for concrete type
  • KT-55296 Improve exceptions in serialization plugin
  • KT-55180 KJS: regression in serialization for Kotlin 1.8.0-beta
  • KT-53157 Recursion detected in a lazy value under LockBasedStorageManager in kotlinx.serialization
  • KT-54297 Regression in serializable classes with star projections
  • KT-49660 kotlinx.serialization: IndexOutOfBoundsException for parameterized sealed class
  • KT-43910 JS IR: Serialization with base class: "IndexOutOfBoundsException: Index 0 out of bounds for length 0"

Tools. Daemon

  • KT-52622 Kotlin/JS, Kotlin/Common compilations start Kotlin daemon incompatible with Kotlin/JVM compilation on JDK 8

Tools. Gradle

New Features

  • KT-27301 Expose compiler flags via Gradle lazy properties
  • KT-53357 Change single build metrics property
  • KT-50673 Gradle: KotlinCompile task(s) should use @NormalizeLineEndings
  • KT-34464 Kotlin build report path not clickable in the IDE

Performance Improvements

  • KT-51525 [Gradle] Optimize evaluating args for compile tasks
  • KT-52520 Remove usage of reflection from CompilerArgumentsGradleInput

Fixes

  • KT-48843 Add ability to disable Kotlin daemon fallback strategy
  • KT-55334 kaptGenerateStubs passes wrong android variant module names to compiler
  • KT-55255 Gradle: stdlib version alignment fails build on dynamic stdlib version.
  • KT-55363 [K1.8.0-Beta] Command line parsing treats plugin parameters as source files
  • KT-54993 Raise kotlin.jvm.target.validation.mode check default level to error when build is running on Gradle 8+
  • KT-54136 Duplicated classes cause build failure if a dependency to kotlin-stdlib specified in an android project
  • KT-50115 Setting toolchain via Java extension does not configure 'kotlinOptions.jvmTarget' value when Kotlin compilation tasks are created eagerly
  • KT-55222 Migrate AndroidDependencyResolver to the new Gradle API
  • KT-55119 There is no validation for different jvmTarget and targetCompatibility values in multiplatform projects with jvm target and used java sources
  • KT-55102 Compile java task fails with different target version in pure kotlin project
  • KT-54995 [1.8.0-Beta] compileAppleMainKotlinMetadata fails on default parameters with No value passed for parameter 'mustExist'
  • KT-35003 Automatically set targetCompatibility for kotlin-jvm projects to work with gradle 6 metadata
  • KT-45335 kotlinOptions.jvmTarget conflicts with Gradle variants
  • KT-48798 Android: going from one to more than one productFlavor causes inputs of commonSourceSet$kotlin_gradle_plugin property of compileKotlin task to change
  • KT-55019 Gradle sync: UnknownConfigurationException when adding implementation dependencies to a Kotlin with Java compilation
  • KT-55004 jvmTarget value is ignored by depending modules if a task "UsesKotlinJavaToolchain" is configured for all project modules using allProjects {}
  • KT-54888 Add Gradle property to suppress kotlinOptions.freeCompilerArgs modification on execution phase
  • KT-54399 Undeprecate 'kotlinOptions' DSL
  • KT-54306 Change the naming of newly added Compiler*Options classes and interfaces
  • KT-54580 KotlinOptions in AbstractKotlinCompilation class are deprecated
  • KT-54653 java.lang.NoClassDefFoundError: kotlin/jdk7/AutoCloseableKt exception if a dependency to the kotlin-stdlib is added
  • KT-52624 Compatibility with Gradle 7.3 release
  • KT-54703 Stdlib substitution does not work with JPMS modules
  • KT-54602 Prevent leaking Gradle Compile DSL types into compiler cli runtime
  • KT-54439 Project failed to sync Native LaguageSettings to compiler options in afterEvaluate
  • KT-53885 Bump minimal supported Gradle version to 6.8.3
  • KT-53773 Protect and system properties can contain sensitive data
  • KT-53732 Add custom values limits for build scan reports
  • KT-52623 Compatibility with Gradle 7.2. release
  • KT-51831 Gradle: remove kotlin.compiler.execution.strategy system property
  • KT-51679 Change deprecation level to error for KotlinCompile setClasspath/getClasspath methods
  • KT-54335 Kotlin build report configuration. There is no validation for SINGLE_FILE output if the required kotlin.build.report.single_file property is empty or absent
  • KT-54356 Kotlin build report configuration. Wrong path is used for the property kotlin.internal.single.build.metrics.file
  • KT-53617 KotlinCompilerExecutionStrategy value is ignored by depending modules if configure once for all project modules using allProjects {}
  • KT-53823 Kotlin Gradle Plugin uses deprecated Gradle API: Provider.forUseAtConfigurationTime()
  • KT-54142 Increase Kotlin Gradle plugin Gradle target API to 7.5
  • KT-50161 Android variant filter breaks KotlinCompile cache compatibility
  • KT-54113 LanguageSettings to KotlinNativeLink.toolOptions sync are executed on the wrong context
  • KT-53830 Versions of kotlin-stdlib-jdk8 and kotlin-stdlib-jdk7 aren't overrided if added as transitive dependencies to kotlin-stdlib
  • KT-54112 Missing target input on KotlinNativeLink task
  • KT-45879 Documentation: Wrong kotlin languageVersion "1.6 (EXPERIMENTAL)"
  • KT-54103 Remove JvmTarget.JVM_1_6 from generated Gradle compiler type
  • KT-52959 KMP code is breaking Gradle project isolation
  • KT-50598 MULTIPLE_KOTLIN_PLUGINS_SPECIFIC_PROJECTS_WARNING is only shown on first build
  • KT-53246 Gradle: Special characters in paths of errors and warnings should be escaped
  • KT-47730 How to avoid stdlib coming from Kotlin gradle plugin
  • KT-52209 Corrupted cache and non-incremental build if produce caches "in process" and restore then compiling with kotlin daemon
  • KT-41642 "TaskDependencyResolveException: Could not determine the dependencies" when trying to apply stdlib
  • KT-53390 Drop usage of -Xjava-source-roots when passing java sources required for Kotlin compilation
  • KT-52984 Kotlin Gradle plugin is misbehaving by resolving DomainObjectCollection early
  • KT-38622 Non-incremental compilation because of R.jar with Android Gradle plugin 3.6
  • KT-38576 AnalysisResult.RetryWithAdditionalRoots crashes during incremental compilation with java classes in classpath

Tools. Gradle. Cocoapods

  • KT-54314 Cocoapods: Signing pod dependency for Xcode 14
  • KT-54060 Xcode 14: disable bitcode embedding for Apple frameworks
  • KT-53340 Change default linking type for frameworks registered by cocoapods plugin
  • KT-53392 Deprecate and delete downloading pod dependencies by direct link
  • KT-53695 Build of macOS application fails if a framework is integrated via Cocoapods plugin

Tools. Gradle. JS

  • KT-53367 KJS: Migrate cssSupport API
  • KT-45789 KJS / IR: Transitive NPM dependencies are not included in PublicPackageJsonTask output
  • KT-55099 K/JS: Second declaration of JS target without compiler type report warning incorrectly
  • KT-52951 [KGP/JS] Browser test target registration via properties
  • KT-52950 KJS: Report if yarn.lock was updated during built
  • KT-53374 KJS / Gradle: Implement IDEA sync detection logic via ValueSource to improve configuration cache support
  • KT-53381 Kotlin/JS: with erased kotlin-js-store/ and reportNewYarnLock = true the task kotlinUpgradeYarnLock always fails
  • KT-53788 KJS / Gradle: Disable Gradle build cache for KotlinJsDce when development mode is enabled
  • KT-53614 Kotlin/JS upgrade npm dependencies

Tools. Gradle. Multiplatform

New Features

  • KT-53396 Support 'implementation platform()' by gradle kotlin mpp plugin for JVM target
  • KT-40489 MPP / Gradle: support BOM (enforcedPlatform) artifacts in source set dependencies DSL

Performance Improvements

  • KT-52726 [MPP] Optimize caching/performance/call-sites of 'compilationsBySourceSets'

Fixes

  • KT-54634 MPP: Test Failure causes: KotlinJvmTest$Executor$execute$1 does not define failure
  • KT-35916 Gradle MPP plugin: Configurations for a main compilation and its default source set have different naming
  • KT-46960 Repeated kotlin/native external libraries in project
  • KT-27292 MPP: jvm { withJava() }: Gradle build: Java source under Kotlin root is resolved while building, but does not produce output class files
  • KT-34650 Naming clash in MPP+Android: androidTest vs androidAndroidTest
  • KT-54387 Remove MPP alpha stability warning
  • KT-31468 Targets disambiguation doesn't work if a depending multiplatform module uses withJava() mode
  • KT-54090 Take an Apple test device from the device list
  • KT-54301 KotlinToolingVersionOrNull: IllegalArgumentException
  • KT-53256 Implement K/N compiler downloading for KPM
  • KT-45412 KotlinCompilation: Make sure .kotlinSourceSets and .allKotlinSourceSets include the default source set
  • KT-49202 Tests on android target can't be executed in multiplatform project if dependency to kotlin-test framework is provided as a single dependency and tests configured to be executed via Junit5

Tools. Gradle. Native

New Features

  • KT-43293 Support Gradle configuration caching with Kotlin/Native
  • KT-53107 Add arm64 support for watchOS targets (Xcode 14)

Fixes

  • KT-53704 Native cinterop: eager header path calculation
  • KT-54814 Kotlin/Native: Github Actions: Testing watchOSX64 with Xcode 14 — Invalid device: Apple Watch Series 5
  • KT-54627 Native: :commonizeNativeDistribution with configuration cache enabled fails even when set to warn on JDK 17
  • KT-54339 Link tasks fail if Gradle Configuration Cache is enabled
  • KT-53191 Native cinterop sync problem with gradle
  • KT-54583 watchosDeviceArm64 target shouldn't register test tasks
  • KT-52303 Gradle / Native: Build tasks ignore project.buildDir
  • KT-54442 Gradle iOS test tasks fail if a device is not selected explicitly
  • KT-54177 Gradle: Deprecate enableEndorsedLibs flag
  • KT-47355 Support macos target for FatFramework task
  • KT-53339 MPP / CocoaPods: The static framework fails to install on a real iOS device
  • KT-31573 Missing description for Native Gradle tasks
  • KT-53131 Gradle Sync: "NoSuchElementException: Array contains no element matching the predicate" with CocoaPods
  • KT-53686 Task assembleReleaseXCFramework fails with "error: the path does not point to a valid framework" if project name contains a dash

Tools. Incremental Compile

  • KT-54144 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline function with custom JvmName
  • KT-53871 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline property accessor
  • KT-19804 Relocatable IC caches

Tools. JPS

  • KT-45474 False positive NO_ELSE_IN_WHEN on sealed class with incremental compilation
  • KT-54228 Switching abstract to sealed classes causes incremental issue
  • KT-38483 JPS: Stopping compilation causes IDE CompilationCanceledException
  • KT-50310 False positive NO_ELSE_IN_WHEN on incremental build when adding sealed classes
  • KT-48813 Move cache version to compiler
  • KTIJ-921 JPS: FileNotFoundException on project build in mixed Kotlin/Scala project

Tools. Kapt

  • KT-54187 JVM IR + kapt: incorrect modifier final is generated for nested enum in interface
  • KT-48827 Remove 'kapt.use.worker.api' property

Tools. Scripts

  • KT-54355 Scripts: Internal compiler error (languageVersion=1.9)
  • KT-53009 Scripting: NDFDE “Descriptor wasn't found for declaration SCRIPT” on using script definition with kotlin from master

1.7.21

Compiler

  • KT-54463 Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
  • KT-54509 Ir Interpreter: unable to evaluate string concatenation with "this" as argument
  • KT-54004 Builder type inference does not work correctly with variable assignment and breaks run-time
  • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
  • KT-54615 JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
  • KT-54581 JVM: "VerifyError: Bad type on operand stack" with generic inline function and when inside try-catch block
  • KT-53146 JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
  • KT-54600 NPE on passing nullable Kotlin lambda as Java's generic SAM interface with super type bound
  • KT-54707 "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
  • KT-54650 Binary incompatible ABI change in Kotlin 1.7.20
  • KT-54802 "VerifyError: Bad type on operand stack" for inline functions on arrays

Native. Runtime. Memory

  • KT-54498 Deprecation message of 'FreezingIsDeprecated' is not really helpful

Tools. Gradle. Multiplatform

  • KT-54387 Remove MPP alpha stability warning
  • KT-48436 False positive "The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation"

Tools. JPS

  • KT-45474 False positive NO_ELSE_IN_WHEN on sealed class with incremental compilation

1.7.20

Analysis API

  • KT-52667 FIR IDE: fun interfaces (SAM interfaces) are not properly resolved
  • KT-52136 FIR: Implicit type declaration from the other module cannot be used for overloading

Analysis API. FE1.0

  • KT-51962 Analysis API: Finish Analysis API for FE1.0

Analysis API. FIR

  • KT-52779 FIR IDE: Import Optimizer cannot handle generic type qualifiers
  • KT-50236 Fix OOB modification trackers for non-Kotlin code
  • KT-51240 Analysis API: KtAnalysisSession for a specific module cannot create a symbol for PSI that cannot be seen from that module.
  • KT-50868 Analysis API: decompiled type aliases are not resolved

Compiler

  • KT-53739 Builder inference, extension hides members
  • KT-53733 Kotlin/Native: update source documentation for the new default memory manager
  • KT-53667 Compiler crashes on attempt to alloc a string on the stack in new MM
  • KT-53480 Internal error in file lowering: java.lang.ClassNotFoundException: com.android.systemui.R$string
  • KT-52843 Compose: NPE at Parameters.getParameterByDeclarationSlot if inline function with default arguments takes a lambda which captures value class represented by Long
  • KT-53475 Kotlin/Native for iOS: "IllegalArgumentException: Sequence has more than one element"

New Features

  • KT-52495 Support until operator in back-ends
  • KT-52420 Implement resolve of until operator
  • KT-52419 Implement until operator in the parser
  • KT-33755 Kotlin/Native: Provide a way to customize a bundle Identifier of a generated framework
  • KT-51665 FIR: implement label resolve for "typed this" case
  • KT-52361 Report warning on potentially empty intersection types

Performance Improvements

  • KT-47816 Disable script discovery for non-script environments
  • KT-48635 JVM IR: Double/Float values are boxed when comparing for equality in equals method of data/value classes
  • KT-23397 Optimize out field for property delegate when it's safe (JVM)

Fixes

  • KT-53272 Backend Internal error: Exception during IR lowering / No such value argument slot: 2
  • KT-53124 Receiver type mismatch when combining extension properties, type projections, Java sources, and F-bounded type-variables
  • KT-51868 JVM / IR: Inconsistent behaviour between lambda expression and SAM interface conversion for the same interface
  • KT-36770 Prohibit unsafe calls with expected @NotNull T and given Kotlin generic parameter with nullable bound
  • KT-52974 "IllegalStateException: Symbol with IrSimpleFunctionSymbolImpl is unbound" compiling native targets of MPP project
  • KT-53007 JVM: "Bad invokespecial instruction: current class isn't assignable to reference class" when call superclass of outer class method from inner class
  • KT-53019 K2: cannot cast callable reference to Function1 in runtime
  • KT-53031 K2 compiler crashes with IllegalStateException: No type in ProtoBuf.ValueParameter
  • KT-29168 Prohibit upper bounds violation with generic typealias using not all type parameters as arguments for underlying type in supertypes
  • KT-52432 Using the IDE compiled with K2 (useFir) throws VerifyError exception
  • KT-52327 False negative: TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM isn't reported
  • KT-49682 Support JVM IR in KAPT stub generation
  • KT-24643 Prohibit using a type parameter declared for an extension property inside delegate
  • KT-51972 FIR, Gradle: "Symbol is invisible" compilation error with enabled Kotlin Lombok compiler plugin
  • KT-52011 [FIR] All-open compiler plugin isn't supported
  • KT-51950 JVM IR: "IndexOutOfBoundsException: Cannot pop operand off an empty stack" with crossinline lambdas and interface delegation
  • KT-52540 Native: kotlin.NotImplementedError with Arrow library
  • KT-48031 "IllegalStateException: Type variable TypeVariable(T) should not be fixed!"
  • KT-47708 RequiresOptIn check does not flag experimental method usage in SAM lambda expressions
  • KT-52913 JVM / IR: "IllegalArgumentException: Inline class types should have the same representation" when trying to down cast cast a value class
  • KT-50771 IR partial linkage: Removed abstract callable members are not supported
  • KT-52994 Enable generic inline classes as experimental feature
  • KT-52742 CYCLE_IN_ANNOTATION_PARAMETER_ERROR false positive on annotations with default values
  • KT-52743 Non-null generic functions throws NPE when assigned to val
  • KT-52745 Frontend / K2: "IncompatibleClassChangeError: class A$B overrides final method A.length()I" caused by delegation in a sealed class
  • KT-52832 Tree-generator's method FirExpression::isFirType returns true and false for different field names; it should always be true
  • KT-52403 IncompatibleClassChangeError when inlining suspend funs
  • KT-50107 Missed USAGE_IS_NOT_INLINABLE diagnostic: Leaking inline lambda parameter through extension receiver
  • KT-47965 Missed USAGE_IS_NOT_INLINABLE diagnostic on inline lambda parameter usage as receiver of .let call
  • KT-25787 No error on crossinline usage of receiver parameter of functional type in an inline function
  • KT-52762 Frontend / K2: Named arguments for Java classes lead to "Cannot find a parameter with this name"
  • KT-52680 K2: overload resolution ambiguity if this is casted in a different method
  • KT-52676 K2: Unsupported compile-time value IrGetFieldImpl instead of IrConst in AnnotationCodegen for constant from Java
  • KT-50293 False positive: USELESS_CAST on stub types
  • KT-52175 WRONG_ANNOTATION_TARGET for annotation that used inside if
  • KT-52338 "IncompatibleClassChangeError: Expected non-static field" with Kotlin class with same-named companion object property as base Java class field
  • KT-49507 JVM: "IllegalAccessError: class X tried to access private field" with same-named Kotlin property and Java base class field
  • KT-44512 FIR DFA: incorrect smartcast after null assignment inside a lambda
  • KT-49200 FIR/FE 1.0: different behavior with multiple matching star imports
  • KT-52718 declaringClass deprecation message mentions the wrong replacement in 1.7
  • KT-52190 FIR2IR: Unexpected IrErrorTypeImpl type for put method inside buildMap
  • KT-52197 Incorrect inference of var type inside lambda that passed to extension function with type parameters that defined inside this lambda
  • KT-52057 Unsupported compile-time value STRING_CONCATENATION and GET_FIELD in annotation arguments
  • KT-47823 JVM IR: "IllegalArgumentException: Inline class types should have the same representation" with break usage in the loop range
  • KT-51883 Kotlin 1.6.20 generates "-" in type names around lambdas and inline extension function with reified type which breaks Apache Beam
  • KT-52684 Syntax error regression on complicated combination of LT and GTEQ
  • KT-52417 Reflection: Can't reflect on type parameters captured by SAM converted lambda
  • KT-46797 JVM IR: suspendImpl has no generic signature, breaking reified types in anonymous object supertypes when using the type token pattern
  • KT-51464 FIR: Unable to infer type in coroutines flow code
  • KT-52163 JVM IR: Double.compareTo(Int) compiled to integer comparison
  • KT-41980 FIR: erroneous scope during annotation resolve
  • KT-47159 KtPsiUtils.areParenthesesUseless() is returning a false positive on expressions for interface delegation
  • KT-51418 Substitute anonymous type's supertypes
  • KT-35544 kotlin.TypeCastException has no message on Native
  • KT-52386 StackOverflowError during Kotlin/Native gradle build
  • KT-52592 NPE from KProperty.getExtensionDelegate on property delegated to another property
  • KT-52551 Delegating to object property reference does not invoke object's initializer
  • KT-51704 Contracts: "AssertionError: Arguments and parameters size mismatch" with companion object
  • KT-25527 False positive UNUSED_VALUE for delegated property/variable
  • KT-51002 [FIR] Hidden declaration hides visible one
  • KT-51008 [FIR] Star import does not work for nested calssifiers of java class
  • KT-52407 FIR: Star import has lower priority than built-in import
  • KT-52431 Reported error instead of warning due to empty intersection type found
  • KT-49394 Bad message and suggestion: The feature "unit conversion" is disabled
  • KT-51168 FIR: Inference error with Java interop and captured types
  • KT-49961 "AssertionError: Left expression was not processed: BINARY_EXPRESSION" when analyzing dangling [bracketed] expression inside elvis
  • KT-50108 Difference in fun interface conversion behavior for uninitialized not-null function values
  • KT-51889 Calls to super-classes constructors with context receivers fail on runtime
  • KT-51228 [FIR] Unresolved reference on callable reference on implicit this with smartcast
  • KT-52364 False positive for INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION
  • KT-52237 JVM / IR: "IllegalArgumentException: No argument for parameter VALUE_PARAMETER CONTINUATION_CLASS" when implementing Map interface on class with suspending functions
  • KT-50832 Method references to suspend inline functions are processed incorrectly
  • KT-52194 False positive "Class 'my.packge.MyClass' is compiled by a pre-release version of Kotlin and cannot be loaded by this version of the compiler" but builds fine
  • KT-47203 JVM Debugger: Parameter value doesn't change for tailrec function
  • KT-52131 False positive variable unused warning when calling inline function in finally block
  • KT-51738 Debugger: stepping over in inline function with multiple inline lambda invocations is incorrect
  • KT-52198 Losing reference to the value of an outer variable (Ref$ObjectRef) when using suspend inline with suspendCancellableCoroutine
  • KT-50994 FIR: AssertionError during inference of delegated properties with implicit types
  • KT-51757 FIR does not see various JS/Native specific declarations in common modules
  • KT-51201 FIR: ARGUMENT_TYPE_MISMATCH diagnostic contains generic parameter instead of the actual type
  • KT-48444 FIR: type argument rejected for annotation
  • KT-51754 JVM: Local variable table invalid for do-while with continue
  • KT-51936 Breakpoint not hit on last line of suspend function on Android
  • KT-27333 Forbid @Synchronized annotation on suspend functions
  • KT-51530 "StackOverflowError: CoroutineTransformerMethodVisitor.spillVariables" with data class in Flow
  • KT-51460 FIR: Protected property inaccessible from inner class
  • KT-53947 IllegalStateException: No mapping for symbol: VALUE_PARAMETER INSTANCE_RECEIVER
  • KT-51234 Context receivers can be duplicated in function declaration
  • KT-51576 Context receivers: "AssertionError: Callers must check that current token is IDENTIFIER followed with '@'" with at character
  • KT-49479 JVM / IR: "IllegalStateException: IrErrorType" during IR lowering with non-trivial recursion calls
  • KT-52270 NullPointerException caused by braces on if-else returning a method reference inside lambda
  • KT-47621 False negative INVISIBLE_MEMBER on call to inaccessible protected synthetic property setter
  • KT-37796 NI: "ISE: Error type encountered" when inferring type of a property that delegates to itself
  • KT-45430 PSI2IR: "org.jetbrains.kotlin.psi2ir.generators.ErrorExpressionException: null: KtCallExpression: toString()" with recursive function call in "also" block in nontrivial context
  • KT-52691 K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImpl with intertwined functional interfaces
  • KT-52822 Fix contract for KtElement.getReference()
  • KT-50223 IndexOutOfBoundsException from ClassicTypeSystemContext$DefaultImpls.getParameter during call resolution
  • KT-51963 Change Maven version to 1.7.255
  • KT-47664 Incorrect type checking in the case of generic types
  • KT-48765 NI: Inferred type does not respect the bound of type variable
  • KT-51243 False positive error "No required context receiver" inside contextual lambda
  • KT-43541 TYPE_MISMATCH for member function which is not occur for top level function during unsafe cast
  • KT-51016 [FIR] False positive OVERLOAD_RESOLUTION_AMBIGUITY between two extensions on different supertypes
  • KT-50155 FIR: support contextual receivers
  • KT-38637 Catch NoSuchFieldException in optimized when expression over enum

Docs & Examples

  • KT-49896 Kotlin/JS: improve -Xir-property-lazy-initialization description due to making it true by default

IDE

  • KTIJ-22286 Kotlin JPS project created via wizard does not contain Kotlin libraries in case of not-released version
  • KTIJ-22065 IDE notification motivating Kotlin users to use EAP
  • KTIJ-22209 Configure Kotlin on 221 idea adds 1.6.10 Kotlin (despite the fact that IDE plugin is 1.7.10)
  • KTIJ-22171 Fix test BuiltInDecompilerConsistencyTest
  • KTIJ-22016 Empty .kt file and build.gradle.kts can trigger an error while searching for a facade light class
  • KT-52571 MPP Tasks on import are not up-to-date after subsequent launches
  • KT-47777 ISE thrown from KtLightClassForFacadeImpl.Companion.createForFacadeNoCache has wrong message.

IDE. FIR

  • KT-52360 FIR IDE: Make the fix of isInheritor method better
  • KT-51786 FIR IDE: IllegalStateException exception in Inspections' infrastructure
  • KT-52331 Analysis API: ArrayIndexOutOfBoundsException exception in Diagnostics' infrastructure

IDE. Code Style, Formatting

  • KTIJ-21346 Incorrect formatting for functions with context receivers and visibility modifiers

IDE. Completion

  • KTIJ-21910 FIR IDE: Fix completion tests started failing after visibility checker refinement

IDE. Decompiler, Indexing, Stubs

  • KTIJ-21243 ContextReceivers: "UpToDateStubIndexMismatch: PSI and index do not match" plugin exception on library with context receivers usage attempt

IDE. Gradle Integration

  • KT-47627 IDE import fails with com.intellij.util.lang.PathClassLoader error for runCommonizer Gradle task on 212, 213 IDEAs
  • KTIJ-21638 MPP: IntelliJ can not resolve MPP references in common-code
  • KT-52216 HMPP / KTOR: False positive "TYPE_MISMATCH" with Throwable descendant

IDE. Inspections and Intentions

  • KTIJ-22540 Invalid "remove unnecessary parentheses" when delegating a functional interface to a SAM in brackets

IDE. J2K

  • KTIJ-21665 J2K generates non compiling code when lifting return and one branch is broken before binary operator

IDE. JS

  • KTIJ-22337 Wizard: Kotlin/Js for browser: cssSupport DSL should be updated

IDE. K2

  • KTIJ-21672 FIR IDE: Method reference on generic class breaks resolve
  • KTIJ-21714 FIR IDE: Inherently imported type from another module is not properly resolved

IDE. Script

  • KT-52525 Update scripts handling in source roots

IDE. Misc

  • KTIJ-21699 Refactoring: move out parts of the plugin useful for both FE10 and K2

JavaScript

New Features

  • KT-39423 KJS: Optionally generate a method to handle optional parameters for function in typescript
  • KT-42282 KJS IR: add an ability to run separate tests

Performance Improvements

  • KT-50270 KJS IR: Unnecessary getter and setter calls when accessing class members

Fixes

  • KT-51133 Kotlin/JS - IR: even simple lambdas generate a lot of useless boilerplate
  • KT-51123 Provide a way to add comments to generated JS
  • KT-48493 KJS / IR: Invalid d.ts for inner classes inside objects
  • KT-52553 KJS / IR: diamond hierarchy with super.toString produces stack overflow in runtime
  • KT-23252 JS: Unit materialization on declaration and assignment
  • KT-51128 Kotlin/JS - IR generate huge count of useless blocks
  • KT-50778 KJS/IR: Inline class has no field when building production distribution
  • KT-50157 KSJ IR: Applying identity equality operator to Chars always returns false
  • KT-38262 Javascript generation (and Typescript) fails on 'then', 'catch' and 'finally' (and others?) claiming they are reserved names
  • KT-51066 KJS / IR: suspend lambda parameter of value class is undefined
  • KT-51102 KJS/IR: Assertion failed at translateCallArguments(jsAstUtils.kt:343)
  • KT-51878 KJS / Legacy: Unit is not materialized in an overridden method, but it should be

Language Design

  • KT-47986 Implicit inferring a type variable into an upper bound in the builder inference context
  • KT-49264 Deprecate infix function calls of functions named "suspend" with dangling function literal
  • KT-25636 Native: Object is frozen by default problem
  • KT-49303 Implement support for basic compile-time evaluation

Libraries

  • KT-52932 Open-ended ranges in the standard library
  • KT-52910 Provide visit extension functions for java.nio.file.Path
  • KT-48232 Multiplatform function for computing cubic root
  • KT-52778 The documentation for the Duration does not indicate any differences from the ISO-8601
  • KT-52618 ThreadLocalRandom is not a good source of randomness on Android before SDK 34, so don't use it for Kotlin Random

Native

  • KT-53346 MPP project with kotlinx-serialization-json:1.4.0-RC is not built

Native. C Export

  • KT-45468 Kotlin/Native: Bitcode verification error when trying to export a cached klib to a static or dynamic library

Native. C and ObjC Import

  • KT-53373 Native: @ExportObjCClass doesn't work with the new memory manager
  • KT-49034 Kotlin/Native: cnames.structs.Foo resolves into wrong declaration
  • KT-26478 Objective-C object's class name is null in ClassCastException's message

Native. ObjC Export

  • KT-51593 Include more information in Objective-C header documentation
  • KT-33117 Improve customizing Info.plist in produced frameworks
  • KT-52681 Native: @end; for Objective-C is generated with an unnecessary semicolon

Native. Platforms

  • KT-52226 Kotlin/Native: Add support for cross-compilation of MIPS targets from macOS and Windows hosts

Native. Runtime

  • KT-52430 KMM 1.6.21 framework built with Xcode13, new MM GC Can't support iOS 9.x
  • KT-53534 Kotlin/Native: -Xruntime-logs=gc=info flag doesn't work with compiler caches in 1.7.20-beta

Native. Runtime. Memory

  • KT-52692 Kotlin/Native: fix tests with aggressive GC
  • KT-52130 Kotlin/Native: use Xallocator for Kotlin objects only
  • KT-51436 Kotlin/Native: optimize mark queue

Reflection

  • KT-51804 An error occurs when callBy a KFunction that contains a value class as an argument, has a default argument set, and has more than 32 arguments.

Tools. CLI

  • KT-52465 CLI: IllegalStateException IrSimpleFunctionPublicSymbolImpl when source root is duplicated
  • KT-52380 Invalid path to compiler plugins should be reported as a compiler error
  • KT-51025 JVM CLI compiler takes class file from classpath instead of input java source file
  • KT-51846 Setting random value to the compiler argument where number is expected should produce an error. "-Xbackend-threads=abcd"

Tools. Compiler Plugins

  • KT-52486 [K2] Looking for function/constructor whose parameters are annotated or meta annotated
  • KT-52872 Mark supportsK2 in ComponentRegistrar.kt as JvmDefault to avoid compatibility problems
  • KT-52804 A function obtained by Fir IrBuiltins has an incorrect package
  • KT-52468 Rename module and jar for lombok compiler plugin

Tools. Gradle

  • KT-53670 Gradle: Cyclic dependency between kotlin-gradle-plugin-idea-1.7.20-Beta and kotlin-gradle-plugin-idea-proto-1.7.20-Beta
  • KT-53615 Gradle: Fix deprecation warnings in CleanableStoreImpl
  • KT-53118 Fully up-to-date builds are slower with Kotlin 1.7.0
  • KT-51923 Improve usability of errors and warnings by being able to click on them
  • KT-53244 Report from gradle about compiler plugins
  • KT-52839 Warn in Gradle log why incremental compilation failed
  • KT-46019 Compatibility with Gradle 7.1 release
  • KT-47047 Migrate Kotlin Gradle Plugin from using Gradle conventions
  • KT-52698 Don't add InspectClassesForMultiModuleIC task when new incremental compilation is enabled
  • KT-52867 Provide simplified JVM toolchain configuration method
  • KT-45747 Add basic JUnit 5 Kotlin Gradle Plugin Android tests setup
  • KT-46034 Shadow Kotlin Gradle plugin dependencies
  • KT-28664 Support ExtensionContainer on kotlin targets and source sets.
  • KT-19472 Useful extensions of Gradle Kotlin DSL provided by Gradle Kotlin plugin
  • KT-34393 Kotlin Gradle DSL: Inconsistent srcDir configuration between Java and Kotlin
  • KT-51629 There isn't enough info about incremental compilation state in logs while running build with --info key

Tools. Gradle. Cocoapods

  • KT-53174 CocoaPods: Synthetic Podfile does not specify platform
  • KT-53127 "MaterialComponents normal armv7" in Cocoapods plugin between Kotlin 1.6.21 and 1.7.0
  • KT-44155 Cocoapods doesn't support pods without module map file inside
  • KT-49032 Cocoapods cinterop: some header files are not found
  • KT-53337 Add warning about future changing default linking type of framework provided via cocoapods plugin

Tools. Gradle. JS

  • KT-52637 KJS / Gradle: Add SCSS webpack config
  • KT-51527 Kotlin/JS: BrowserXRun causes full-screen Webpack error "Compiled with problems: asset size limit/entrypoint size limit" for fresh Kotlin-React project from wizard
  • KT-51532 Kotlin/JS: passing environment variable via Gradle script causes "Execution optimizations have been disabled" warnings
  • KT-52221 Kotlin/JS: failed Node tests are not reported in a standard way

Tools. Gradle. Multiplatform

  • KT-52243 CInteropProcess is not cacheable despite the annotation
  • KT-52741 MPP: klib outputs are not reproducible
  • KT-52208 MPP: Gradle plugin 1.7 doesn't support latest api versions (1.8, 1.9)
  • KT-54071 MPP/AGP compatibility: Bump maxSupportedVersion to 7.3.0

Tools. Gradle. Native

  • KT-52632 Gradle / Native: commonizeNativeDistributionTask can never be up-to-date
  • KT-52328 "ld: framework not found SQLCipher" linkDebugTestIosSimulatorArm64 error

Tools. Incremental Compile

  • KT-53168 Incremental compilation doesn't perform correctly after a few iterations
  • KT-52925 [IR BE] Non incremental build occurs after build failure for compileKotlinJs task
  • KT-52946 CompileKotlinJs task is executed non-incrementally if there were changes made to the dependant module
  • KT-52329 Reduce memory usage of classpath snapshot cache
  • KT-53266 Increment Compilation: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing companion object constant field
  • KT-53231 New IC reports build failures for missing classpath snapshots

Tools. JPS

  • KT-47824 'when expression must be exhaustive' isn't thrown during incremental compilation
  • KT-51873 JPS build is incorrect after gdw build
  • KTIJ-17072 JPS does not rebuild Kotlin usages of declared in Java when enum entry is added
  • KT-51537 Rebuild module on plugin classpaths change

Tools. REPL

  • KT-45065 REPL: Incorrect output for unsigned value
  • KT-53043 Scripting: Changes in REPL protocol: mark end of errors

Tools. Scripts

  • KT-52598 Scripts and REPL snippets are not checked against using 'kotlin' package
  • KT-47187 Kotlin ScriptEngine Failes to Compile a Trivial Statement After Failing to Compile a Broken One
  • KT-47191 [Kotlin Script Engine] Compiling Without Evaluating Leaves Engine in a Bad State

Tools. Kapt

  • KT-52761 Kotlin 1.7.0 breaks kapt processing for protobuf generated java sources

1.7.10

Compiler

  • KT-52702 Invalid locals information when compiling kotlinx.collections.immutable with Kotlin 1.7.0-RC2
  • KT-52892 Disappeared specific builder inference resolution ambiguity errors
  • KT-52782 Appeared receiver type mismatch error due to ProperTypeInferenceConstraintsProcessing compiler feature
  • KT-52718 declaringClass deprecation message mentions the wrong replacement in 1.7

IDE

Fixes

  • KTIJ-19088 KotlinUFunctionCallExpression.resolve() returns null for calls to @JvmSynthetic functions
  • KTIJ-19624 NoDescriptorForDeclarationException on iosTest.kt.vm
  • KTIJ-21515 Load JVM target 1.6 as 1.8 in Maven projects
  • KTIJ-21735 Exception when opening a project
  • KTIJ-17414 UAST: Synthetic enum methods have null return values
  • KTIJ-17444 UAST: Synthetic enum methods are missing nullness annotations
  • KTIJ-19043 UElement#comments is empty for a Kotlin property with a getter
  • KTIJ-10031 IDE fails to suggest a project declaration import if the name clashes with internal declaration with implicit import from stdlib (ex. @Serializable)
  • KTIJ-21151 Exception about wrong read access from "Java overriding methods searcher" with Kotlin overrides
  • KTIJ-20736 NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.idea.roots.KotlinNonJvmOrderEnumerationHandler. Kotlin plugin 1.7 fails to start
  • KTIJ-21063 IDE highlighting: False positive error "Context receivers should be enabled explicitly"
  • KTIJ-20810 NoClassDefFoundError: org/jetbrains/kotlin/idea/util/SafeAnalyzeKt errors in 1.7.0-master-212 kotlin plugin on project open
  • KTIJ-17869 KotlinUFunctionCallExpression.resolve() returns null for instantiations of local classes with default constructors
  • KTIJ-21061 UObjectLiteralExpression.getExpressionType() returns the base class type for Kotlin object literals instead of the anonymous class type
  • KTIJ-20200 UAST: @Deprecated(level=HIDDEN) constructors are not returning UMethod.isConstructor=true

IDE. Code Style, Formatting

  • KTIJ-20554 Introduce some code style for definitely non-null types

IDE. Completion

  • KTIJ-14740 Multiplatform declaration actualised in an intermediate source set is shown twice in a completion popup called in the source set

IDE. Debugger

  • KTIJ-20815 MPP Debugger: Evaluation of expect function for the project with intermediate source set may fail with java.lang.NoSuchMethodError

IDE. Decompiler, Indexing, Stubs

  • KTIJ-21472 "java.lang.IllegalStateException: Could not read file" exception on indexing invalid class file
  • KTIJ-20802 Definitely Not-Null types: "UpToDateStubIndexMismatch: PSI and index do not match" plugin error when trying to use library function with T&Any

IDE. FIR

  • KTIJ-20971 FIR IDE: "Parameter Info" shows parameters of uncallable methods
  • KTIJ-21021 FIR IDE: Completion of extension function does not work on nullable receiver
  • KTIJ-21343 FIR IDE: Navigation from explicit invoke call does not work
  • KTIJ-21013 FIR IDE: Inconsistent smartcasts highlighting
  • KTIJ-21374 FIR IDE: Incorrect highlighting for operators
  • KTIJ-20443 FIR IDE: Work in Dumb mode
  • KTIJ-20852 FIR IDE: Exception when checking isInheritor on two classes in different modules
  • KTIJ-20637 FIR IDE: Strange exception while commenting-uncommenting FirReferenceResolveHelper.kt

IDE. Gradle Integration

  • KTIJ-21807 Gradle to IDEA import: language and API version settings are not imported for Native facet
  • KTIJ-21692 Kotlin Import Test maintenance: 1.7.0-Beta
  • KTIJ-20567 Kotlin/JS: Gradle import into IDEA creates no proper sub-modules, source sets, facets

IDE. Hints. Inlay

  • KTIJ-20552 Support definitely non-null types in inlay hints

IDE. Inspections and Intentions

New Features

  • KTIJ-18979 Quickfix for INTEGER_OPERATOR_RESOLVE_WILL_CHANGE to add explicit conversion call
  • KTIJ-19950 Provide quickfixes for INVALID_IF_AS_EXPRESSION_WARNING and NO_ELSE_IN_WHEN_WARNING
  • KTIJ-19866 Create quick-fix for effective visibility error on private-in-file interface exposing private class
  • KTIJ-19939 Provide quickfix for deprecated confusing expressions in when branches

Fixes

  • KTIJ-20705 Register quickfix for NO_CONSTRUCTOR_WARNING diagnostic
  • KTIJ-21226 "Remove else branch" quick fix is not suggested
  • KTIJ-20981 Definitely non-null types: quick-fixes suggested incorrectly for LV=1.6 when Xenhance-type-parameter-types-to-def-not-null flag is set
  • KTIJ-20953 Add quickfix for OVERRIDE_DEPRECATION warning to 1.7 - 1.9 migration
  • KTIJ-20734 Replace with [@JvmInline] value quick fix should be appliable on a whole project
  • KTIJ-21420 Add 'else' branch quick fix suggestion is displayed twice in case 'if' isn't completed
  • KTIJ-21192 "Make protected" intention is redundant for interface properties
  • KTIJ-18120 "Make public" intention does not add explicit "public" modifier when using ExplicitApi Strict mode
  • KTIJ-20493 "Create expect" quick fix doesn't warn about platform-specific annotations

IDE. Misc

IDE. Native

  • KTIJ-21602 With Native Debugging Support plugin Gradle run configurations can't be executed from IDEA: LLDB_NATVIS_RENDERERS_ENABLED

IDE. Wizards

  • KTIJ-20919 Update ktor-html-builder dependency in kotlin wizards
  • KTIJ-20962 Wizard: Invalid Ktor imports

Tools. Gradle

  • KT-52777 'org.jetbrains.kotlinx:atomicfu:1.7.0' Gradle 7.0+ plugin variant was published with missing classes

Tools. Gradle. JS

  • KT-52856 Kotlin/JS: Upgrade NPM dependencies

Tools. Gradle. Multiplatform

  • KT-52955 SourceSetMetadataStorageForIde: Broken 'cleanupStaleEntries' with enabled configuration caching or isolated ClassLoaders
  • KT-52694 Kotlin 1.7.0 breaks Configuration Caching in Android projects

Tools. Incremental Compile

  • KT-52669 Full rebuild in IC exception recovery leaves corrupt IC data

Tools. JPS

  • KTIJ-17280 JPS: don't use java.io.File.createTempFile as it is not working sometimes
  • KTIJ-20954 NPE at at org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil.readNameResolver on compiling by JPS with LV > 1.7

1.7.0

Analysis API. FIR

  • KT-50864 Analysis API: ISE: "KtCallElement should always resolve to a KtCallInfo" is thrown on call resolution inside plusAssign target
  • KT-50252 Analysis API: Implement FirModuleResolveStates for libraries
  • KT-50862 Analsysis API: do not create use site subsitution override symbols

Analysis API. FIR Low Level API

  • KT-50729 Type bound is not fully resolved
  • KT-50728 Lazy resolve of extension function from 'kotlin' package breaks over unresolved type
  • KT-50271 Analysis API: get rid of using FirRefWithValidityCheck

Backend. Native. Debug

  • KT-50558 K/N Debugger. Error is not displayed in variables view for catch block

Compiler

New Features

  • KT-26245 Add ability to specify generic type parameters as not-null
  • KT-45165 Remove JVM target version 1.6
  • KT-27435 Allow implementation by delegation to inlined value of inline class
  • KT-47939 Support method references to functional interface constructors
  • KT-50775 Support IR partial linkage in Kotlin/Native (disabled by default)
  • KT-51737 Kotlin/Native: Remove unnecessary safepoints on watchosArm32 and iosArm32 targets
  • KT-44249 NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER with type usage in higher order function

Performance Improvements

  • KT-48233 Switching to JVM IR backend increases compilation time by more than 15%
  • KT-51699 Kotlin/Native: runtime has no LTO in debug binaries
  • KT-34466 Use optimized switch over enum only when all entries are constant enum entry expressions
  • KT-50861 FIR: Combination of array set convention and plusAssign works exponentially
  • KT-47171 For loop doesn't avoid boxing with value class iterators (JVM)
  • KT-29199 'next' calls for iterators of merged primitive progressive values are not specialized
  • KT-50585 JVM IR: Array constructor loop should use IINC
  • KT-22429 Optimize 'for' loop code generation for reversed arrays
  • KT-50074 Performance regression in String-based 'when' with single equality clause
  • KT-22334 Compiler backend could generate smaller code for loops using range such as integer..array.size -1
  • KT-35272 Unnecessary null check on unsafe cast after not-null assertion operator
  • KT-27427 Optimize nullable check introduced with 'as' cast

Fixes

  • KT-46762 Finalize support for jspecify
  • KT-51499 @file:OptIn doesn't cover override methods
  • KT-52037 FIR: add error in 1.7.0 branch if run with non-compatible plugins
  • KT-46756 Release the K2/JVM compiler in Alpha
  • KT-49715 IR: "IllegalStateException: Function has no body: FUN name:toString" during IR lowering with shadowed extension inside interface
  • KT-45508 False negative ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED on a fake override with an abstract super class member
  • KT-28078 Report error "Public property exposes its private type" for primary constructor properties instead of warning
  • KT-49017 Forbid usages of super or super if in fact it accesses an abstract member
  • KT-38078 Prohibit calling methods from Any with "super" qualifier once they are overridden as abstract in superclass
  • KT-52363 Evaluate impact of qualified this behavior change warnings
  • KT-52561 JVM: Coroutine state machine loses value after a check-induced smart cast
  • KT-52311 java.lang.VerifyError: Bad type on operand stack
  • KT-41124 Inconsistency of exceptions at init block for an enum entry with and without a qualifier name
  • KT-46860 Make safe calls always nullable
  • KT-52503 New green code appeared at the callable reference resolution
  • KT-51925 Native: "IllegalStateException: Symbol for kotlinx.cinterop/CStructVar|null[0] is unbound" caused by inline function
  • KT-49317 "IllegalStateException: Parent of this declaration is not a class: FUN LOCAL_FUNCTION_FOR_LAMBDA" with parameter of suspend type with the default parameter
  • KT-51844 New errors in overload resolution involving vararg extension methods
  • KT-52006 "java.lang.Throwable: Unbalanced tree Exception" on indexing kotlin project
  • KT-51223 Report warning about conflicting inherited members from deserialized dependencies
  • KT-51439 FE 1.0: implement type variance conflict deprecation on qualifier type arguments
  • KT-51433 FE 1.0: implement warnings about label resolve changes
  • KT-51317 Regression in resolution of lambdas where expected type has an extension receiver parameter
  • KT-45935 JVM IR: Add not-null assertion for explicit definitely not-null parameters
  • KT-51818 "ClassCastException: class CoroutineSingletons cannot be cast to class" with suspendCoroutineUninterceptedOrReturn and coroutines
  • KT-51718 JVM / IR: "VerifyError: Bad type on operand stack" caused by nullable variable inside suspend function
  • KT-51927 Native: The symbol of unexpected type encountered during IR deserialization error when multiple libraries have non-conflicting declarations with the same name
  • KT-52394 JVM: Missing annotation on method with value class return type when a subclass is present in the same file in Kotlin 1.7.0-Beta
  • KT-51640 FIR: remove warning about "far from being production ready"
  • KT-45553 FIR: support hiding declaration from star import by as import
  • KT-52404 Prolong deprecation cycle for errors at contravariant usages of star projected argument from Java
  • KT-50734 TYPE_MISMATCH: NonNull parameter with a type of Nullable type argument causes compiler warning
  • KT-51235 JVM / IR: "AbstractMethodError: Receiver class does not define or inherit an implementation of the resolved method" when property with inline class type is overridden to return Nothing?
  • KT-48935 NI: Multiple generic parameter type constraints are not applied as expected when the parameter is of function type
  • KT-49661 NI: No TYPE_INFERENCE_UPPER_BOUND_VIOLATED when argument is inferred by return type
  • KT-50877 Inconsistent flexible type
  • KT-51988 "NPE: getContainingDeclaration…lDeclarationType.REGULAR) must not be null" when using @BuilderInference with multiple type arguments
  • KT-48890 Revert Opt-In restriction "Overriding methods can only have opt-in annotations that are present on their basic declarations."
  • KT-52035 FIR: add error in 1.7.0 branch if run on JS / Native configuration
  • KT-45461 NI: False negative TYPE_INFERENCE_UPPER_BOUND_VIOLATED when passing an argument to a function with generic constraints
  • KT-52146 JVM IR: "AssertionError: Primitive array expected" on vararg of SAM types with self-type and star projection
  • KT-50730 Implement error for a super class constructor call on a function interface in supertypes list
  • KT-52040 JVM: ClassFormatError Illegal method name "expectFailure$__proxy-0"
  • KT-50845 Postpone rxjava errors reporting in the strict mode till 1.8 due to found broken cases
  • KT-51979 "AssertionError: No modifier list, but modifier has been found by the analyzer" exception on incorrect Java interface override
  • KT-51759 FIR DFA: false positive "Variable must be initialized"
  • KT-50378 Unresolved reference for method in Jsoup library in a kts script file
  • KT-34919 "Visibility is unknown yet" when named parameter in a function type used in a typealias implemented by an abstract class
  • KT-51893 Duplicated [OVERRIDE_DEPRECATION] on overridden properties
  • KT-41034 K2: Change evaluation semantics for combination of safe calls and convention operators
  • KT-51843 Functional interface constructor references are incorrectly allowed in 1.6.20 without any compiler flags
  • KT-51914 False positive RETURN_TYPE_MISMATCH in intellij ultimate
  • KT-51711 Compiler warning is displayed in case there is 'if' else branch used with elvis
  • KT-33517 Kotlin ScriptEngine does not respect async code when using bindings
  • KT-51850 FIR cannot resolve ambiguity with different SinceKotlin/DeprecatedSinceKotlin
  • KT-44705 Deprecate using non-exhaustive if's and when's in rhs of elvis
  • KT-44510 FIR DFA: smartcast after elvis with escaping lambda
  • KT-44879 FIR DFA: Track inc and dec operator calls in preliminary loop visitor
  • KT-51758 FIR: explicit API mode errors should not be reported for effectively internal / private entities
  • KT-51203 FIR: Inconsistent RETURN_TYPE_MISMATCH and TYPE_MISMATCH reporting on functions and properties
  • KT-51624 FIR: false-positive INAPPLICABLE_LATEINIT_MODIFIER for lateinit properties with unresolved types
  • KT-51204 FIR IC: Incremental compilation fails on nested crossinline
  • KT-51798 Fix ISE from IR backend when data class inherits equals/hashCode/toString with incompatible signature
  • KT-46187 FIR: OVERLOAD_RESOLUTION_AMBIGUITY on SAM-converted callable reference to List::plus
  • KT-51761 Incorrect NONE_APPLICABLE in expect class
  • KT-51756 FIR: false positive NO_VALUE_FOR_PARAMETER in expect class delegated constructor call
  • KT-49778 Support cast to DefinitelyNotNull type in Native
  • KT-51441 -Xpartial-linkage option specified in Gradle build script is not passed to Native linker
  • KT-34515 NI: "AssertionError: Base expression was not processed: POSTFIX_EXPRESSION" with double not-null assertion to brackets
  • KT-48546 PSI2IR: "org.jetbrains.kotlin.psi2ir.generators.ErrorExpressionException: null: KtCallExpression" with recursive property access in lazy block
  • KT-28109 "AssertionError: No setter call" for incrementing parenthesized result of indexed access convention operator
  • KT-46136 Unsubstituted return type inferred for a function returning anonymous object upcast to supertype
  • KT-51364 FIR: ambiguity due to String constructors clash
  • KT-51621 FIR: visible VS invisible qualifier conflict
  • KT-50468 FIR compilers fails with CCE when meets top-level destruction
  • KT-51557 Inline stack frame is not shown for default inline lambda
  • KT-51358 OptIn: show default warning/error message in case of empty message argument
  • KT-44152 FIR2IR fails on declarations from java stdlib if java classes are loaded from PSI instead of binaries
  • KT-50949 PSI2IR: NSEE from ArgumentsGenerationUtilsKt.createFunctionForSuspendConversion with providing lambda as argument with suspend type
  • KT-39256 ArrayStoreException with list of anonymous objects with inferred types created in reified extension function
  • KT-39883 Deprecate computing constant values of complex boolean expressions in when condition branches and conditions of loops
  • KT-36952 Exception during codegen: cannot pop operand off an empty stack (reference equality, implicit boxing, type check)
  • KT-51233 AssertionError in JavaLikeCounterLoopBuilder with Compose
  • KT-51254 Verify Error on passing null to type parameter extending inline class
  • KT-50996 [FIR] Support Int -> Long conversion for property initializers
  • KT-51000 [FIR] Support Int -> Long? conversion
  • KT-51003 [FIR] Consider Int -> Long conversion if expected type is type variable
  • KT-51018 [FIR] Wrong type inference if one of constraints is integer literal
  • KT-51446 Metadata serialization crashes with IOOBE when deserializing underlying inline class value with type table enabled
  • KT-50973 Redundant line number mapping for finally block with JVM IR
  • KT-51272 Incompatible types: KClass and callable reference Collection::class
  • KT-51274 "Expected some types" exception on when branch for when expression of erroneous type
  • KT-51229 FIR: private constructor of internal data class treated as internal and not private
  • KT-50750 [FIR] Report UNSUPPORTED on array literals not from annotation classes
  • KT-51200 False EXPOSED_PARAMETER_TYPE for internal type parameter of internal type
  • KT-49804 False positive of UPPER_BOUND_VIOLATED and RETURN_TYPE_MISMATCH
  • KT-51121 Inconsistent SAM behavior in multiple cases causing AbstractMethodError (Kotlin 1.6.10)
  • KT-50136 FIR: syntax error on (T & Any)
  • KT-49465 FIR2IR: support definitely not-null types
  • KT-51357 FIR: error in inference while using integer literal in expected Long position
  • KT-49925 [FIR] Incorrect builder inference (different cases)
  • KT-50542 "IllegalStateException: Type parameter descriptor is not initialized: T declared in sort" with definitely non-null type Any & T in generic constraint
  • KT-51171 FIR: class Error resolution problem
  • KT-51156 Multiplatform linkDebugFramework task throws NoSuchElementException when expect class constructors utilize nested enum constant
  • KT-51017 [FIR] Ambiguity on callable reference between two functions on generic receiver with different bounds
  • KT-51007 [FIR] False positive ILLEGAL_SUSPEND_FUNCTION_CALL if fun interface with suspend function declared in another module
  • KT-50998 [FIR] Int.inv() cal does not considered as compile time call
  • KT-51009 [FIR] Incorrect inference of lambda in position of return
  • KT-50997 [FIR] Incorrect type of typealias for suspend functional type
  • KT-49714 Compiler reports "'operator modifier is inapplicable" if expect class with increment operator is provided via type alias
  • KT-48623 Type nullability enhancement improvements
  • KT-44623 "IllegalStateException: IdSignature is allowed only for PublicApi symbols" when suspending receiver is annotated with something
  • KT-46000 JVM / IR: AssertionError on isSubtypeOfClass check in copyValueParametersToStatic with Compose
  • KT-50211 Annotation Instantiation with default arguments in Native
  • KT-49412 Controversial "type argument is not within its bounds" reported by FIR
  • KT-48044 [FIR] Investigate behavior of UPPER_BOUND_VIOLATED on complex cases
  • KT-37975 Don't show deprecation of enum class itself for its own member
  • KT-50737 Inheritance from SuspendFunction leads to compiler crash
  • KT-50723 Implement a fix of reporting of uninitialized parameter in default values of parameters
  • KT-50749 Implement UNSUPPORTED reporting on array literals inside objects in annotation classes
  • KT-50753 Implement reporting errors on cycles in annotation parameter types
  • KT-50758 Fix inconsistency of exceptions at init block for an enum entry with and without a qualifier name
  • KT-50182 CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT: clarify error message for const in object expression
  • KT-50183 Fix missing apostrophe escapes in compiler error messages
  • KT-50788 FIR: false unsafe call on not-null generic
  • KT-50785 FIR: inconsistent smart cast after comparison with true
  • KT-50858 [FIR LL] FIR in low level mode creates multiple symbols for same declaration
  • KT-50822 Analysis API: make declaration transformers machinery to be a thread safe
  • KT-50972 FIR doesn't report VAL_REASSIGNMENT on synthetic properties
  • KT-50969 FIR: diamond inheritance with different parameter types depends on a supertype order
  • KT-50875 FIR: no smart cast after reassignment with elvis
  • KT-50835 Inline functions with suspend lambdas break the tail-call optimization
  • KT-49485 JVM / IR: StackOverflowError with long when-expression conditions
  • KT-35684 NI: "IllegalStateException: Expected some types" from builder-inference about intersecting empty types on trivial code
  • KT-50776 FIR: ambiguity between Sequence.forEach and Iterable.forEach
  • KT-48908 Error for annotation on parameter type could have distinct ID and message referring 1.6
  • KT-48907 SUPERTYPE_IS_SUSPEND_FUNCTION_TYPE error could have message referring version 1.6
  • KT-50774 FIR2IR: NSEE in case of lambda in enum entry constructor call
  • KT-49016 Drop QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE diagnostic
  • KT-34338 Parameterless main causes duplicate JVM signature error
  • KT-50577 JVM_IR: No NPE when casting uninitialized value of non-null type to non-null type
  • KT-50476 JVM_IR: NSME when calling 'super.removeAt(Int)' implemented in Java interface as a default method
  • KT-50257 JVM_IR: Incorrect bridge delegate signature for renamed remove(I) causes SOE with Kotlin class inherited from fastutils IntArrayList
  • KT-50470 FIR: inapplicable candidate in delegate inference due to nullability
  • KT-32744 Inefficient compilation of null-safe call (extra null checks, unreachable code)

Docs & Examples

  • KT-52032 Document performance optimizations of the Kotlin/JVM compiler in 1.7.0
  • KT-49424 Update KEEP for OptIn

IDE

Fixes

  • KTIJ-21735 Exception when opening a project
  • KTIJ-17414 UAST: Synthetic enum methods have null return values
  • KTIJ-17444 UAST: Synthetic enum methods are missing nullness annotations
  • KTIJ-19043 UElement#comments is empty for a Kotlin property with a getter
  • KTIJ-10031 IDE fails to suggest a project declaration import if the name clashes with internal declaration with implicit import from stdlib (ex. @Serializable)
  • KTIJ-21515 Load JVM target 1.6 as 1.8 in Maven projects
  • KTIJ-21151 Exception about wrong read access from "Java overriding methods searcher" with Kotlin overrides
  • KTIJ-20736 NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.idea.roots.KotlinNonJvmOrderEnumerationHandler. Kotlin plugin 1.7 fails to start
  • KT-50111 Resolving into KtUltraLightMethod
  • KTIJ-21063 IDE highlighting: False positive error "Context receivers should be enabled explicitly"
  • KTIJ-20810 NoClassDefFoundError: org/jetbrains/kotlin/idea/util/SafeAnalyzeKt errors in 1.7.0-master-212 kotlin plugin on project open
  • KTIJ-19088 KotlinUFunctionCallExpression.resolve() returns null for calls to @JvmSynthetic functions
  • KTIJ-17869 KotlinUFunctionCallExpression.resolve() returns null for instantiations of local classes with default constructors
  • KTIJ-21061 UObjectLiteralExpression.getExpressionType() returns the base class type for Kotlin object literals instead of the anonymous class type
  • KTIJ-20200 UAST: @Deprecated(level=HIDDEN) constructors are not returning UMethod.isConstructor=true
  • KTIJ-19624 NoDescriptorForDeclarationException on iosTest.kt.vm

IDE. Code Style, Formatting

  • KTIJ-20554 Introduce some code style for definitely non-null types

IDE. Completion

  • KTIJ-14740 Multiplatform declaration actualised in an intermediate source set is shown twice in a completion popup called in the source set

IDE. Debugger

  • KTIJ-20815 MPP Debugger: Evaluation of expect function for the project with intermediate source set may fail with java.lang.NoSuchMethodError

IDE. Decompiler, Indexing, Stubs

  • KTIJ-21472 "java.lang.IllegalStateException: Could not read file" exception on indexing invalid class file
  • KTIJ-20802 Definitely Not-Null types: "UpToDateStubIndexMismatch: PSI and index do not match" plugin error when trying to use library function with T&Any
  • KT-51248 Function and parameter names with special symbols have to backticked

IDE. FIR

  • KTIJ-20443 FIR IDE: Work in Dumb mode
  • KTIJ-21374 FIR IDE: Incorrect highlighting for operators
  • KTIJ-21013 FIR IDE: Inconsistent smartcasts highlighting
  • KTIJ-21343 FIR IDE: Navigation from explicit invoke call does not work
  • KTIJ-20852 FIR IDE: Exception when checking isInheritor on two classes in different modules
  • KTIJ-21021 FIR IDE: Completion of extension function does not work on nullable receiver
  • KTIJ-20637 FIR IDE: Strange exception while commenting-uncommenting FirReferenceResolveHelper.kt
  • KTIJ-20971 FIR IDE: "Parameter Info" shows parameters of uncallable methods

IDE. Gradle Integration

  • KTIJ-21807 Gradle to IDEA import: language and API version settings are not imported for Native facet
  • KTIJ-21692 Kotlin Import Test maintenance: 1.7.0-Beta
  • KTIJ-20567 Kotlin/JS: Gradle import into IDEA creates no proper sub-modules, source sets, facets

IDE. Hints. Inlay

  • KTIJ-20552 Support definitely non-null types in inlay hints

IDE. Inspections and Intentions

New Features

  • KTIJ-18979 Quickfix for INTEGER_OPERATOR_RESOLVE_WILL_CHANGE to add explicit conversion call
  • KTIJ-19950 Provide quickfixes for INVALID_IF_AS_EXPRESSION_WARNING and NO_ELSE_IN_WHEN_WARNING
  • KTIJ-19866 Create quick-fix for effective visibility error on private-in-file interface exposing private class
  • KTIJ-19939 Provide quickfix for deprecated confusing expressions in when branches

Fixes

  • KTIJ-20705 Register quickfix for NO_CONSTRUCTOR_WARNING diagnostic
  • KTIJ-21226 "Remove else branch" quick fix is not suggested
  • KTIJ-20981 Definitely non-null types: quick-fixes suggested incorrectly for LV=1.6 when Xenhance-type-parameter-types-to-def-not-null flag is set
  • KTIJ-20953 Add quickfix for OVERRIDE_DEPRECATION warning to 1.7 - 1.9 migration
  • KTIJ-20734 Replace with [@JvmInline] value quick fix should be appliable on a whole project
  • KTIJ-21420 Add 'else' branch quick fix suggestion is displayed twice in case 'if' isn't completed
  • KTIJ-21192 "Make protected" intention is redundant for interface properties
  • KTIJ-18120 "Make public" intention does not add explicit "public" modifier when using ExplicitApi Strict mode
  • KTIJ-20493 "Create expect" quick fix doesn't warn about platform-specific annotations

IDE. Misc

IDE. Multiplatform

  • KT-49523 Improve environment setup experience for KMM projects
  • KT-50952 MPP: Commonized cinterops doesn't attach/detach to source set on configuration changes

IDE. Native

  • KT-44329 Improve UX of using Native libraries in Kotlin
  • KTIJ-21602 With Native Debugging Support plugin Gradle run configurations can't be executed from IDEA: LLDB_NATVIS_RENDERERS_ENABLED

IDE. Wizards

  • KTIJ-20919 Update ktor-html-builder dependency in kotlin wizards
  • KTIJ-20962 Wizard: Invalid Ktor imports

JavaScript

New Features

  • KT-51735 KJS / IR: Minimize member names in production mode

Performance Improvements

  • KT-51127 Kotlin/JS - IR generates plenty of useless Unit_getInstance()
  • KT-50212 KJS IR: Upcast should be a no-op
  • KT-16974 JS: Kotlin.charArrayOf is suboptimal due to Rhino bugs

Fixes

  • KT-44319 JS IR BE: Add an ability to generate separate JS files for each module
  • KT-52518 Kotlin/JS IR: project with 1.6.21 fails to consume library built with 1.7.0-RC: ISE "Unexpected IrType kind: KIND_NOT_SET" at IrDeclarationDeserializer.deserializeIrTypeData()
  • KT-52010 K/JS IR: both flows execute when using elvis operator
  • KT-41096 KJS IR: @JsExport should use original js name for external declarations
  • KT-52144 KJS / IR: Missing property definitions for interfaced defined properties
  • KT-52252 KJS / IR: overridden properties are undefined/null
  • KT-51973 KJS / IR overridden properties of inherited interface missing
  • KT-51125 Provide a way to use import keyword in js expressions
  • KT-40888 KJS / IR: Missing methods are no longer generated (polyfills)
  • KT-50504 KJS / IR: Transpiled JS incorrectly uses the unscrambled names of internal fields
  • KT-51853 JS compilation fails with "Uninitialized fast cache info" error
  • KT-51205 K/JS IR: external class is mapped to any
  • KT-50806 Typescript definitions contain invalid nested block comments with generic parent and type argument without @JsExport
  • KT-51841 KJS / IR: No flat hash for FUN FAKE_OVERRIDE with kotlin.incremental.js.ir=true
  • KT-51081 KJS / IR + IC: Passing an inline function with default params as a param to a higher-order function crashes the compiler
  • KT-51084 KJS / IR + IC: Cache invalidation doesn't check generic inline functions reified qualifier
  • KT-51211 K/JS IR: JsExport: Can't export nested enum
  • KT-51438 KJS / IR: Duplicated import names for the same external names
  • KT-51238 Kotlin/JS: IR + IC: build fails after clean on compileTestDevelopmentExecutableKotlinJs task: "Failed to create MD5 hash for file '.../build/classes/kotlin/main' as it does not exist"
  • KT-50674 KJS / IR: JS code cannot modify local variable
  • KT-50953 KJS IR: Incorrect nested commenting in d.ts
  • KT-15223 JS: function that overrides external function with vararg parameter is translated incorrectly
  • KT-50657 KJS / IR 1.6.20-M1-39 - Date in Kotlin JS cannot be created from long.

Language Design

New Features

  • KT-45618 Stabilize builder inference
  • KT-30485 Underscore operator for type arguments
  • KT-49006 Support at least three previous versions of language/API
  • KT-16768 Context-sensitive resolution prototype (Resolve unqualified enum constants based on expected type)
  • KT-14663 Support having a "public" and a "private" type for the same property
  • KT-50477 Functional conversion does not work on suspending functions
  • KT-32162 Allow generics for inline classes

Fixes

  • KT-12380 Support sealed (exhaustive) whens
  • KT-27750 Reverse reservation of 'yield' as keyword
  • KT-22956 Release OptIn annotations
  • KT-44866 Change behavior of private constructors of sealed classes
  • KT-49110 Prohibit access to members of companion of enum class from initializers of entries of this enum
  • KT-29405 Switch default JVM target version to 1.8

Libraries

New Features

  • KT-50484 Extensions for java.util.Optional in stdlib
  • KT-50146 Reintroduce min/max(By/With) operations on collections with non-nullable return type
  • KT-46132 Specialized default time source with non-allocating time marks
  • KT-41890 Support named capture groups in Regex on Native
  • KT-48179 Introduce API to retrieve the number of CPUs the runtime has

Performance Improvements

  • KT-42178 Range and Progression should override last()

Fixes

  • KT-42436 Support java.nio.Path extension in the standard library
  • KT-51470 Stabilize experimental API for 1.7
  • KT-51775 JS: Support named capture groups in Regex
  • KT-51776 Native: Support back references to groups with multi-digit index
  • KT-51082 Introduce Enum.declaringJavaClass property
  • KT-51848 Promote deepRecursiveFunction to stable API
  • KT-48924 KJS: toString in base 36 produces different results in JS compare to JVM
  • KT-50742 Regular expression is fine on jvm but throws PatternSyntaxException for native macosX64 target
  • KT-50059 Stop publishing kotlin-stdlib and kotlin-test artifacts under modular classifier
  • KT-26678 Rename buildSequence/buildIterator to sequence/iterator

Native

  • KT-49406 Kotlin/Native: generate standalone executable for androidNative targets by default
  • KT-48595 Enable Native embeddable compiler jar in Gradle plugin by default
  • KT-51377 Native: synthetic forward declarations are preferred over commonized definitions
  • KT-49145 Kotlin/Native static library compilation fails for androidNative*
  • KT-49496 Gradle (or the KMM plugin) is caching the Xcode Command Line Tools location
  • KT-49247 gradle --offline should translate into airplaneMode for kotin-native compiler

Native. Build Infrastructure

  • KT-52259 kotlin-native releases from GitHub don't contain platform libs

Native. C and ObjC Import

  • KT-49455 Methods from Swift extensions are not resolved in Kotlin shared module
  • KT-50648 Incorrect KMM cinterop conversion

Native. ObjC Export

  • KT-50982 RuntimeAssertFailedPanic in iOS when Kotlin framework is initialized before loading
  • KT-49937 Kotlin/Native 1.5.31: 'runtime assert: Unexpected selector clash' when 'override fun toString(): String' is used

Native. Platforms

  • KT-52232 Kotlin/Native: simplify toolchain dependency override for MinGW

Native. Runtime

  • KT-52365 Kotlin/Native fails to compile projects for 32-bit targets when new memory manager is enabled

Native. Runtime. Memory

  • KT-48537 Kotlin/Native: improve GC triggers in the new MM.
  • KT-50713 Kotlin/Native: Enable Concurrent Sweep GC by default

Native. Stdlib

  • KT-50312 enhancement: kotlin native -- add alloc<TVarOf>(T)

Native. Testing

  • KT-50316 Kotlin/Native: Produce a list of available tests alongside the final artifact
  • KT-50139 Create tests for Enter/Leave frame optimization

Reflection

  • KT-27598 "KotlinReflectionInternalError" when using callBy on constructor that has inline class parameters
  • KT-31141 IllegalArgumentException when reflectively accessing nullable property of inline class type

Tools. CLI

  • KT-52409 Report error when use-k2 with Multiplatform
  • KT-51717 IllegalArgumentException: Unexpected versionNeededToExtract (0) in 1.6.20-RC2 with useFir enabled
  • KT-52217 Rename 'useFir' to 'useK2'
  • KT-29974 Add a compiler option '-Xjdk-release' similar to javac's '--release' to control the target JDK version
  • KT-51673 Make language version description not in capital letters
  • KT-48833 -Xsuppress-version-warnings allows to suppress errors about unsupported versions
  • KT-51627 kotlinc fails with java.lang.RuntimeException if /tmp/build.txt file exists on the disk
  • KT-51306 Support reading language settings from an environment variable and overriding the current settings by them
  • KT-51093 "-Xopt-in=..." command line argument no longer works

Tools. Commonizer

  • KT-43309 Overwrite return type and parameter types of callable member to succeed commonization
  • KT-52050 [Commonizer] 'platform.posix.DIR' not implementing 'CPointed' when commonized for 'nativeMain' on linux or windows hosts
  • KT-51224 MPP: For optimistically commonized numbers missed kotlinx.cinterop.UnsafeNumber
  • KT-51215 MPP: Update Kdoc description for kotlinx.cinterop.UnsafeNumber
  • KT-51686 Cinterop: Overload resolution ambiguity in 1.6.20-RC2
  • KT-46636 HMPP: missed classes from platform.posix.*
  • KT-51332 Optimistic number commonization is disabled by default in KGP with enabled HMPP

Tools. Compiler Plugins

  • KT-50992 jvm-abi-gen breaks inline functions in inline classes with private constructors in Kotlin 1.6.20

Tools. Daemon

  • KT-32885 KT. Kotlin daemon compilation process is broken: java.lang.IllegalStateException Service is dying at entities generation by Kotlin.kts script

Tools. Gradle

New Features

  • KT-49227 Support Gradle plugins variants
  • KT-50869 Provide API that allow AGP to set up Kotlin compilation
  • KT-48008 Consider offering a KotlinBasePlugin
  • KT-52030 Provide experimental possibility to view internal information about Kotlin Compiler performance

Performance Improvements

  • KT-52141 Optimize Java class snapshotting for the kotlin.incremental.useClasspathSnapshot feature
  • KT-51978 Optimize classpath snapshot cache for the kotlin.incremental.useClasspathSnapshot feature
  • KT-51326 Kotlin-gradle-plugin performance issue with mass java SourceRoots

Fixes

  • KT-52448 Compilation tasks are missing input/output/internal annotations on includes/excludes properties
  • KT-52239 Type based task configuration-blocks for JVM stopped working in Gradle
  • KT-52313 No recompilation in Gradle after adding or removing function parameters, removing functions (and maybe more) in dependent modules
  • KT-51854 Add Ktor to gradle performance benchmark
  • KT-52086 Rename flag 'use-fir' to 'use-k2'
  • KT-52509 Main variant published to Gradle plugin portal uses unshadowed artifact
  • KT-52392 Gradle: 1.7.0 does not support custom gradle build configuration on Windows OS
  • KT-32805 KotlinCompile inherits properties sourceCompatibility and targetCompatibility which breaks Gradle's incremental compilation
  • KT-52189 Provide Gradle Kotlin/DSL friendly deprecated classpath property in KotlinCompiler task
  • KT-51415 Confusing build failure reason is displayed in case kapt is used and different JDKs are used for compileKotlin and compileJava tasks
  • KT-52187 New IC can not be enabled in an Android project using kapt
  • KT-51898 Upgrading Kotlin/Kotlin Gradle plugin to 1.5.3 and above breaks 'com.android.asset-pack' plugin
  • KT-51913 Gradle plugin should not add attributes to the legacy configurations
  • KT-34862 Restoring from build cache breaks Kotlin incremental compilation
  • KT-45777 New IC in Gradle
  • KT-51360 Show performance difference in percent between releases
  • KT-51380 Add open-source project using Kotlin/JS plugin to build regression benchmarks
  • KT-51937 Toolchain usage with configuration cache prevents KotlinCompile task to be UP-TO-DATE
  • KT-48276 Remove kotlin2js and kotlin-dce-plugin
  • KT-52138 KSP could not access internal methods/properties in Kotlin Gradle Plugin
  • KT-51342 Set minimal supported Android Gradle plugin version to 3.6.4
  • KT-50494 Remove kotlin.experimental.coroutines Gradle DSL option
  • KT-49733 Bump minimal supported Gradle version to 6.7.1
  • KT-48831 Remove 'KotlinGradleSubplugin'
  • KT-47924 Remove annoying cast in toolchain extension method for Kotlin DSL
  • KT-46541 Fail Gradle builds when deprecated kotlinOptions.jdkHome is set
  • KT-51830 Gradle: deprecate kotlin.compiler.execution.strategy system property
  • KT-47763 Gradle DSL: Remove deprecated useExperimentalAnnotation and experimentalAnnotationInUse
  • KT-51374 NoSuchFileException in getOrCreateSessionFlagFile()
  • KT-51837 kotlin-gradle-plugin:1.6.20 fails xray scan on shadowed Gson 2.8.6.
  • KT-51454 KotlinJvmTest is not a cacheable task
  • KT-45745 Migrate only Kotlin Gradle Plugin tests to new JUnit5 DSL and run them separately on CI
  • KT-47318 Remove deprecated 'kotlinPluginVersion' property in `KotlinBasePluginWrapper'
  • KT-51378 Gradle 'buildSrc' compilation fails when newer version of Kotlin plugin is added to the build script classpath
  • KT-46038 Gradle: kotlin_module files are corrupted in the KotlinCompile output, and gets cached
  • KT-51064 Kotlin gradle build hangs on MetricsContainer.flush
  • KT-48779 Gradle: Could not connect to kotlin daemon

Tools. Gradle. Cocoapods

  • KT-50622 Cocoapods Plugin: cocoapods-generate does not work correctly with ruby 3.0.0 and higher
  • KT-51861 Custom binary name in CocoaPods plugin isn't respected by fatFramework task

Tools. Gradle. JS

  • KT-52221 Kotlin/JS: failed Node tests are not reported in a standard way
  • KT-51895 K/JS: Redundant technical messages during JS tests
  • KT-51414 Allow set up environment variables for JS tests
  • KT-51623 Kotlin/JS: Mocha could not failed when external module not found
  • KT-51503 Update NPM dependency versions

Tools. Gradle. Multiplatform

New Features

  • KT-51386 [KPM] IdeaKotlinProjectModelBuilder: Implement dependencies

Fixes

  • KT-49524 Improve DSL for managing Kotlin/Native binary output
  • KT-51765 com.android.lint in multiplatform project without android target should not trigger warning
  • KT-38456 MPP with Android source set: allTests task does not execute Android unit tests
  • KT-44227 Common tests are not launched on local JVM for Android via allTests task in a multiplatform project
  • KT-51946 Temporarily mark HMPP tasks as notCompatibleWithConfigurationCache for Gradle 7.4
  • KT-52140 Support extensibility Kotlin Artifacts DSL by external gradle plugins
  • KT-51947 Mark HMPP tasks as notCompatibleWithConfigurationCache for Gradle 7.4 using Reflection
  • KT-50925 Could not resolve all files for configuration ':metadataCompileClasspath'
  • KT-51262 [KPM] IDEA import: Move model builder to KGP
  • KT-51220 [KPM][Android] Implement generic data storage and import pipeline
  • KT-48649 No run task generated for macosArm64 target in Gradle plugin

Tools. Gradle. Native

  • KT-47746 Allow customization of the Kotlin/Native compiler download url
  • KT-51884 Gradle Native: "A problem occurred starting process 'command 'xcodebuild''" when building assembleFooXCFramework task on Linux

Tools. Incremental Compile

  • KT-51546 FIR incremental compilation fails with assertion "Trying to inline an anonymous object which is not part of the public ABI"
  • KT-49780 IncrementalCompilerRunner bug: Outputs are deleted after successful rebuild following fallback from an exception
  • KT-44741 Incremental compilation: inspectClassesForKotlinIC doesn't determine changes with imported constant

Tools. JPS

  • KTIJ-17280 JPS: don't use java.io.File.createTempFile as it is not working sometimes
  • KTIJ-20954 NPE at at org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil.readNameResolver on compiling by JPS with LV > 1.7

Tools. Kapt

  • KT-49533 Make kapt work out of the box with latest JDKs
  • KT-52284 FIR: add error in 1.7.0 branch if run with Kapt
  • KT-51463 KAPT: Incremental compilation not working when rerunning unit tests
  • KT-51132 KAPT: Support reporting the number of generated files by each annotation processor
  • KT-30172 Kapt: Shutdown kotlinc gracefully in case of error in annotation processor

Tools. Scripts

  • KT-49173 Add support for nullable types in provided properties and other configuration-defined declarations
  • KT-52294 [Scripting] Update oudated org.eclipse.aether dependencies to new org.apache.maven.resolver
  • KT-51213 Kotlin JSR223 crashes with "ScriptException: ERROR java.lang.NullPointerException:" if bindings contain one or more null values
  • KT-48812 Script: "IllegalStateException: unknown classifier kind SCRIPT" when passing a function reference to a Flow
  • KT-50902 Scripts loaded from the compilation cache ignore the loadDependencies eval configuration property
  • KT-52186 Scripts: Backend Internal error: Exception during IR lowering when using symbol from a dependency inside a function
  • KT-51731 Script: jsr223 memory leak in spring-boot Fat Jar
  • KT-49258 Scripts: method 'void ()' not found with multiple evals using kotlin script JSR223
  • KT-51346 Scripts: "BackendException: Exception during IR lowering" with variable of imported script inside class

Recent ChangeLogs: