Kotlin Versions Save

The Kotlin Programming Language.

v2.0.0-RC1

2 weeks ago

Changelog

Analysis. API

Fixes

  • KT-65616 K2: FirDeclarationStatusImpl cannot be cast to FirResolvedDeclarationStatus from STATUS
  • KT-64241 K2: Unresolved calls to functions in scripts depending on included projects
  • KT-65813 Analysis API Standalone: FirDeclarationForCompiledElementSearcher does not find compiled elements
  • KT-66052 AA: render expect/actual modifier
  • KT-66795 KtCodeFragment.clone() is broken
  • KT-66532 K2 CodeGen AA: missing annotation setup for function in source module but not in a compile target file
  • KT-65561 Analysis API: dummy.kt is not a physical file
  • KT-64833 Analysis API: Members implemented by delegation have no overridden symbols
  • KT-62405 Analysis API: Symbols SUBSTITUTION_OVERRIDE have no overridden symbols
  • KT-66749 K2: "Collection contains no element matching the predicate" on an unresolved call
  • KT-66719 AbstractGetKlibSourceFileNameTest: The dependency to ":native:analysis-api-klib-reader" breaks JPS compilation
  • KT-66603 Analysis API: support type annotations in KtPsiTypeProviderMixIn#asPsiType
  • KT-64505 Analysis API Standalone: Remove test-specific calculation of sealed class inheritors
  • KT-66013 Analysis API Standalone: Sealed inheritors aren't correctly calculated for source classes
  • KT-62880 K2 IDE: Unresolved java annotation methods in KDoc
  • KT-66530 K2: Analysis API: KtPsiTypeProvider#asKtType crashes on PsiClassType for Java type parameter with wrong use site
  • KT-66485 Substituted types are not provided for callable references
  • KT-66498 Analysis API: 'KtFe10SymbolDeclarationOverridesProvider' considers a class to be a subclass of itself
  • KT-66189 K2 / IDE: KtFirExpressionTypeProvider bugs
  • KT-59732 FirLazyResolveContractViolationException: lazyResolveToPhase(IMPORTS) cannot be called from a transformer with a phase IMPORTS from serialisation plugin

Analysis. Light Classes

  • KT-66692 SLC: findAttributeValue for attribute w/ default value in Java returns null

Apple Ecosystem

  • KT-66446 Diagnostic never showed, and build fails when CocoaPods dependency is used with embedAndSign task and linking type is dynamic
  • KT-66445 Diagnostic never showed when CocoaPods dependency is used with embedAndSign task and linking type is static

Backend. Wasm

  • KT-66471 Null method reference with Kotlin/Wasm on 2.0.0-Beta4
  • KT-65210 K/Wasm ::class operator produces Number KClass for Short expression
  • KT-58088 [PL] Support & enable partial linkage for Wasm
  • KT-66104 Wasm: compiler crash: NoSuchElementException: Sequence contains no element matching the predicate
  • KT-64449 K2: Implement K1WasmWasiCodegenBoxTestGenerated for K2
  • KT-61263 K/Wasm: add a way to turn on k2 in wasm examples using Compose

Compiler

New Features

  • KT-32754 Choose existing extensions over additional built-ins members from JDK except overrides
  • KT-64350 K2: deprecate using typealias as a callable qualifier in imports
  • KT-62547 Introduce a language feature flag for smartcasts based on "memory" variables

Performance Improvements

  • KT-65005 K2: Investigate testCommonSuperTypeContravariant performance
  • KT-65579 K2: performance regression in FP Space
  • KT-61121 [K/N] Kotlin Native compiler performance is slow when generating large frameworks

Fixes

  • KT-67185 K2: Incorrect coercion-to-Unit leading to CCE at runtime
  • KT-63836 K2: No deprecation error message in common metadata compilation
  • KT-57618 K2: complex deprecation messages are not printed in the error
  • KT-61787 K2 doesn't report warnings for some Gradle tasks
  • KT-62063 K2: drop pre-release flag in 2.0-RC
  • KT-65578 K2: implement a deprecation warning for KT-57014 (wrong nullability returned from JDK SAM constructor lambda)
  • KT-65120 K2 Consider turn into platform checkers ones which checks for objC
  • KT-67090 K2: Exception from metadata compilation when compiling class with annotations from dependencies
  • KT-59479 K2: build KorGE
  • KT-62560 K2: KAPT4: annotation @ReplaceWith is missing a default value for the element 'imports'
  • KT-67027 K2: Review all use-sites of annotation arguments utilities
  • KT-60096 K2: Introduced API_NOT_AVAILABLE
  • KT-64151 K2: consider implementing FIR-level constant evaluation
  • KT-65195 K2: Unexpected exception when executing dynamic array element inc/dec
  • KT-63416 K2 / Contracts: False positive "Leaked in-place lambda" warning caused by suspend lambda with callsInPlace contract
  • KT-57812 K2: support serialization of type annotation's arguments
  • KT-66717 Incorrect diagnostics around intersection property overrides
  • KT-65603 K2: No approximation is done on public, but effectively private property
  • KT-59932 K2: Disappeared AMBIGUOUS_ANONYMOUS_TYPE_INFERRED
  • KT-66527 K2: type mismatch on override for type
  • KT-59400 K2: Missing CANNOT_INFER_VISIBILITY
  • KT-64534 K2: org.jetbrains.kotlin.util.FileAnalysisException: Somewhere in file
  • KT-65649 K2: IR has incorrect origins for some inplace updating operators
  • KT-66748 K2: False-positive AMBIGUOUS_SUPER in toString
  • KT-67013 K2: ClassCastException: class FirConstructorSymbol cannot be cast to class FirNamedFunctionSymbol
  • KT-52175 K2: WRONG_ANNOTATION_TARGET for annotation that used inside if
  • KT-66902 K2: "Named arguments are prohibited for non-Kotlin functions" with Java interop
  • KT-66793 K2: "assigning single elements to varargs in named form is prohibited." caused by varargs supplied from java with elvis operator
  • KT-65235 JDK 21 might lead to change in overloads resolution
  • KT-66350 K2: "IllegalStateException: Unsupported compile-time value STRING_CONCATENATION" when evaluating an annotation argument string
  • KT-65035 IrFakeOverrideBuilder: AbstractMethodError on inheritance from Java subclass of CharSequence with inherited implementations
  • KT-66447 Implement KT-59138 under a language feature
  • KT-66701 K2: Java interface method override via Kotlin class rejected
  • KT-66730 K2: False positive RETURN_TYPE_MISMATCH in return statement in SAM constructor
  • KT-66909 K2: Implement a diagnostic for returning null from a lambda with expected return type Unit!
  • KT-66570 Generic wildcard upper bound inference error
  • KT-65272 K2: invoke operator applies "restricted suspending call" error differently than K1
  • KT-65300 K2: this-expressions in initializers and local declarations don't introduce type information to either BI or PCLA
  • KT-66797 K2 JS: Primary constructor property annotation with target VALUE_PARAMETER is put on property instead of parameter
  • KT-66463 K2: false positive ACCIDENTAL_OVERRIDE_CLASH_BY_JVM_SIGNATURE
  • KT-63631 K2: constant value UByte.MAX_VALUE is incorrectly deserialized from metadata
  • KT-65386 K2: Different signature of invoke for Unit lambda
  • KT-60574 K2: generated IR for suspendCoroutineUninterceptedOrReturn is different from K1 (K2 uses Any? instead of Unit)
  • KT-66512 K2: Incorrect diagnostic in lambda whose expected type is a type alias to Unit
  • KT-66279 K2: False positive INITIALIZER_TYPE_MISMATCH with return Unit in a lambda with the expected type () -> Unit
  • KT-66277 K2: False negative RETURN_TYPE_MISMATCH with empty return in lambda assigned to a property
  • KT-62550 K2: Different JVM signature of lambda with Unit return type
  • KT-65623 K2: Unresolved reference in connection with casts
  • KT-66654 K2 FIR resolution: Mismatch between actual type and expected type for a value parameter when the parameter type is a function type with special function kind
  • KT-66638 Cannot access properties of a generic type with wildcards
  • KT-66767 K2: Destructuring declaration inside initializer failure
  • KT-65727 K2: add proper package for properties generated from destructuring declarations
  • KT-64854 K2: Trying to access private field on runtime with contracts
  • KT-59906 K2: Disappeared CAPTURED_VAL_INITIALIZATION
  • KT-65388 IrFakeOverrideBuilder - custom annotation is available in fake getter/setter
  • KT-56384 K2: build IntelliJ monorepo master branch
  • KT-66352 K2: difference between LL FIR and FIR for componentN functions
  • KT-66686 K2 Script: Unresolved reference of script-specific entities on out-of-order resolve
  • KT-65523 K2: add proper package for result$$ property
  • KT-66699 Restore HostManager ABI
  • KT-60533 Inliner incorrectly captures non-null value as null in coroutines
  • KT-57925 K2: Consider removing FirEmptyContractDescription
  • KT-61893 K2: should not resolve to Java function with Kotlin hidden-level deprecation
  • KT-59669 K2: Explore assignments in in-place lambdas
  • KT-66271 Fir: Deserialize classFile, functionFile and propertyFile from KlibMetadataProtoBuf
  • KT-57957 K2: Symbol providers are frequently queried with error-named class IDs
  • KT-66677 K2: OVERRIDE_DEPRECATION isn't reported for WEAKLY_HIDDEN method toArray()
  • KT-62793 K2: slightly different bytecode of suspend conversions
  • KT-57244 K2: slightly different naming scheme for suspend conversion adapters
  • KT-60256 K2: types are not substituted in suspend conversion
  • KT-64407 Implement WriteSignatureTestGenerated for K2
  • KT-64438 K2: Port CodegenTestCase to K2
  • KT-64404 Implement WriteFlagsTestGenerated for K2
  • KT-66491 K2 / KJS: "Name contains illegal characters." caused by backticks in import
  • KT-66275 K2: false-positive "Java module does not depend on module" error on access to inherited member from twice-transitive dependency via class from transitive dependency
  • KT-65576 K2: Incorrect resolution of variable+invoke when the property type is not computed
  • KT-58575 Private Kotlin property prevents use of Java get- and set-methods from Java-Kotlin-Java hierarchy
  • KT-65438 K2: Introduce WEAKLY_HIDDEN concept to built-in-JDK content mapping
  • KT-60510 Smartcast to functional type does not work in when exprssion
  • KT-59677 K2: Report diagnostics about missing receiver for delegated constructor call to inner class
  • KT-65939 IrFakeOverrideBuilder - nullability annotation is lost in intersection without annotation
  • KT-66356 K2: type mismatch error when generic type with inaccessible generic type as type argument is produced and consumed by declarations from dependencies
  • KT-65193 K2: "JAVA_TYPE_MISMATCH" caused by MutableList
  • KT-65704 K2: computeCommonSuperType of flexible type with recursive captured type argument produces giant multi-level-deep type
  • KT-64920 Json.encodeToString yields different results depending on whether typealias is used
  • KT-65594 K2: Type inference fails on NullMarked object with star type
  • KT-66392 K2: Exception in KJK hierarchy with implicit types
  • KT-66551 Revert temporary commits after KT-62063 and bootstrapping
  • KT-65218 FIR LL and DiagnosticFE10 tests start to fail in case of adding any new declaration into stdlib commonMain
  • KT-63746 K2: JSpecify: If a class has a @Nullable type-parameter bound, Kotlin should still treat unbounded wildcards like platform types
  • KT-66504 K2: plusAssign operator call is resolved differently than function call
  • KT-65105 K2 / Native: Member overrides different '@Throws' filter
  • KT-48515 JSpecify: If a class has a @Nullable type-parameter bound, Kotlin should still treat unbounded wildcards like platform types
  • KT-58892 K2: Parcelize doesn't work in common code when expect annotation is actualized with typealias to @Parcelize
  • KT-66124 K2: Remove FirLambdaArgumentExpression and FirNamedArgumentExpression after resolution
  • KT-38031 FIR: Discrepancy in call resolution for qualifiers with old FE
  • KT-65789 K1/K2: Resolve change in constructor/top-level function ambiguity
  • KT-66150 K2: expects type argument in super qualifier
  • KT-50008 JSpecify @Nullable annotation on type-parameter bound prevents type-variable usages from being platform types
  • KT-56988 CFG, smart casts: red in K1 -> green in K2 for invalid code
  • KT-66449 Make DiagnosticSuppressor a project-level extension
  • KT-65249 K2: False positive modality is different for native compilation
  • KT-64846 K2: false negative CONFLICTING_JVM_DECLARATIONS on inheritance from Java collection subclass with a conflicting override
  • KT-58203 K2: false-negative incompatible types error on is-check with unrelated type
  • KT-65722 K2: Property reference refers to non-existent functions
  • KT-65878 K2: "ClassCastException" when passing nun-suspend lambda to SAM constructor with named argument
  • KT-65926 K2: add tests for all fixed-in-k2 / not-reproducible-in-k2 unresolved issues
  • KT-58279 K2. False-negative Smart cast to is impossible, because is a public API property declared in different module for Java static field
  • KT-56032 [LC issue] Incorrect wrapping when passing java vararg method to inline function
  • KT-63826 K2: expect for expect crashes the compiler
  • KT-63525 K2: "IllegalStateException: Fake override should have at least one overridden descriptor" caused by unreachable code
  • KT-65333 K2: UNRESOLVED_REFERENCE for java inner class in intersection scope
  • KT-57585 K2/MPP: false-negative errors on expect/actual modifiers mismatch
  • KT-59467 K2: build toolbox-enterprise
  • KT-59883 K2: Disappeared INVALID_IF_AS_EXPRESSION
  • KT-63420 Prevent weakening visibility in implicit overrides
  • KT-56744 Prepare language committee ticket about DFA/Smart-cast related changes in K2
  • KT-64233 K2: K1/K2: ensure JVM ABI consistency for quality gates projects
  • KT-59744 K2: false negative VAL_REASSIGNMENT in case of reassignment inside custom setter
  • KT-62878 K2: missing implicit coercion to unit
  • KT-63441 IrFakeOverrideBuilder: "accidental override" when implementing a Java function taking an array parameter
  • KT-59887 K2: Disappeared ACTUAL_MISSING
  • KT-59839 Prohibit header and impl in MPP
  • KT-64967 K2: false positive TYPE_MISMATCH with generic type parameters
  • KT-59664 Inline modifier can be added to a constructor parameter, but it does not have any effect
  • KT-59630 K2: Implement running FIR Blackbox tests on different JDKs
  • KT-65058 K2: Protected function call from public-API inline function is prohibited in anonymous object
  • KT-61891 K2: POSTFIX_{INCR|DECR} of global misses an origin
  • KT-64314 K2: Rename FirConstExpression to FirLiteralExpression
  • KT-64809 K2: Remove the LINK_VIA_SIGNATURES flag from FIR2IR configuration
  • KT-59682 K2: Use proper source for vararg arguments
  • KT-59972 K2: Disappeared EXPRESSION_EXPECTED_PACKAGE_FOUND
  • KT-64405 K2: Implement CompileJavaAgainstKotlinTestGenerated for K2
  • KT-61032 K2: False positive “Unused variable” for function callable reference
  • KT-64771 Investigate subtle FIR_DUMP difference for reversed order analysis
  • KT-62584 K2: different signature in subclass of local class declared in extension value getter
  • KT-59938 K2: Disappeared AMBIGUOUS_ACTUALS
  • KT-63446 IrFakeOverrideBuilder: AbstractMethodError due to missing bridge for generic method in a Java superclass
  • KT-59949 K2: Disappeared DEPRECATED_PARCELER
  • KT-55809 K2: Support pre-release checks for klibs
  • KT-59913 K2: Disappeared UNSUPPORTED_FEATURE
  • KT-58094 K2: Review IrBuiltinsOverFir
  • KT-59940 K2: Disappeared ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE
  • KT-60004 K2: Disappeared CONTRACT_NOT_ALLOWED
  • KT-59890 K2: Disappeared CONST_VAL_WITH_NON_CONST_INITIALIZER
  • KT-59884 K2: Disappeared NON_LOCAL_RETURN_NOT_ALLOWED
  • KT-59977 K2: Disappeared NO_ACTUAL_FOR_EXPECT
  • KT-59996 K2: Disappeared INVALID_CHARACTERS
  • KT-59992 K2: Disappeared KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE
  • KT-59974 K2: Disappeared INAPPLICABLE_INFIX_MODIFIER
  • KT-59991 K2: Disappeared FORBIDDEN_VARARG_PARAMETER_TYPE
  • KT-59973 K2: Disappeared INAPPLICABLE_LATEINIT_MODIFIER
  • KT-59933 K2: Disappeared USAGE_IS_NOT_INLINABLE
  • KT-59967 K2: Disappeared UNINITIALIZED_ENUM_ENTRY
  • KT-59943 K2: Disappeared OPERATOR_MODIFIER_REQUIRED
  • KT-59986 K2: Disappeared ITERATOR_MISSING
  • KT-57802 K2: Backend Internal error: RecordEnclosingMethodsLowering.kt
  • KT-59941 K2: Disappeared COMPONENT_FUNCTION_MISSING
  • KT-62620 Warn about @OptIn/@Deprecated for overrides of Any
  • KT-59689 K2: Fix complex smartcasts with safe calls
  • KT-60026 K2: Introduced EXPOSED_TYPEALIAS_EXPANDED_TYPE
  • KT-59433 K2: Missing NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE
  • KT-60080 K2: Introduced INVISIBLE_SETTER
  • KT-59979 K2: Disappeared SUPERTYPE_INITIALIZED_IN_EXPECTED_CLASS
  • KT-59978 K2: Disappeared EXPECTED_ENUM_ENTRY_WITH_BODY
  • KT-59955 K2: Disappeared INCOMPATIBLE_MODIFIERS
  • KT-59942 K2: Disappeared ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT
  • KT-59931 K2: Disappeared CLASS_LITERAL_LHS_NOT_A_CLASS
  • KT-59429 K2: Missing ABBREVIATED_NOTHING_RETURN_TYPE
  • KT-59420 K2: Missing ABBREVIATED_NOTHING_PROPERTY_TYPE
  • KT-59965 K2: Disappeared CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON
  • KT-59952 K2: Disappeared EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR
  • KT-59985 K2: Disappeared UNDERSCORE_USAGE_WITHOUT_BACKTICKS
  • KT-59950 K2: Disappeared ILLEGAL_ESCAPE
  • KT-59899 K2: Disappeared EXPECTED_DECLARATION_WITH_BODY
  • KT-59980 K2: Disappeared EXPECTED_ENUM_CONSTRUCTOR
  • KT-59982 K2: Disappeared EXPECTED_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER
  • KT-60092 K2: Introduced EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR
  • KT-60105 K2: Introduced UNDERSCORE_USAGE_WITHOUT_BACKTICKS
  • KT-57703 K1/K2: unprecise constraint system behavior around integer literals and comparable arrays
  • KT-60043 K2: Introduced PROPERTY_AS_OPERATOR
  • KT-60048 K2: Introduced MISSING_EXCEPTION_IN_THROWS_ON_SUSPEND
  • KT-59422 K2: Missing NON_SOURCE_ANNOTATION_ON_INLINED_LAMBDA_EXPRESSION
  • KT-59804 K2: Repeat the SealedInheritorInSameModuleChecker HMPP logic
  • KT-60936 KMP: check annotations compatibility on members inside expect and actual class scopes
  • KT-60668 KMP: check expect and actual annotations match when actual method is fake override
  • KT-59419 K2: Missing MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE
  • KT-59860 [FIR] False-positive UNEXPECTED_SAFE_CALL

Docs & Examples

  • KT-66958 [Docs] Add info about generating lambda functions like the Java compiler by default

IR. Interpreter

  • KT-64079 Native library evolution behaviour for constants

IR. Tree

  • KT-66152 IrFakeOverrideBuilder: AssertionError "different length of type parameter lists"

JavaScript

  • KT-45604 KJS / IR: Use globalThis instead of top level this
  • KT-64421 K2: Implement IrJsTypeScriptExportTestGenerated for K2
  • KT-64451 K2: Implement MultiModuleOrderTestGenerated for K2
  • KT-64450 K2: Implement SourceMapGenerationSmokeTestGenerated for K2
  • KT-64426 K2: Implement JsIrLineNumberTestGenerated for K2
  • KT-64422 K2: Implement IrJsSteppingTestGenerated for K2
  • KT-64445 K2: Implement **VersionChangedTestGenerated for K2
  • KT-64446 K2: Implement JsIrInvalidationPerFileWithPLTestGenerated for K2
  • KT-64423 K2: Implement JsIrES6InvalidationPerFileTestGenerated for K2
  • KT-61117 Migrate remaining legacy IC tests to IR

Klibs

  • KT-66970 K2: "IrLinkageError: Function * can not be called" when calling @JvmStatic functions in Native test
  • KT-66611 Check, that no bad IR is produced, when we failed to compute constant default value in constant context
  • KT-66367 KLib ABI dump: support wasm_target manifest attribute
  • KT-64440 K2: Port KotlinKlibSerializerTest to K2
  • KT-64452 K2: Port FilePathsInKlibTest to K2
  • KT-61097 [PL] Don't create an executable if there were errors in PL

Language Design

  • KT-58881 K2: Run checkers in common code against platform session
  • KT-59553 K2: Simplify rules for upper bound violated checks for qualifier in LHS of class literal
  • KT-62646 Decide on the equality compatibility
  • KT-65775 K2: Consider prohibiting actual typealias to superclass
  • KT-54309 Deprecate use of a synthetic setter on a projected receiver
  • KT-26983 Gradle buildscript (kotlin-dsl): "Smart cast to 'Foo' is impossible" due to same variable names
  • KT-57422 K2: Prohibit use-site 'get' targeted annotations on property getters

Libraries

  • KT-63156 Remove all deprecated declarations in kotlinx-metadata-jvm
  • KT-63219 Change root package and coordinates of kotlinx-metadata-jvm to kotlin.*
  • KT-63341 K2: JVM StringBuilder has no corresponding members for expected class members
  • KT-63157 Make sure that all deprecation levels are raised to ERROR for declarations intended for removal from kotlinx-metadata
  • KT-60870 kotlinx.metadata.InconsistentKotlinMetadataException: No VersionRequirement with the given id in the table In kotlinx-metadata-jvm
  • KT-64230 Prohibit writing versions of metadata that are too high
  • KT-59441 Design reading and writing future versions of Kotlin metadata
  • KT-57922 kotlinx-metadata-jvm does not take into account strict semantics flag

Native

  • KT-66390 Universal binary in included binaries produces universal archive as output

Native. ObjC Export

  • KT-66565 Exporting framework "umbrella" produces an unimportable framework

Native. Runtime. Memory

  • KT-66371 Native: nullptr access during concurrent weak processing in CMS GC
  • KT-61093 Kotlin/Native: enable concurrent weak processing by default

Native. Swift Export

  • KT-65897 Translate constructors with primitive parameters to init methods in Swift export
  • KT-66681 Move generated swift from enum to extension

Native. Testing

  • KT-66014 [K/N][Tests] Some testsuites don't test two-stage compilation and lose -language-version flag

Tools. Build Tools API

  • KT-61860 Add infrastructure for BTA tests
  • KT-65048 "Can't get connection" (to daemon) when classpath has spaces

Tools. CLI

  • KT-66703 Add JVM target bytecode version 22
  • KT-65842 K2 / CLI: "kotlinc -version" creates META-INF/main.kotlin_module
  • KT-66926 Add a flag to report warnings when errors are found
  • KT-64384 Until the REPL in K2 is not supported, display an appropriate warning

Tools. CLI. Native

Tools. Compiler Plugin API

  • KT-59555 Expose resource closing extension point in CompilerPluginRegistrar

Tools. Compiler Plugins

  • KT-66526 K2: Special function kind setup does not work for value parameter whose type is function with a receiver

Tools. Compiler plugins. Serialization

  • KT-63539 K2: Missing "Serializable class has duplicate serial name of property"
  • KT-65757 K2: Missing @Deprecated annotation on synthesized declarations
  • KT-64447 K2: Implement Serialization...IrBoxTestGenerated for K2

Tools. Fleet. ObjC Export

  • KT-66695 Move analysis-api-klib-reader package into 'o.j.k.native.analysis.api`
  • KT-66380 ObjCExport: support interface implementation

Tools. Gradle

New Features

  • KT-67006 Create new compose compiler Gradle plugin

Performance Improvements

  • KT-66912 Parallel compilation slowdown due to synchronization

Fixes

  • KT-67138 Json report is empty for incremental compilation
  • KT-61171 CompilerPluginsIncrementalIT.afterChangeInPluginBuildDoesIncrementalProcessing doesn't provide a compiler plugin for K2 leading to the test failure
  • KT-67139 Build reports can be overridden
  • KT-65934 Track if Gradle configuration cache is enabled in the user builds
  • KT-65935 Track project isolation Gradle feature
  • KT-64567 [FUS] Add boolean flag into kotlin.gradle.performance collector
  • KT-66961 Early access to gradle.rootProject leads to an exception
  • KT-63619 Add Kotlin power-assert compiler plugin to feature usage statistics gathering
  • KT-62108 Wrong scope of compiler options is used while configuring options for all targets and all compilations
  • KT-63165 Gradle: checkKotlinGradlePluginConfigurationErrors uses deprecated Gradle behavior
  • KT-66374 Diagnostic for deprecated properties: false-positive warning is reported for kapt.use.k2property
  • KT-62398 KMP: Compose breaks resolution of stdlib declarations in common source set
  • KT-64046 Provide K/N version to KGP when -Pkotlin.native.enabled=true
  • KT-64848 Log K/Native compiler arguments with log level specified for compiler arguments
  • KT-65213 Collect logic for FUS metrics calculation in one place

Tools. Gradle. JS

  • KT-66917 JS/Wasm: Upgrade NPM dependencies

Tools. Gradle. Multiplatform

  • KT-49919 Introduce the org.gradle.jvm.environment attribute on JVM and Android published variants (both for MPP and non-MPP libraries)
  • KT-66983 MPP Configuration Cache IT fails with Gradle 8.7 on windows
  • KT-66419 Remove useless API: Kotlin compilation level compiler options DSL
  • KT-65315 KMP Composite compileIosMainKotlinMetadata fails with "Could not find <included iOS dependency>"
  • KT-61945 Report redundant dependsOn-edges
  • KT-66563 Stop including resources to metadata klib
  • KT-57141 K2: KotlinCompile task input named 'multiplatformStructure.fragments.$0.sources' is tracked in a pure JVM kotlin project together with changes of sources

Tools. Gradle. Native

  • KT-66982 Gradle plugin corrupts Native compiler dependencies
  • KT-65641 Invalid replacements for deprecated properties 'konanHome' and 'konanDataDir' are suggested as quick fixes
  • KT-66750 Cannot query the value of task ':commonizeNativeDistribution' property 'kotlinNativeBundleBuildService' because it has no value available
  • KT-66309 K/N compiler can't be downloaded if project import is stopped while 'commonizeNativeDistribution' task is being executed and rerun again
  • KT-66422 Configuration cache breaks during Kotlin Native dependencies downloading
  • KT-65624 K/N warning: "The Kotlin/Native distribution used in this build does not provide the standard library." is displayed during configuration phase
  • KT-52483 Sign native prebuilt tars

Tools. Incremental Compile

  • KT-61137 Incremental scripting compilation fails with 2.0
  • KT-65943 Incorrect scopeFqName recorded in LookupTracker

Tools. Kapt

  • KT-66773 KAPT: Generated stubs cannot access annotations from other module
  • KT-59488 K2: build sphinx-kotlin
  • KT-65453 Kapt4: error "annotation @ParameterName is missing a default value for the element 'name'" for a composable lambda fun without parameters
  • KT-62097 K2: [KAPT4] Keep import statements for unresolved annotation classes
  • KT-61628 K2: testAndroidDaggerIC doesn't work with Kapt4

Tools. Scripts

  • KT-66395 K2: Scripting test testHelloSerialization fails on K2

Tools. Wasm

  • KT-67086 K/Wasm: wasi with binaries.library fails on import and build
  • KT-66159 K/Wasm: applyBinaryen somehow affects skiko.mjs
  • KT-66733 wasmWasiTest is not compatible with Gradle Configuration Cache
  • KT-64601 Indicate that wasmJsBrowserDevelopmentRun has finished bundling

v2.0.0-Beta5

1 month ago

Changelog

Analysis. API

New Features

  • KT-65327 Support reading klib contents in Analysis API

Performance Improvements

  • KT-65560 K2: Anaysis API: ContextCollector triggers redundant resolution in the case of file elements

Fixes

  • KT-65571 Support VirtualFile inputs to Analysis API modules
  • KT-65600 Analysis Api: FirFile for KtCodeFragments are created and not updated on changes
  • KT-64579 K2 IDE: "Expected FirResolvedArgumentList for FirAnnotationCallImpl of FirValueParameterImpl(Source) but FirArgumentListImpl found"
  • KT-65978 Analysis API: Use soft references in FileStructureCache
  • KT-64051 K2 IDE: Analysis API: Unresolved links to typealias in KDoc
  • KT-66276 K2: Analysis API: TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM false positive for script parameter
  • KT-66232 K2: Analysis API: cover ScriptWithCustomDefDiagnosticsTestBaseGenerated by LL FIR tests
  • KT-60996 K2: Stub Based Deserializer: Set versionRequirements to enable VERSION_REQUIREMENT_DEPRECATION diagnostics
  • KT-66306 K2: Analysis API: drop ability to enable global phase resolve lock
  • KT-64919 K2 IDE: Implement KMP support for sealed class inheritors
  • KT-65563 Analysis API: Missing session component FirExpectActualMatchingContextFactory in LLFirLibrarySession
  • KT-66173 K2: No 'org.jetbrains.kotlin.fir.scopes.impl.FirDelegatedMembersFilter' in array owner: LLFirLibrarySession
  • KT-66238 Gradle kotlin build scripts - a lot of unresolved symbols after latest changes in kotlin master
  • KT-65099 K2: Recursive local storage cache check for Fir2IrDeclarationStorage::createAndCacheIrPropertySymbols()
  • KT-65265 Analysis API: Add library session invalidation tests
  • KT-56288 Analysis API: Add tests for session invalidation on the Analysis API side
  • KT-64000 K2: make AnnotationArgumentsStateKeepers more accurate
  • KT-63606 K2: Analysis API: rewrite FirLazyAnnotationTransformer to avoid redundant transformations
  • KT-65191 KtFirMultiplatformInfoProvider#getExpectForActual doesn't return expect function for slightly broken code
  • KT-62136 Analysis API: Add concurrent tests for CleanableSoftValueCache
  • KT-61222 K2: Add lifecycle management for KtResolveExtension
  • KT-65960 Analysis API: Test infrastructure indexes binary libraries from decompiled files instead of stubs during IDE mode tests
  • KT-65240 K2: CodeGen API fails to resolve Annotation parameter type when it runs FIR2IR for a class with a parent class from other module if the parent class has an annotation from another module
  • KT-65344 K2: make FirScript statements (declarations) independent
  • KT-65930 AA: receiver type for Int?::foo misses nullability
  • KT-65914 AA: receiver type for this::foo returns return type of the target callable
  • KT-65780 K2: polish FileStructure implementation for FirFile
  • KT-62840 K2 Script: everything around destructuring declaration on top level of scripts are broken
  • KT-65683 Analysis API: Dangling file session creation causes a computeIfAbsent contract violation
  • KT-64884 K2 IDE. FP [NAMED_PARAMETER_NOT_FOUND] for copy method of library data class when class has not parameter-properties
  • KT-65763 K2: value parameter from library data class copy have RAW_FIR phase
  • KT-65665 Analysis API: support KtDelegatedSuperTypeEntry in KtFirExpressionInfoProvider.isUsedAsExpression
  • KT-65655 Analysis API: KtCodeCompilationException should not strongly reference FIR sessions
  • KT-65345 K2: unify FirDesignation and LLFirResolveTarget

Analysis. Light Classes

  • KT-61734 SLC: wildcard suppression not honored
  • KT-65112 Symbol Light Classes don't support annotations on type parameters
  • KT-65843 K2: Light method returns kotlin.Unit type for TestResult return type
  • KT-65653 SLC: wrong binary resolution to function with value class
  • KT-65393 SLC: missing deprecated-hidden property
  • KT-64772 SLC: presence of source PSI for compiler-generated declaration

Apple Ecosystem

  • KT-62373 "Xcode higher than tested" diagnostic
  • KT-64096 Diagnostic when embedAndSign used for framework with cocoapods-dependencies

Backend. Native. Debug

  • KT-65553 K2: Native: kt42208WithPassingLambdaToAnotherFunction test fails with K2

Backend. Wasm

New Features

  • KT-58088 [PL] Support & enable partial linkage for Wasm
  • KT-66327 Include information about particular Wasm target into KLib manifest
  • KT-65009 Generate TypeScript definitions for the @JsExport declarations in K/Wasm

Fixes

  • KT-65660 [WasmJs] Support catching JS exceptions
  • KT-64890 K/Wasm compiler crash with external class and Kodein
  • KT-66104 Wasm: compiler crash: NoSuchElementException: Sequence contains no element matching the predicate
  • KT-66065 [Wasm] Make specialisations for closured primitive values
  • KT-65778 Create the same TypeScript tests infrastructure for Kotlin/Wasm that we have now for Kotlin/JS
  • KT-65411 Kotlin/Wasm: Boolean boxed instances are not the same
  • KT-65713 Kotlin/Wasm generates a wrapper that cannot run in Deno
  • KT-65777 Implement named export for Kotlin/Wasm
  • KT-65824 Wasm: Allow unsigned primitives to be used inside functions annotated with @JsExport
  • KT-63939 Kotlin/Wasm Support lazy associated object initialisation
  • KT-61888 [Kotlin/wasm] in kotlin.test support for @AfterTest for async tests

Compiler

New Features

  • KT-64350 K2: deprecate using typealias as a callable qualifier in imports
  • KT-65478 JVM: Change inlined variable naming format
  • KT-26565 Choose existing extensions over additional built-ins members from JDK
  • KT-65859 Calls refinement extension point
  • KT-45375 Generate all Kotlin lambdas via invokedynamic + LambdaMetafactory by default
  • KT-65681 K2: Improve error message of UPPER_BOUND_VIOLATED when upper bound is a captured type or other non-denotable type
  • KT-65153 K/N: extract liveness analysis to a separate phase
  • KT-59098 Support -Xjdk-release=1.6/1.7 with -jvm-target 1.8
  • KT-63670 Implement platform specific declaration clash diagnostics across all backends

Performance Improvements

  • KT-66341 K2: Don't build IdSignatures in FIR2IR with IR f/o builder
  • KT-66172 K2: Improve memory consumption of KtPsiSourceElement
  • KT-62798 'in' range checks are not intrinsified in kotlin-stdlib
  • KT-65579 K2: performance regression in FP Space

Fixes

  • KT-66673 K2/JS: FirJsInheritanceClassChecker doesn't expand type aliases to supertypes
  • KT-66475 K2/KMP/Wasm: report WRONG_JS_INTEROP_TYPE from a platform checker
  • KT-66474 K2/KMP/JS: report EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE from a platform checker
  • KT-66473 K2/Wasm: FirWasmExternalInheritanceChecker doesn't expand type aliases
  • KT-65062 K2: build kotlinx.collections.immutable and pass to CI
  • KT-65410 K2: ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED for 'removeAt' in KJK hierarchy
  • KT-65377 K2: "Argument type mismatch" caused by approximated captured type argument of generic type
  • KT-65440 K2: Mark all potential implementations of List.getFirst()/getLast() as deprecated independently of JDK
  • KT-65184 K2: disappeared TYPE_MISMATCH for java collections
  • KT-57588 K2/Native: False positive '"CONFLICTING_OVERLOADS", "PARAMETER_NAME_CHANGED_ON_OVERRIDE" on overriding objc methods
  • KT-65882 K2: "KotlinNothingValueException" caused by unsafe cast and Nothing::class
  • KT-65438 K2: Introduce WEAKLY_HIDDEN concept to built-in-JDK content mapping
  • KT-65959 K2: Incorrect warnings about inline function impact
  • KT-64994 K2: @Composable lambda type is not resolved from other modules
  • KT-66048 K2: property becomes nullable in KJK hierarchy if base declaration has implicit return type
  • KT-66148 K2. Sources of receivers updated twice because of PCLA
  • KT-65789 K1/K2: Resolve change in constructor/top-level function ambiguity
  • KT-60971 Incorrect "cannot inline bytecode built with JVM target ..." on property setter if only getter is inline
  • KT-61514 K2: Build fake overrides using IR during Fir2IR
  • KT-65584 K2: "Duplicate parameter name in a function type"
  • KT-50008 JSpecify @Nullable annotation on type-parameter bound prevents type-variable usages from being platform types
  • KT-66046 K2: false negative CANNOT_WEAKEN_ACCESS_PRIVILEGE on property
  • KT-56988 CFG, smart casts: red in K1 -> green in K2 for invalid code
  • KT-58191 K2: capturing closures successors that are already resolved (thanks to backward edges) must be taken into account for allowing smart casts
  • KT-65464 K2: False positive UNRESOLVED_REFERENCE on extension property call defined in KJK hierarchy
  • KT-62118 FIR: "HashMap.entry" has invalid enhanced type
  • KT-64840 K2: Bare type are not allowed for TV based values during PCLA
  • KT-65415 K2: Stdlib K2 build error: IrConstructorSymbolImpl is already bound
  • KT-66449 Make DiagnosticSuppressor a project-level extension
  • KT-66411 FIR: Real source on fake block around assignment expression in the "when" branch affects resolve in K2 Analysis API and IDE
  • KT-65982 K2 Scripts cannot disambiguate declarations imported from default and explicit imports
  • KT-65677 K2: Unable to resolve parent class from companion object
  • KT-66441 Remove symbol table from IR fake override builder in Fir2Ir
  • KT-58203 K2: false-negative incompatible types error on is-check with unrelated type
  • KT-65722 K2: Property reference refers to non-existent functions
  • KT-65878 K2: "ClassCastException" when passing nun-suspend lambda to SAM constructor with named argument
  • KT-65787 K2: "KotlinIllegalArgumentExceptionWithAttachments: Expected FirResolvedTypeRef with ConeKotlinType" caused by passing lambda expression with multiple labels to function
  • KT-65926 K2: add tests for all fixed-in-k2 / not-reproducible-in-k2 unresolved issues
  • KT-65022 K2: Compiler crashes when array literal is used in delegate expression
  • KT-62836 K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSource
  • KT-64727 K1: Closing bracket of object inside crossinline lambda or inside lambda in inline function is not hit on step-over
  • KT-64726 K1: Cannot stop on closing bracket of crossinline lambda inside of another crossinline lambda
  • KT-64725 K1: Cannot stop on closing bracket of lambda of inline-only function
  • KT-66272 Could not load module <Error module> with a combination of type parameters
  • KT-66243 Could not load module <Error module> in a builder inference with lambda with typed parameter
  • KT-66229 Could not load module <Error module> in a builder inference with Map.Entry
  • KT-61448 K2: Disappeared DEPRECATION in testWithModifiedMockJdk
  • KT-60106 K2: Introduced REIFIED_TYPE_FORBIDDEN_SUBSTITUTION
  • KT-66120 IrFakeOverrideBuilder: wrong return type in intersection with 3 classes
  • KT-60777 K2: missing INLINE_FROM_HIGHER_PLATFORM
  • KT-66196 Convert INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_ERROR to warning
  • KT-66067 K2: different overrides are created in a complex hierarchy with raw types and upper-bounded type parameters
  • KT-65821 K2: [NONE_APPLICABLE] None of the following functions is applicable: [constructor(message: String?): Throwable, constructor(cause: Throwable?): Throwable, constructor(): Throwable, ...]
  • KT-66268 K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl
  • KT-60797 K2: implement JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE
  • KT-28159 Smartcasts don't work with Nothing? values (Nothing? considered a null constant => an unstable value)
  • KT-28262 Smartcasts for reference equality don't work if explicit true check is used
  • KT-66000 K2: inherited inline getter has not been inlined
  • KT-66158 K2: not nullable return type for upper-bounded kotlin type parameter in KJK hierarchy
  • KT-65636 PowerAssert: Negative contains operator not aligned correctly in K2
  • KT-64271 K2: Wrong overriddenSymbols for toString of data class
  • KT-62779 K2: Difference in fake override generation
  • KT-61941 K2: FIR2IR incorrectly generates f/o structure for complex java/kotlin hierarchies with remapped jvm declarations
  • KT-60283 K2: fake override for java static method is not generated
  • KT-65095 K2: no bridge generated for getOrDefault when inheriting from Java Map implementation
  • KT-57301 K2: getOrDefault and bridges are not generated for certain Map subclasses
  • KT-58814 Too eager subtype inference in when expression
  • KT-65408 K1: "There are still 2 unbound symbols after generation of IR module" caused by data object's copy function usage
  • KT-65844 False Positive "This class can only be used as an annotation or as an argument to @OptIn" when passing as an array
  • KT-58697 K2: Tests: Assert no dump files exist when dump directive isn't present
  • KT-63258 NPE with function reference from within lambda during init
  • KT-60597 K1: IllegalArgumentException: fromIndex(0) > toIndex(-1) when wrapping receiver with backticks
  • KT-33108 USELESS_CAST false positive for cast inside lambda
  • KT-58458 K1: "java.lang.NullPointerException" with 'var equals' or 'val equals' as argument in when
  • KT-58447 K1: "AssertionError: Recursion detected on input" with @ParameterName and extension
  • KT-41013 OVERLOAD_RESOLUTION_AMBIGUITY for functions takes lambda: can not resolve it, but only named lambda parameter
  • KT-65588 K2: typealias of primitive type in vararg causes ABI incompatibility
  • KT-23873 Indexed access operator can cause false USELESS_CAST warning
  • KT-31191 Contract not smartcasting for extension functions in if-statement with multiple conditions
  • KT-63826 K2: expect for expect crashes the compiler
  • KT-25668 False-positive error on restricted suspending function call with callable reference
  • KT-18055 SMARTCAST_IMPOSSIBLE on mutable data class variable with a read-only property
  • KT-66186 K1 diagnostics miss some reporting messages
  • KT-65101 Generics behaving different when parenthesized
  • KT-63444 TYPE_MISMATCH caused by Inner class with nullable type and star projection
  • KT-58751 Definitely non-nullable type gets lost with star projection
  • KT-56624 "Unresolved reference" with import alias and enum constructor call
  • KT-53886 NoSuchMethodError exception in Kotlin/Native compiler
  • KT-20617 Qualified this@property does not work in extension properties with body expression
  • KT-10879 OVERLOAD_RESOLUTION_AMBIGUITY for synthetic property accessor with smartcasted receiver
  • KT-65649 K2: IR has incorrect origins for some inplace updating operators
  • KT-63525 K2: "IllegalStateException: Fake override should have at least one overridden descriptor" caused by unreachable code
  • KT-65333 K2: UNRESOLVED_REFERENCE for java inner class in intersection scope
  • KT-63712 Make it possible to add new stdlib API with SinceKotlin(2.0)
  • KT-63741 K2: fix visibility inference with overridden + inherited member
  • KT-64488 K2: False positive DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM with context receivers
  • KT-57585 K2/MPP: false-negative errors on expect/actual modifiers mismatch
  • KT-66077 IrFakeOverrideBuilder: NPE from IrJavaIncompatibilityRulesOverridabilityCondition.doesJavaOverrideHaveIncompatibleValueParameterKinds
  • KT-66020 K2: ISE "IrPropertySymbolImpl is unbound. Signature: null" on a property with getter with @JvmName
  • KT-62135 K2, KLIB: Classes are still sorted before serializing them to metadata
  • KT-66005 K2: "Should not be here: class org.jetbrains.kotlin.fir.expressions.impl.FirResolvedReifiedParameterReferenceImpl" on incorrect comparison of reified type parameter
  • KT-65840 [K2] Initializer type mismatch: expected 'Type', actual 'Type'
  • KT-59882 K2: Disappeared CANNOT_INFER_PARAMETER_TYPE
  • KT-65002 K2: Incorrect suspend conversion if argument is an aliased functional type
  • KT-65984 K2 scripting: failure on processing SUPPRESS annotation in the last script statement
  • KT-65680 K2: Class redeclaration leads to BackendException during IR fake override builder
  • KT-66028 K2: Convert FirExpectActualDeclarationChecker to platform checker
  • KT-65592 K2: IrFakeOverrideBuilder: ISE "should not be called" on diamond hierarchy with explicit dependency on annotations.jar
  • KT-65983 K2 gradle scripting: "'val' cannot be reassigned" errors
  • KT-64502 K2: Internal error on calling function before declaration
  • KT-60452 K2 Scripting: implement overriding of the script params
  • KT-65975 K2: Implicit receivers resolution order in K2 scripting
  • KT-60249 K2: No unit coercion generated for loops body
  • KT-65801 IrFakeOverrideBuilder - visibility is lost for setter in KJK hierarchy
  • KT-65937 K2: order of enum entries changed
  • KT-65933 K2: Type missmatch in arrays in annotations
  • KT-65343 JVM IR: Source parameter is lost when copying with DeepCopyIrTreeWithSymbols
  • KT-62788 K2: difference in annotation inheritance in overriddings
  • KT-65669 K2: ClassCastException class FirDeclarationStatusImpl cannot be cast to class FirResolvedDeclarationStatus
  • KT-65493 IrFakeOverrideBuilder: difference in return type for intersection with raw type
  • KT-65207 IrFakeOverrideBuilder - nullable return type for intersection override
  • KT-65972 Fix problems related to Unknown visibility in [FP] intellij
  • KT-65246 K2: Overiding java method that takes vararg parameter causes WRONG_NULLABILITY_FOR_JAVA_OVERRIDE warning
  • KT-59883 K2: Disappeared INVALID_IF_AS_EXPRESSION
  • KT-61823 K2: Render list of declarations in diagnostic messages with linebreak as separator
  • KT-65302 IrFakeOverrideBuilder - missing @EnhancedNullability
  • KT-65241 K2: [LT] Compiler crash on assignment expression with incorrect lvalue
  • KT-60006 K2: Disappeared EXPRESSION_EXPECTED
  • KT-65817 K2: Check if callable reference vararg adaption can be affected by primitive type aliases
  • KT-65920 K2: no field for delegation is created
  • KT-65487 K2: Different fake overrides and false positive NOTHING_TO_OVERRIDE for intersection/override with Collection.remove
  • KT-62931 K2: extra class files for @OptionalExpectation marked annotations
  • KT-59400 K2: Missing CANNOT_INFER_VISIBILITY
  • KT-65460 Don't compare order of functions in IR dump
  • KT-64276 [K/N][K2] K2 behaviorial difference with inconsistent inheritance of ObjCName
  • KT-65572 [K/N][K2] INCOMPATIBLE_OBJC_NAME_OVERRIDE error message changed from K1
  • KT-63879 K2: Redundant flag declaresDefaultValue for parameter of function inherited from delegate
  • KT-65790 K2: Move check for private-to-this visibility into checker
  • KT-65551 K2: Property redeclaration on native compilation leads to NotImplementedError
  • KT-65770 K2: Diagnostic rendering of vararg Foo parameter produces vararg Array<Foo>
  • KT-65555 K2: must override 'spliterator' because it inherits multiple implementations for it
  • KT-65337 K2: False positive UNRESOLVED_REFERENCE when lambda labeled by illegal label and operator-invoked
  • KT-65448 K2: fake overrides are not generated for 'containsAll', 'removeAll', 'retainAll' if inherited from raw type
  • KT-65298 K2: not nullable return type and parameter for raw types
  • KT-65706 K2: IrFakeOverrideBuilder: ISE "Fake override should have at least one overridden descriptor" on J-K-J-K hierarchy with interface delegation
  • KT-61798 K2 incorrectly calculates modality of property accessors
  • KT-65604 K2: INAPPLICABLE_JVM_NAME: effective modality
  • KT-65637 Prepare documentation for PCLA implementation
  • KT-49283 Support contribution type info from a nested builder inference call
  • KT-64077 K2: Builder inference ignores constraints from nested builder inference
  • KT-49160 Couldn't infer a type argument through several builder inference calls broken by a local class
  • KT-65057 K2: Wrong type inferred in code with heavy use of generics
  • KT-64309 Generate a variable mapping for continuation parameter in suspend methods just from the start
  • KT-61088 K2: return types of non-last-expression calls to @PolymorphicSignature methods inside try-expressions don't resolve to void when required
  • KT-65262 K2: Exception in DFA for combination of try-finally + PCLA + DI
  • KT-58169 K2: make equals bounded smart casts work the same as in K1
  • KT-64102 K2: Missing (disappeared in this case) DELEGATE_USES_EXTENSION_PROPERTY_TYPE_PARAMETER_ERROR
  • KT-63988 K2: Reflection cannot find type of local class of local class
  • KT-63901 K2: Different naming of inner class in metadata
  • KT-63655 K2: incorrect short class name in metadata for anonymous object inside a local class
  • KT-63737 Wasm: revise external declaration FE checker for WASI mode
  • KT-59782 K2: Forbid local delegated properties with private accessors in public inline functions
  • KT-64222 K2: "return type is not a subtype of the return type of the overridden member"
  • KT-63448 K2: CONFLICTING_INHERITED_JVM_DECLARATIONS with @JvmField
  • KT-59748 K2: Return type mismatch: expected Unit, actual Any? for when with an assignment in branch

Docs & Examples

  • KT-64710 [Docs] Update What's new for 2.0.0-BetaX

IDE. Gradle Integration

  • KT-65617 K/N project import fails if ~/.konan dir is empty

IR. Actualizer

  • KT-60847 K2: Fake overrides are incorrect after actualization
  • KT-63756 K2: "AssertionError: No such value argument slot in IrConstructorCallImpl" caused by actual typealias for annotation with default parameter

IR. Inlining

  • KT-66017 K2 / Native: "NoSuchElementException: Sequence contains no element matching the predicate" on building native release binaries
  • KT-64807 Refactor InlineFunctionResolver
  • KT-64806 Move FunctionInlining to separate module

IR. Tree

  • KT-66152 IrFakeOverrideBuilder: AssertionError "different length of type parameter lists"
  • KT-65971 K2: Investigate diagnostic test failures with IrFakeOverrideBuilder
  • KT-61360 Fix essential problems in IrFakeOverrideBuilder

JavaScript

  • KT-8373 JS: support ES6 as compilation target
  • KT-63907 KJS: default parameters in interfaces are lost in implementations
  • KT-64708 KJS: exported interfaces missing __doNotUseOrImplementIt when extending from external types
  • KT-62806 KJS: Type mismatch on inferred return type with Nothing
  • KT-64421 K2: Implement IrJsTypeScriptExportTestGenerated for K2
  • KT-61526 KJS: Compiled files clash with the new per-file granularity
  • KT-63359 K2: support new ways to declare TestResult in JS TestGenerator lowering
  • KT-65216 K2 JS: False positive JS_NAME_CLASH diagnostic on generic interface

Klibs

  • KT-33411 Kotlin/Native crashes if several libraries have declarations with the same FQ name
  • KT-44626 Umbrella issue: different kinds of klib IR linker error messages
  • KT-64440 K2: Port KotlinKlibSerializerTest to K2
  • KT-64452 K2: Port FilePathsInKlibTest to K2
  • KT-65723 K2: Signature clash diagnostic fails for parametrized function with Unsupported pair of descriptors
  • KT-65442 [klibs] header klibs: keep internal declarations and declarations inside inlines

Language Design

  • KT-65965 KMP: Parameter properties in constructor of external class
  • KT-64187 K2: False positive ABSTRACT_NOT_IMPLEMENTED caused by the fact that common code sees platform code of its dependencies
  • KT-65881 K2: Missing ITERATOR_MISSING in for loop on object
  • KT-65964 KMP: Private constructor in external classes
  • KT-61340 K2: Allowed smart cast in common which should be prohibited in platform
  • KT-51827 Inconsistent behavior with smartcast and protected members

Libraries

  • KT-54879 Add callsInPlace contract for more functions in stdlib
  • KT-65532 Stabilize experimental API for 2.0
  • KT-66102 Constructor-like function for creating AutoCloseable instances
  • KT-55777 Unresolved kotlin.AutoCloseable in JVM
  • KT-65590 Make CharSequence.isBlank idiomatic and improve its performance
  • KT-63219 Change root package and coordinates of kotlinx-metadata-jvm to kotlin.*
  • KT-65518 Memory leak in buildMap and in Wasm/Js/Native (Linked)HashMap
  • KT-65525 JS: Wrong return value of HashMap.keys.remove

Multiplatform Wizard

  • KT-66188 Update Compose for Desktop version to 1.6.0

Native

  • KT-65659 [K/N][K2] Typealiased kotlin.Throws isn't translated to NSError out param

Native. ObjC Export

  • KT-65863 Native: implement a flag to emit compiler errors on ObjCExport name collisions

Native. Swift Export

  • KT-65673 Expose parts of Kotlin/Native runtime to Swift export
  • KT-65668 Support for Unsigned Types
  • KT-65335 Swift Export: Remove KotlinSirOrigin hierarchy in favour of direct AA usage
  • KT-65672 Swift Export: import C bridges as Clang module

Native. Testing

  • KT-64393 Use Compiler Core test infrastructure for testing serialization diagnostics on Native
  • KT-65117 Implement IrBackendFacades for Kotlin/Native backend

Reflection

  • KT-65156 Calls to callBy that use default arguments fail with KotlineReflectionInternalError when the argument size is a multiple of 32 in a constructor that contains value class as a parameter

Tools. CLI

  • KT-65094 K2: Revise PerformanceManager reporting
  • KT-64989 Mark the whole diagnostic position range instead of only start position
  • KT-64608 K2: Wrong end position of compiler diagnostics

Tools. CLI. Native

Tools. Compiler Plugin API

  • KT-59555 Expose resource closing extension point in CompilerPluginRegistrar

Tools. Compiler Plugins

  • KT-65690 jvm-abi-gen: Remove internal declarations from ABI
  • KT-64590 jvm-abi-gen: Effectively private classes are not being removed from ABI
  • KT-63507 K2 / All-open plugin: "'open' has no effect on a final class" warning
  • KT-66208 PowerAssert: some built-in operators are not aligned correctly for some values
  • KT-65810 PowerAssert: Infix transformation doesn't capture full context
  • KT-65640 PowerAssert: Infix function not aligned correctly
  • KT-61993 K2: Synthetic file classes are generated with start offset of 0, causing errors during compilation
  • KT-63617 Add kotlin-power-assert to Kotlin repository

Tools. Fleet. ObjC Export

  • KT-65384 ObjCExport: class super name special case
  • KT-66380 ObjCExport: support interface implementation
  • KT-65670 ObjCExport: Naming: Support additional module based prefix
  • KT-64953 ObjCExport: Analysis-Api: enum
  • KT-65348 ObjCExport: Char as function return type
  • KT-65738 ObjCExport: Analysis-Api: Generate base declarations
  • KT-65204 ObjCExport: Analysis Api: Support nested classes
  • KT-65225 ObjCExport: implement KtCallableSymbol.isArray

Tools. Gradle

New Features

  • KT-62921 Add API to allow getting the version of the kotlinc compiler

Performance Improvements

  • KT-64353 Improve reuse of Build Tools Api's classloader

Fixes

  • KT-63619 Add Kotlin power-assert compiler plugin to feature usage statistics gathering
  • KT-64203 Throw exception when old build report properties are used
  • KT-66429 Move WASM stability warning to KGP Tooling Diagnostics and report it once per build
  • KT-63419 Deprecate 'kotlinOptions' DSL
  • KT-65952 PowerAssert: Update Gradle extension to be more idiomatic
  • KT-65951 PowerAssert: Add Gradle integration tests to compiler plugin
  • KT-66373 [Wasm, KGP] Npm is not configured for JS usagе for wasmWasi project
  • KT-66314 Build reports in JSON: property 'kotlin.build.report.json.directory' without value causes NPE
  • KT-64380 Add project diagnostics for deprecated properties
  • KT-65986 GradleDeprecatedOption.removeAfter does not actually remove arguments from the compilerOptions/kotlinOptions DSLs
  • KT-65768 Don't pass -Xfragment-sources for non-mpp compilations
  • KT-64378 Compatibility with Gradle 8.6 release
  • KT-65989 Compile against Gradle API 8.6
  • KT-65819 Build Gradle Plugins against Gradle 8.5 API
  • KT-65701 Limit Gradle daemon max memory in integration tests
  • KT-65568 Deprecate the ability to configure compiler options in KotlinCompilation
  • KT-64355 Add plugin variant for gradle 8.5
  • KT-62640 Compatibility with Gradle 8.5 release
  • KT-64504 Remove ownModuleName from AbstractKotlinCompile
  • KT-65708 Flaky tests because of ivy repos in Integration Tests
  • KT-56904 Enable warnings-as-error for Kotlin Gradle plugins compilation

Tools. Gradle. JS

  • KT-65870 KJS / Gradle: kotlinUpgradePackageLock fails making Yarn unusable

Tools. Gradle. Multiplatform

New Features

  • KT-66047 KMP: Isolate dependencies graph between main and test source sets
  • KT-65196 Add high-level DSL to configure compiler options in the multiplatform project

Fixes

  • KT-61078 K2: Compilation fails in FirSerializer trying to serialize nested class
  • KT-66372 KMP: JVM dependency can be downgraded by metadata dependency
  • KT-66514 Don't get output file from Cinterop task for IDE Import if host os doesn't support it
  • KT-66431 KMP: External Target Compilation friendArtifactResolver throws ClassCastException
  • KT-64995 KonanPropertiesBuildService is not compatible with Project Isolation
  • KT-63753 K2: File "does not belong to any module" when it is generated by registerJavaGeneratingTask in AGP
  • KT-65426 K2: Debug compilation fails because code from main source set included in two K2 fragments
  • KT-62508 Merge Android Source Sets into one K2 Fragment
  • KT-65187 Remove deprecated platform plugins ids
  • KT-63206 Deprecate eager CInteropProcess.outputFile in favor to lazy outputFileProvider

Tools. Gradle. Native

  • KT-65624 K/N warning: "The Kotlin/Native distribution used in this build does not provide the standard library." is displayed during configuration phase
  • KT-65823 Add downloading k/n dependencies to KotlinNativeProvider
  • KT-65985 Race condition during simultaneous execution of several native tasks
  • KT-64903 Add maven repo with dev versions into IT

Tools. Incremental Compile

  • KT-65943 Incorrect scopeFqName recorded in LookupTracker
  • KT-62101 IC: Execution failed for ClasspathEntrySnapshotTransform: when using tools.jar as dependency

Tools. Kapt

  • KT-65399 K2 QG: Kapt3 with K2 produces incorrect code
  • KT-44706 KAPT: @JvmRecord causes "Record is an API that is part of a preview feature"
  • KT-64391 Some K2 Kapt integration tests are being executed with K1
  • KT-65404 KAPT should print a warning if stub generation is triggered for an interface with method bodies but without -Xjvm-default=all or -Xjvm-default=all-compatibility
  • KT-65453 Kapt4: error "annotation @ParameterName is missing a default value for the element 'name'" for a composable lambda fun without parameters

Tools. Scripts

  • KT-65865 K2: Compile scripts in a separate session
  • KT-65967 Scripts in common source roots should be forbidden for now

Tools. Wasm

  • KT-64553 K/Wasm: enable binaryen by default in production builds
  • KT-66159 K/Wasm: applyBinaryen somehow affects skiko.mjs
  • KT-66228 K/Wasm 2.0.0-Beta4 distribution doesn't contain all files
  • KT-65889 wasmJsBrowserDistribution doesn't copy wasm binaries to dist folder
  • KT-65686 K/Wasm: Binaryen and d8 have to be downloaded via the same mechanism as Node.js and Yarn
  • KT-58291 Wasm: --tests argument is ignored when running wasmBrowserTest

v1.9.23

1 month ago

1.9.23

Apple Ecosystem

  • KT-65542 Cinterop tasks fails if Xcode 15.3 is used

Backend. Wasm

  • KT-64486 Kotlin/Wasm/WASI exported function callback for coroutines support

Compiler

  • KT-53478 Could not load module <Error module>
  • KT-66044 JDK's new API is used over Kotlin's SDK functions
  • KT-64640 Prevent mutating SequenceCollection methods from JDK 21 be available on read-only collections
  • KT-65441 K1: Remove JDK 21 getFirst()/getLast() in (Mutable)List interfaces
  • KT-65634 K/N: data race during monolithic cache creation
  • KT-53109 CompilationErrorException generateUnboundSymbolsAsDependencies with builder inference and lambdas
  • KT-52757 Type inference for builders fails if inferred from a function

Tools. Gradle

  • KT-65792 Add JSON build report
  • KT-65091 Update compiler metrics in build reports
  • KT-62490 KGP dropping resource directories

Tools. Gradle. JS

  • KT-64119 K/JS: Migrate package manager from Yarn onto NPM
  • KT-64561 K/JS tests are not executed after upgrade to 1.9.22

Tools. Gradle. Multiplatform

  • KT-65954 commonTest dependencies affect commoMainMetadata compilation

Tools. Gradle. Native

  • KT-64573 Default value for produceUnpackedKlib was not provided

v2.0.0-Beta4

2 months ago

Changelog

Analysis. API

Performance Improvements

  • KT-64987 Analysis API: 50GB memory allocation on creating empty kotlinx.collections.immutable.persistentMapOf

Fixes

  • KT-65268 K2: Checking the presence of the delegated constructor call forces AST loading
  • KT-63330 Analysis API: Stub-based deserialized symbol providers provide unresolved enum entry annotation arguments
  • KT-65418 Analysis API: LLFirAbstractSessionFactory loads anchor module sessions eagerly
  • KT-64718 Analysis API: do not expose SealedClassInheritorsProvider and FirRegularClass to IDE Plugin
  • KT-65075 K2: getContainingDeclaration() is broken for declarations inside code fragments
  • KT-61332 Support KtTypeCodeFragment in PsiRawFirBuilder
  • KT-65150 AA: incorrect result from KtTypeProvider#getReceiverTypeForDoubleColonExpression for Java static method
  • KT-55750 LL FIR: Implement multi-threaded resolve
  • KT-56551 LL FIR: implement parallel resolve for jumping phases
  • KT-65223 Psi: avoid KtFile usages
  • KT-65307 Analysis API FE10: support KtFe10AnalysisSessionProvider.getAnalysisSessionByUseSiteKtModule
  • KT-62695 K2 IDE: Unresolved extension functions in KDoc
  • KT-65152 Analysis API: KDoc references to packages are not fully resolved
  • KT-64988 K2 IDE: Navigation from the named argument in safe call does not work
  • KT-64074 K2: Investigate LL divergence for Script.testTopLevelPropertyInitialization
  • KT-64921 K2 IDE: references in platform code resolve to expect classifier instead of actual
  • KT-62441 K2: IDE K2: "No dangling modifier found"
  • KT-64528 K2 IDE: MPP: unregistered component 'org.jetbrains.kotlin.fir.scopes.impl.FirDelegatedMembersFilter'
  • KT-64993 Analysis API: KtExpressionTypeProvider.getExpectedType works incorrectly for arguments of safe calls
  • KT-64883 Allow direct creation of KtCommonFile
  • KT-64646 K2: properly forbid ast loading during raw fir phase in tests
  • KT-64862 Psi: missed parenthesis in type reference presentation
  • KT-62893 K2 IDE. FP 'when' expression must be exhaustive with Java sealed interface from library
  • KT-63795 K2: lazyResolveToPhase(BODY_RESOLVE) cannot be called from a transformer with a phase BODY_RESOLVE from SealedClassInheritorsProviderIdeImpl

Analysis. Light Classes

  • KT-65425 K2 IDE: Seeing a reference to the class generated by compiler plugin exposed from Java code caused NPE from light classes
  • KT-64937 SLC: internal setters are not mangled

Apple Ecosystem

  • KT-63212 podInstall task fails without a proper diagnostic when xcodeproj gem is outdated

Backend. Wasm

  • KT-63939 Kotlin/Wasm Support lazy associated object initialisation
  • KT-64803 K/Wasm: non-capturing lambdas are not singleton unlike same lambdas in jvm
  • KT-64449 K2: Implement K1WasmWasiCodegenBoxTestGenerated for K2
  • KT-64829 K/Wasm: division remainder has a wrong sign
  • KT-65009 Generate TypeScript definitions for the @JsExport declarations in K/Wasm

Compiler

New Features

  • KT-63670 Implement platform specific declaration clash diagnostics across all backends
  • KT-62547 Introduce a language feature flag for smartcasts based on "memory" variables

Fixes

  • KT-63344 K2: False positive ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED
  • KT-58845 K2: SAM checker can run incorrectly in presence of an expect supertype
  • KT-61843 K2: Missing TYPE_MISMATCH for nested array literals
  • KT-61798 K2 incorrectly calculates modality of property accessors
  • KT-65255 K2 / KJS: "IllegalArgumentException: Candidate is not successful, but system has no contradiction"
  • KT-65341 K2: "Cannot find cached type parameter by FIR symbol" caused by not-null assertion operator inside string in throw
  • KT-49283 Support contribution type info from a nested builder inference call
  • KT-64077 K2: Builder inference ignores constraints from nested builder inference
  • KT-49160 Couldn't infer a type argument through several builder inference calls broken by a local class
  • KT-61310 K2: "Not enough information to infer type variable R" for transformLatest
  • KT-63733 Builder-style type inference can't resolve to extension overloads when they're more applicable than member ones
  • KT-57707 K1: inconsistent TYPE_MISMATCH in builder inference
  • KT-55057 Builder inference changes behaviour sporadically based on BI annotation on unrelated call
  • KT-60663 Builder inference does not work inside a nested unrelated builder inference lambda
  • KT-53639 TYPE_MISMATCH: compiler can't infer the list's type when using buildList {} builder or Collection#isNotEmpty
  • KT-60291 K2: "IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter T" during FIR serialization
  • KT-65033 K2: Fir2LazyIr: Lazy type aliases not supported
  • KT-57709 Inconsistent extension function call resolution in builder inference
  • KT-53740 Builder inference with multiple lambdas leads to unsound type
  • KT-60877 Builder inference from the null literal results in Nothing instead of Nothing? for producing positions of the postponed type variable
  • KT-53553 Builder inference: inconsistent types in different lambda scopes
  • KT-54400 K2: builder inference does not work with assignments of literals to member properties
  • KT-53109 CompilationErrorException generateUnboundSymbolsAsDependencies with builder inference and lambdas
  • KT-52757 Type inference for builders fails if inferred from a function
  • KT-63840 Builder inference fails on calls to identity-shaped functions with postponed type variables inside select-constructions
  • KT-64276 [K/N][K2] K2 behaviorial difference with inconsistent inheritance of ObjCName
  • KT-59782 K2: Forbid local delegated properties with private accessors in public inline functions
  • KT-65482 K2: NoSuchFieldError due to using unboxed type
  • KT-63208 K2: Implement deprecation cycle and fix missing errors for error-level nullable arguments of warning-level Java types
  • KT-64891 K2: consider supporting/forbidding foo.(bar)() syntax
  • KT-62134 K2: handle non-simple types during FirStatusResolver.isPrivateToThis check
  • KT-65290 K2: No override for FUN DEFAULT_PROPERTY_ACCESSOR
  • KT-65111 K2: Java star imports don't work in KJK interdependencies
  • KT-59012 K2: Support inferring types based on self upper bounds
  • KT-65373 K2: there is a crash in KJK hierarchy with an extension member property
  • KT-65277 IrFakeOverrideBuilder: NPE from IrJavaIncompatibilityRulesOverridabilityCondition.doesJavaOverrideHaveIncompatibleValueParameterKinds
  • KT-62884 K2: different signature of delegate object for generic extension property
  • KT-59630 K2: Implement running FIR Blackbox tests on different JDKs
  • KT-64944 Can't assign null after early return smart cast with typed destructive assignment
  • KT-64910 K2: AA FIR: KtCall's argument mapping misses SAM conversion argument
  • KT-64846 K2: false negative CONFLICTING_JVM_DECLARATIONS on inheritance from Java collection subclass with a conflicting override
  • KT-60732 K2 Scripting: TeamCity DSL test
  • KT-65165 K2: "ClassCastException: class java.lang.String cannot be cast to class SampleClass"
  • KT-64982 K2: false negative FUNCTION_CALL_EXPECTED
  • KT-64872 K2: do-while condition able to access uninitialized variable
  • KT-65318 K2: Substitution stackoverflow on jspecify @NullMarked superclass
  • KT-65010 Kotlin/Native: code generation for a static field is failing
  • KT-59921 K2: Disappeared NULL_FOR_NONNULL_TYPE
  • KT-57299 K2: VerifyError due to overriding final method size on a subclass of Collection and Set
  • KT-57300 K2: subclass of MutableCollection with primitive element type has methods with boxed type
  • KT-58279 K2. False-negative Smart cast to is impossible, because is a public API property declared in different module for Java static field
  • KT-64706 K2: Type inference cannot resolve nullable @Composable lambda
  • KT-65058 K2: Protected function call from public-API inline function is prohibited in anonymous object
  • KT-53629 K2: forbid multiple labels per statement
  • KT-65316 K2: False positive USAGE_IS_NOT_INLINABLE for expression labeled with illegal label
  • KT-57268 K2: extra methods remove and/or getOrDefault are generated for Map subclasses with JDK 1.6 in dependencies
  • KT-63151 K2: Assignment within function lambda should invalidate contract DFA implications
  • KT-63351 K2. No smart cast with not-null assertion operator after a safe call
  • KT-65324 atomicfu-plugin: top-level delegated properties cause NPE
  • KT-60246 K2: origin is not set for getting array element operator
  • KT-64387 K2: Missing POSTFIX_INC/DEC origin for array element inc/dec
  • KT-61891 K2: POSTFIX_{INCR|DECR} of global misses an origin
  • KT-65019 K2: unexpected exception when executing inc/dec in finally block on WASM
  • KT-64392 Factor out KLIB serialization logic from the backend.native module
  • KT-65270 K2: Missing ACTUAL_WITHOUT_EXPECT when expect is fake-override
  • KT-60367 K2: Support EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE diagnostics
  • KT-62704 Absent testrunner FirLightTreeDiagnosticTestSpecGenerated
  • KT-65044 K2 compiler crash on unresolved delegated extention receiver
  • KT-65021 K2: Missing error and miscompilation in destructuring declaration delegation
  • KT-63899 K2: Vararg parameter misses annotation in metadata
  • KT-60175 JVM IR inline: accidental reification of typeOf type argument
  • KT-60174 JVM IR inline: accidental reification in various cases
  • KT-65103 K2: IllegalArgumentException: IrErrorCallExpressionImpl(5388, 5392, "Unresolved reference: R?C|/cont|") found but error code is not allowed
  • KT-64635 K2: "KotlinIllegalArgumentExceptionWithAttachments: Expected expression 'FirAnonymousFunctionExpressionImpl' to be resolved" when provideDelegate is extension of function with receiver
  • KT-63434 K2. False positive Cannot access with protected nested classifiers references inside anonymous object inherited from containing class
  • KT-64314 K2: Rename FirConstExpression to FirLiteralExpression
  • KT-63577 K2: false-positive "wrong number of type arguments" error on callable reference to member of generic function's local class
  • KT-64975 FIR: Deserialize enum entry annotation arguments from binary libraries with lookup tags instead of symbols
  • KT-61626 K2: Module "com.soywiz.korlibs.kmem:kmem" has a reference to symbol korlibs.memory/Buffer|null[1]
  • KT-64268 K2: Data-flow from nested lambda not passed to outer lambda
  • KT-59729 K2: Investigate CFG buildings for inner lambdas in case of double-lambda builder inference
  • KT-64841 K2: argument type mismatch with type parameter with recursive bound
  • KT-62554 K2: incorrect "inherits multiple implementations" error when base Java method takes a parameter of primitive wrapper type
  • KT-65093 K2: Super constructor call able to access uninitialized object fields
  • KT-56489 K2 allows reading uninitialized variable in object declaration
  • KT-59987 K2: Disappeared REIFIED_TYPE_FORBIDDEN_SUBSTITUTION
  • KT-36786 Smartcast doesn't work in case of property infix call
  • KT-65056 IrFakeOverrideBuilder: ISE "No override for FUN" on package-private Java method in K-J-K hierarchy
  • KT-62045 IrFakeOverrideBuilder: incorrectly merged fake overrides for Java methods accepting wrapper Double and primitive double
  • KT-57640 [K2/N] Investigate behaviour for intersection overrides for properties that have incompatible types
  • KT-59682 K2: Use proper source for vararg arguments
  • KT-63781 K2: Generated blocks appear in the IR
  • KT-63779 K2: Regression for locations of 'if' statements
  • KT-63624 K2: incompatible declaration because of different visibility
  • KT-64400 K2: allow to use simple boolean expressions as constants
  • KT-59972 K2: Disappeared EXPRESSION_EXPECTED_PACKAGE_FOUND
  • KT-63256 K2: NOT_IDENTITY operator call is illegal in contract description
  • KT-63529 K2: Compiler does not detect tailrec call with nullable type
  • KT-65012 IR Evaluator: NoSuchFieldException when evaluating protected/private fields of superclasses
  • KT-64871 IrFakeOverrideBuilder: ISE "no override for " on HashMap subclass
  • KT-60262 Support for inter-module interaction for @SubclassOptInRequired
  • KT-58739 K2: Rewrite CallableId.classId to be thread-safe
  • KT-64979 K2: Missing REDUNDANT_TYPE_PARCELER when using type alias
  • KT-60019 K2: Introduced PARCELER_TYPE_INCOMPATIBLE
  • KT-62500 K2: origin=GET_PROPERTY is wrongly set to GET_FIELD of backing field inside property's own getter
  • KT-64743 K2: Non-expanded type serialized in metadata
  • KT-64405 K2: Implement CompileJavaAgainstKotlinTestGenerated for K2
  • KT-64837 K2: NPE in fir2ir when generic transitive dependency class is missing
  • KT-60258 Support java-kotlin interop for @SubclassOptInRequired
  • KT-60260 K2: Implicit coercion to unit is not generated in adapted function reference
  • KT-60858 Remove redundant createDeprecatedAnnotation necessary to workaround kotlinx-serialization compilation with native
  • KT-64432 Unbound symbol access in Fir2Ir fake override builder
  • KT-64466 K2: Delegated method annotations are not copied in IR
  • KT-63589 K1: Unsound type inference for unbound callable reference to star-projected class's generic mutable property
  • KT-61032 K2: False positive “Unused variable” for function callable reference
  • KT-64832 K2: False positive "Unused variable" checker report on suspend functional types, on overloaded functional types and on custom invoke operator types
  • KT-64609 K2: INAPPLICABLE_TARGET_PROPERTY_IMMUTABLE diagnostic is missed for primary constructor properties
  • KT-61937 K2: implicit script receiver from ScriptDefinition are not visible for invoke
  • KT-27936 Write InnerClasses attribute for all class names used in a class file
  • KT-31367 IllegalStateException: Concrete fake override public open fun (...) defined in TheIssue[PropertyGetterDescriptorImpl@1a03c376] should have exactly one concrete super-declaration: []

Docs & Examples

  • KT-63001 K2: Organize team-wide talks about new FIR2IR & PCLA

IR. Actualizer

  • KT-65274 IrFakeOverrideBuilder: ISE: "IrFieldPublicSymbolImpl is already bound"
  • KT-65236 IrFakeOverrideBuilder: ISE: "should not be called"
  • KT-65116 K2: IrFakeOverrideBuilder: "No override for FUN" if the function has already been overridden by another class in K <- J<- K <- J hierarchy
  • KT-65499 IrFakeOverrideBuilder: ISE IrSimpleFunctionPublicSymbolImpl is already bound for irrelevant 'remove' clashing with a function from Java collection subclass
  • KT-64150 IrFakeOverrideBuilder: Fake overrides for static java functions are not generated
  • KT-65432 IrFakeOverrideBuilder - No override for FUN IR_EXTERNAL_JAVA_DECLARATION_STUB name:elementData
  • KT-64895 K2:IrActualizer corrupts attributeOwnerId value

IR. Inlining

  • KT-64868 [K/N] Inlined assert is later not removed, even without -ea

IR. Tree

  • KT-64974 Consolidate visibility checks in IrFakeOverrideBuilder

JavaScript

  • KT-34995 JS: List, Map, and Set types are hard to use from JS because of mangled member names
  • KT-64548 KJS / K2: "Cannot find delegated constructor call" caused by external classes constructors
  • KT-63359 K2: support new ways to declare TestResult in JS TestGenerator lowering
  • KT-44871 Add @JsExport and @JsName annotations to stdlib classes (especially collections) to avoid method name mangling and improve Kotlin usability from JS
  • KT-64867 K2 JS: Name clash between constructors with same JsName but in different classes
  • KT-64463 KJS / K2: "Name contains illegal chars that cannot appear in JavaScript identifier" caused by non-ASCII character
  • KT-65168 Introduce an ability to create type-safe JS objects

KMM Plugin

  • KT-59270 Update wizards in KMM AS plugin after 1.9.20 release

Klibs

  • KT-65063 Clashing KLIB signatures from different modules result in an exception
  • KT-61143 [klib tool] Dump IR with unbound symbols

Language Design

  • KT-58881 K2: Run checkers in common code against platform session
  • KT-64187 K2: False positive ABSTRACT_NOT_IMPLEMENTED caused by the fact that common code sees platform code of its dependencies
  • KT-62959 Value of captured type is not a subtype of the same captured type
  • KT-64739 Mark @SubclassOptInRequired as an experimental

Libraries

  • KT-63397 kotlin-test should declare runtime dependency on "org.junit.platform:junit-platform-launcher"
  • KT-65242 Update transitive dependencies of JVM test frameworks in kotlin-test
  • KT-63355 Detect concurrent modifications in ArrayDeque
  • KT-57150 Consider introducing Common protected property AbstractMutableList.modCount
  • KT-64956 Implement optimized removeRange for ArrayDeque
  • KT-57151 Consider introducing Common protected function AbstractMutableList.removeRange
  • KT-58039 Wasm: Implement unsigned numbers using wasm builtin capabilities
  • KT-63714 K2: kotlinx-benchmarks fails with "Unable to find method ''org.gradle.api.tasks.TaskProvider" with register("js")

Native

  • KT-64249 Native: Implicit cache directory search is O(n^2)

Native. C and ObjC Import

  • KT-64105 [K2/N] cannot access Objective-C forward declared class used only in a dependent lib

Native. Runtime

  • KT-65170 Kotlin/Native: deprecate -Xworker-exception-handling=legacy with error

Native. Runtime. Memory

  • KT-63423 Kotlin/Native: huge dispose-on-main overhead
  • KT-64313 Kotlin Native: Seg Fault during Garbage Collection on 1.9.21 (observed on iOS)

Reflection

  • KT-57972 Reflection: "KotlinReflectionInternalError" when using callBy with overridden function in inline class

Tools. CLI

  • KT-64608 K2: Wrong end position of compiler diagnostics

Tools. Commonizer

  • KT-64376 Commonizer incorrectly retains UnsafeNumber annotation in target sets where it shouldn't

Tools. Compiler Plugins

  • KT-64591 Data class' copy method is never stripped from ABI
  • KT-59074 K2: false-positive MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT if allOpen plugin is used and a val is defined with init {} block
  • KT-64589 jvm-abi-gen: Order of class members affects ABI jar
  • KT-65072 jvm-abi-gen: SourceDebugExtension annotation isn't stripped along with corresponding attribute
  • KT-64971 Exception is thrown when compiling kotlinx.coroutines to Native because of the new signature clash diagnostics
  • KT-54025 [K2] [NONE_APPLICABLE] compiler error in case @ AllArgConstructor annotation is used together with a static field
  • KT-54054 [Lombok] An extra unneeded constructor parameter is expected by compiler if java class annotated with @ AllArgsConstructor and has private final initialized field

Tools. Daemon

  • KT-64283 Configure correct JVM arguments when starting the daemon

Tools. Fleet. ObjC Export

  • KT-65108 ObjCExport: Tests: Check if 'requirePlatformLibs' is necessary
  • KT-65281 ObjCExport: AA: Run already passing Unit Tests on CI
  • KT-65080 ObjCExport: Analysis-Api: error handling
  • KT-64952 ObjCExport: Analysis-Api: object
  • KT-64869 ObjCExport: Analysis-Api: Support 'MustBeDocumented' annotations
  • KT-64839 ObjCExport: Enable tests on CI for aggregate
  • KT-64888 ObjCExport: Analysis Api: Support exporting KDoc

Tools. Gradle

  • KT-62639 Compatibility with Gradle 8.4 release
  • KT-65143 Use the new ConfigurationContainer dependencyScope method to create dependency declaration configurations
  • KT-64848 Log K/Native compiler arguments with log level specified for compiler arguments
  • KT-65213 Collect logic for FUS metrics calculation in one place
  • KT-61698 Compiler options configured inside metadata {} target set up all targets in a project
  • KT-59024 Compatibility with Gradle 8.3 release
  • KT-60664 Gradle 8.3: KGP eagerly creates compile task

Tools. Gradle. JS

  • KT-64119 K/JS: Migrate package manager from Yarn onto NPM
  • KT-65295 Gradle: K/N and K/JS tests may produce unrequested TeamCity service messages

Tools. Gradle. Multiplatform

  • KT-61943 Mark the checkKotlinGradlePluginConfigurationErrors as UP-TO-DATE when possible
  • KT-61559 Include stdlib and platform dependencies to KotlinNativeCompilation.compileDependencyFiles API
  • KT-65196 Add high-level DSL to configure compiler options in the multiplatform project
  • KT-61430 K2/KMP: metadata compilation fails with Unresolved reference for property in actual class

Tools. Gradle. Native

  • KT-49268 Only download Kotlin/Native Compiler when there are valid targets
  • KT-52567 Use Gradle dependency management for downloading Kotlin/Native compiler when compiling with Gradle
  • KT-64903 Add maven repo with dev versions into IT
  • KT-51255 Kotlin/Native should not download compiler artifacts when not necessary
  • KT-58303 Kotlin multiplatform Gradle plugin downloads Kotlin/Native compiler during configuration

Tools. JPS

  • KT-65043 JPS dumb mode should respect maps needed for the compiler

Tools. Kapt

  • KT-65684 KAPT: (Re)enable fallback to K1 KAPT and make it default
  • KT-61080 Kapt: investigate suspicious check for KMutableMap.Entry in KaptTreeMaker
  • KT-64479 Kapt4 + Compose. Error: scoping construct cannot be annotated with type-use annotation: @androidx.compose.runtime.Composable

Tools. Wasm

  • KT-64851 Wasm. Support Gradle configuration cache

v2.0.0-Beta3

3 months ago

Changelog

Analysis. API

Fixes

  • KT-62895 K2 IDE. FP 'when' expression must be exhaustive with sealed interface from library
  • KT-64805 Analysis API: introduce common entry point for multi-file test cases
  • KT-64714 K2: Analysis API: CollectionsKt.map doesn't resolves from Java in kotlin repo
  • KT-64647 K2: Allow to calculate decompiled inheritors for sealed classes in tests
  • KT-64595 AA: stackoverflow while simplifying a type with a recursive type parameter
  • KT-64825 Analysis API. Cannot compute containing PSI for unknown source kind 'org.jetbrains.kotlin.KtFakeSourceElementKind$DefaultAccessor' exception on getContainingSymbol call for default setter parameter
  • KT-64080 K2: Analysis API: On-air resolve does not trigger resolution of delegated super call arguments
  • KT-64243 K2: proper lazy resolution for fake overrides
  • KT-62891 K2 IDE. FP [EXPOSED_FUNCTION_RETURN_TYPE] on overriding library method which returns protected type
  • KT-61890 Analysis API: Migrate KtFirScopeProvider to ContextCollector instead of onAirResolve
  • KT-64197 K2: Code fragments are only supported in JVM
  • KT-64604 K2: IDE K2: "Modules are inconsistent during performance tests"
  • KT-62357 K2 IDE. False positive on generated component methods and false negative on getter of @JvmRecord classes in Java
  • KT-62892 K2 IDE. Java outer class from other module is not resolved when nested class is accessed with fq name in a type position
  • KT-62888 K2 IDE. IDE infers reference to KMutableProperty as reference to just KProperty
  • KT-64584 K2: StubBasedFirDeserializedSymbolProvider: support deserialization of delegated declarations
  • KT-60324 K2 IDE: "NoSuchElementException: List is empty at JavaOverrideChecker#buildErasure"
  • KT-62896 K2 IDE. FP ABSTRACT_MEMBER_NOT_IMPLEMENTED on inheriting class from library which implements interface by delegation
  • KT-62947 Analysis API: Error while resolving FirPropertyImpl
  • KT-64468 Analysis API: Implement mixed multi-module tests which support different kinds of KtModules
  • KT-63547 K2 IDE. False Positive AMBIGUOUS_ANNOTATION_ARGUMENT
  • KT-62832 K2: ClassCastException: FirDeclarationStatusImpl cannot be cast to FirResolvedDeclarationStatus
  • KT-64205 Analysis API: Do not import non-top-level callables by default
  • KT-63056 K2: Cannot mutate an immutable ImplicitReceiverValue on FirCodeFragment analysis
  • KT-64108 K2: KtFirSymbolDeclarationOverridesProvider shouldn't provide fake overrides
  • KT-63752 K2: java.lang.StackOverflowError FirFieldSymbol.getHasInitializer
  • KT-63718 Analysis API: Stub-based dependency symbol providers of library source sessions compute the wrong package name sets
  • KT-64186 Analysis API: ContextCollector provides incorrect scopes for anonymous objects
  • KT-63979 K2 IDE: presentation of types in completion is too verbose
  • KT-63681 K2: LL FIR: Improve isResolved check coverage of after lazy resolution

Analysis. Light Classes

  • KT-63087 K2 IDE: in .java source reference to JvmName names on unsigned type / value class are unresolved
  • KT-64605 K2 IDE: usage of @Repeatable annotation in Java: false positive "Duplicate annotation"
  • KT-64795 SLC: distinguish last v.s. non-last vararg value parameter type during binary resolution
  • KT-61605 K2 IDE: Light elements do not obey platform contracts
  • KT-57536 SLC: no need to populate members with expect modifier
  • KT-63949 K2 IDE. Analyze hang on @Autowired constructor analysis
  • KT-64320 Decouple kotlin psi from java PSI
  • KT-64282 Decouple KotlinIconProviderService from java PSI

Apple Ecosystem

  • KT-63821 Copy framework to BUILT_PRODUCTS_DIR in the embedAndSign task

Backend. Wasm

  • KT-58852 WASM: two methods with different varargs: Class korlibs.template.dynamic.DynamicShape has 2 methods with the same signature [register(kotlin.Array<T of kotlin.Array>)

Compiler

New Features

  • KT-4113 Smart casts for properties to not-null functional types at invoke calls

Fixes

  • KT-64261 K2 / WASM: Extension function with star projection throws "RuntimeError: unreachable"
  • KT-64877 K2: PCLA doesn't allow infer types from value parameter having TV type
  • KT-63932 K2/Native codegen test failures around builder inference
  • KT-64222 K2: "return type is not a subtype of the return type of the overridden member"
  • KT-57094 K1: wrong type inferred for an instance of a local class inside a generic property
  • KT-62069 K2: ASSIGNMENT_TYPE_MISMATCH is reported in addition to NO_ELSE_IN_WHEN
  • KT-62776 FirLazyResolveContractViolationException: "lazyResolveToPhase(STATUS) cannot be called from a transformer with a phase TYPES" on Java annotation usage
  • KT-60056 K2: Introduced UNRESOLVED_REFERENCE
  • KT-59791 K2: Implement partially constrained lambda analysis
  • KT-42020 Psi2ir: IllegalStateException: "IrSimpleFunctionPublicSymbolImpl for public [...] is already bound" on generic function whose substitution leads to IdSignature clash
  • KT-64771 Investigate subtle FIR_DUMP difference for reversed order analysis
  • KT-62584 K2: different signature in subclass of local class declared in extension value getter
  • KT-64615 Inconsistent error messages for platform type nullability assertions
  • KT-59938 K2: Disappeared AMBIGUOUS_ACTUALS
  • KT-64501 K2: False-positive WRONG_INVOCATION_KIND when using default arguments
  • KT-64640 Prevent mutating SequenceCollection methods from JDK 21 be available on read-only collections
  • KT-63644 K2: Create special IR symbols for fake-overrides in fir2ir in mode with IR f/o generator
  • KT-62476 K2: Enable building fake overrides by ir on non-JVM targets
  • KT-63638 K2: Compiler crashes with "Inline class types should have the same representation"
  • KT-36220 NI: false positive NON_APPLICABLE_CALL_FOR_BUILDER_INFERENCE if one use cannot resolve
  • KT-64121 K2: Actual modifier is missed on override fun toString() fro value class in native
  • KT-63703 K2: Eliminate call to Candidate.usesSAM and samResolver.getFunctionTypeForPossibleSamType in AbstractConeCallConflictResolver.toTypeWithConversion
  • KT-64435 K2: FIR2IR: Source offsets for data class members are inconsistent with PSI2IR
  • KT-64090 K2: false-positive new inference error on invoking from another module a generic function on Java list type with wildcard type argument bounded by raw-typed Java inner class
  • KT-64044 K2: Java mapped method should have a source from Java method, not from mapped Kotlin source class
  • KT-46674 ClassCastException with smartcast if plus operator returns a different type
  • KT-59369 K2: Missing BUILDER_INFERENCE_STUB_RECEIVER
  • KT-64644 K2: Compiler crash in FirTypeParameterBoundsChecker
  • KT-64312 K2: FirPropertySymbol.hasBackingField() always returns true for properties from other modules
  • KT-64420 K2: Wrong module descriptor for builtin classes
  • KT-64127 K2: incorrect resolution of inherited members on Java classes inheriting classes from different packages in the presence of identically named classes in the same packages
  • KT-63446 IrFakeOverrideBuilder: AbstractMethodError due to missing bridge for generic method in a Java superclass
  • KT-63441 IrFakeOverrideBuilder: "accidental override" when implementing a Java function taking an array parameter
  • KT-63867 K2: Smartcast is allowed inside changing lambda with cycles
  • KT-63414 K2 / Contracts: false positive "Result has wrong invocation kind" when invoking a function returning a value with contract InvocationKind.EXACTLY_ONCE and try/finally
  • KT-63777 K2: Smartcast is allowed inside changing lambda with bounds
  • KT-64059 K2: CYCLIC_INHERITANCE_HIERARCHY while using nested annotation in an outer class declaration
  • KT-63528 K2: Missing UNNECESSARY_SAFE_CALL for warning level annotated java declarations
  • KT-64607 K2: extension functions on UInt and Number lead to JVM ClassCastException
  • KT-62816 K2: Annotation use site targets printing could be improved in diagnostics' messages
  • KT-62815 K2: FIR renderings leak through some diagnostics' message
  • KT-35289 Confusing warning message "Duplicate label in when"
  • KT-49084 Contracts: error message is unclear
  • KT-63228 K2: Upper bound violation diagnostic renders compiler internals about SourceAttribute
  • KT-62386 K2: Proofread quotes in diagnostic messages
  • KT-64081 K2: Incorrect smartcast candidate calculation in MemberScopeTowerLevel
  • KT-63994 K2: Investigate K2 failures in IntelliJ-Rust plugin
  • KT-58767 Inheritance opt-in enforcement via @SubclassOptInRequired can be avoided with type aliases
  • KT-63941 K2: "IllegalStateException: Unsupported compile-time value STRING_CONCATENATION" caused by class reference in string expression as annotation parameter
  • KT-59818 K2: Explore the TODO about suspend functions overridden in Java in FirHelpers
  • KT-63233 K2 : false negative Class is not abstract and does not implement abstract member with abstract suspend function
  • KT-63379 K2. Argument type mismatch on creating functional interface instance with function literal as an argument with in type projection
  • KT-64308 K2: prefer call with Unit conversion at lower level to one without Unit conversion at upper level
  • KT-64307 K2: prefer function with default arguments at lower level to one without them at upper level during callable reference resolve
  • KT-64306 K2: prefer SAM at lower level to a functional type at upper level
  • KT-63827 K2: Array += desugaring doesn't have origin
  • KT-64341 Kotlin/JVM: Missing line number generation for intrinsic comparisons
  • KT-64238 Add proper documentation to the IdeCodegenSettings class
  • KT-63667 K2/KMP: exception when expect property matched to java field
  • KT-63563 K2: False negative RETURN_TYPE_MISMATCH with empty return
  • KT-62525 K2: IllegalStateException: Can't find KotlinType in IrErrorType: IrErrorType(null)
  • KT-57427 Fix inconsistencies in name manglers that use different declaration representations
  • KT-57755 K2/JVM: Fix computing a "signature" mangled name for the main function
  • KT-63645 K2: Replace special f/o symbols with normal ones after actualization
  • KT-63076 K2: change in behavior for synthetic properties in Kotlin-Java hierarchy
  • KT-63723 Frontend manglers improperly handle error type
  • KT-63738 K2: Some declarations are missing in the hierarchy of overridden symbols
  • KT-62242 K2: Uniformly treat enum entries as anonymous objects
  • KT-62281 K2: build DuckDuckGo Android user project and pass it to CI
  • KT-60266 K2: origin is not set for FOR_LOOP_ITERATOR
  • KT-59875 K2: Disappeared UNRESOLVED_REFERENCE_WRONG_RECEIVER
  • KT-62715 K2: Missing WASM_IMPORT_EXPORT_UNSUPPORTED_PARAMETER_TYPE
  • KT-62723 K2: Missing WASM_IMPORT_ON_NON_EXTERNAL_DECLARATION
  • KT-62722 K2: Missing NESTED_WASM_IMPORT
  • KT-62721 K2: Missing WASM_EXPORT_ON_EXTERNAL_DECLARATION
  • KT-62720 K2: Missing JS_AND_WASM_EXPORTS_ON_SAME_DECLARATION
  • KT-62719 K2: Missing NESTED_WASM_EXPORT
  • KT-62718 K2: Missing WASM_IMPORT_EXPORT_UNSUPPORTED_RETURN_TYPE
  • KT-62717 K2: Missing WASM_IMPORT_EXPORT_PARAMETER_DEFAULT_VALUE
  • KT-62716 K2: Missing WASM_IMPORT_EXPORT_VARARG_PARAMETER
  • KT-60225 K2: compiler FIR symbol resolution crash on a call to an extension function whose receiver contains a type parameter with a recursive upper bound
  • KT-63530 K2: Disable passing data flow info from in-place lambdas
  • KT-60958 K2: smart cast does not work with definite return from if block
  • KT-60090 K2: Introduced DEPRECATED_PARCELER
  • KT-59949 K2: Disappeared DEPRECATED_PARCELER
  • KT-61768 Wrong bytecode index in LineNumberTable when there is an incremental operation
  • KT-64045 K2: "Expect declaration * is incompatible with actual" when function parameter names are different
  • KT-62018 K2: prohibit suspend-marked anonymous function declarations in statement positions
  • KT-63973 K2: "NoSuchElementException: Array is empty" with vararg used within tail recursive function
  • KT-63612 K2: Class is not abstract and does not implement abstract member
  • KT-61792 KMP: Backend error on @Deprecated usage with DeprecationLevel.HIDDEN in K2
  • KT-63709 K2: Argument smartcasting impacting receiver and call resolution for implicit invoke
  • KT-57788 Fix computing mangled names of types with @EnhancedNullability from IR-based declaration descriptors
  • KT-63249 K2: change in annotation resolve when ambiguous
  • KT-63514 ISE “Inline class types should have the same representation: [I != I” during compilation on submitting UIntArray to vararg
  • KT-62553 K2: Add topLevelClassifierPackageNames to symbol name providers
  • KT-64148 K2: class cast exception org.jetbrains.kotlin.fir.types.ConeStarProjection
  • KT-63665 K2: "NullPointerException" caused by class with the companion object and extra curly brace
  • KT-59715 K2: Check behaviour of property + operator in operator position
  • KT-62347 Prohibit using property+invoke convention for delegated properties
  • KT-59421 K2: Missing CONTEXT_RECEIVERS_WITH_BACKING_FIELD
  • KT-59903 K2: Disappeared DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE
  • KT-62926 K2: IR has missing receivers during expect-actual matching
  • KT-62565 K2 cannot infer type parameters in case of expected functional type
  • KT-63328 K2: Top-level properties in scripts can be used while uninitialized
  • KT-59683 K2: Add control flow graph to FirScript
  • KT-63524 K2: "Not enough information to infer type argument"
  • KT-63835 K2: metadata compilation with constants is falling for Native
  • KT-60251 K2: delegated method are delegating to different methods in hierarchy compared to K1
  • KT-63695 JVM: Don't use plugin extensions when compiling code fragment
  • KT-63574 K2: "IllegalStateException: IrFieldPublicSymbolImpl for java.nio/ByteOrder.LITTLE_ENDIAN"
  • KT-60504 K2: difference between LL FIR and FIR in enhanced return type with annotation
  • KT-64147 K2: Generate FIR diagnostics with explicit types
  • KT-63042 K2: proper processing of propagated annotations
  • KT-59368 K2: Missing SUBTYPING_BETWEEN_CONTEXT_RECEIVERS
  • KT-64083 K2: "KotlinIllegalArgumentExceptionWithAttachments: Unexpected returnTypeRef. Expected is FirResolvedTypeRef, but was FirJavaTypeRef"
  • KT-37308 No smart cast when the null check is performed on a child property through a function with a contract
  • KT-59894 K2: Disappeared ANNOTATION_ARGUMENT_MUST_BE_CONST
  • KT-63329 K2: difference in SAM-conversion casts generation
  • KT-64062 K2 IDE. NPE on typing nullable parameter in return
  • KT-58579 K2: false-positive new inference error on invoking a generic function on Java wildcard type bounded by raw-typed Java inner class
  • KT-64031 K2: Revise naming in FirBuilderInferenceSession
  • KT-50453 Improve builder inference diagnostics with type mismatch due to chosen inapplicable overload
  • KT-56949 K2: Builder inference violates upper bound
  • KT-63648 K2: values of postponed type variable don't introduce type constraints in extension receiver positions during builder-style type inference
  • KT-64028 K2: Investigate questionable condition in FirBuilderInfernceSession
  • KT-63848 ReflectiveAccessLowering does not count arguments of super-calls
  • KT-61920 K2: False negative CONST_VAL_WITH_NON_CONST_INITIALIZER when initializer is Java field
  • KT-63508 K2: "IllegalArgumentException: Not FirResolvedTypeRef (String) in storeResult" caused by @Deprecated Java function and typo
  • KT-63522 K2: wrong context for delegated field type
  • KT-53308 TYPE_MISMATCH: Contracts on boolean expression has no effect on referential equality to null
  • KT-51160 Type mismatch with contracts on narrowing sealed hierarchy fail to smart cast
  • KT-49696 Smart cast to non-null with inline non-modifying closures sometimes doesn't work
  • KT-46586 SMARTCAST_IMPOSSIBLE when assigning value inside lambda instead of if expression
  • KT-41728 False positive no smart cast with unreachable code after return in if expression
  • KT-22904 Incorrect bytecode generated for withIndex iteration on Array<Int>

IR. Actualizer

  • KT-58861 K2: Improve the new pipeline of FIR2IR conversion, IR actualization and fake-override generation
  • KT-63347 K2: Fix overridden symbols inside LazyDeclarations
  • KT-62535 K2: FakeOverrideRebuilder can't handle f/o without overridden symbols

JavaScript

  • KT-61929 KJS: "IllegalStateException: No dispatch receiver parameter for FUN LOCAL_FUNCTION_FOR_LAMBDA" caused by run function in init block
  • KT-64366 KJS / K2: Exported declaration uses non-exportable return type: 'kotlin.<X>?'
  • KT-64426 K2: Implement JsIrLineNumberTestGenerated for K2
  • KT-64422 K2: Implement IrJsSteppingTestGenerated for K2
  • KT-64364 K2 / KJS: @JSExports generates clashing declarations for companion objects that extends its own class
  • KT-63038 Compilation of suspend functions into ES2015 generators

Klibs

  • KT-64085 Different klib signatures for K1/K2 for overridden properties assigned in init block
  • KT-64395 API for ABI: Add a check for the file's existence to KLIB ABI Reader
  • KT-63573 K2: Dependency problems with dependencies with same artifact id
  • KT-64082 Different klib signatures in K1/K2 for the same locally used constant declaration
  • KT-63931 [K/N] Relative path to klib option of cinterop tool doesn't work
  • KT-60390 KLIBs: Wrong IrSymbol is used for deserialized expect property's backing field & accessors

Libraries

  • KT-61969 Migrate kotlin-test to the current Kotlin Multiplatform Plugin
  • KT-64361 Optimization opportunity in Int.sign
  • KT-63157 Make sure that all deprecation levels are raised to ERROR for declarations intended for removal from kotlinx-metadata
  • KT-64230 Prohibit writing versions of metadata that are too high

Native

  • KT-61695 [K/N] Empty list error in FakeOverridesActualizer with K2
  • KT-64508 IndexOutOfBoundsException in Konan StaticInitializersOptimization

Native. C and ObjC Import

  • KT-63049 NPE in BackendChecker.visitDelegatingConstructorCall compiling ObjC-interop class
  • KT-59597 [K\N] Usage of instancetype in block return type crashes

Native. ObjC Export

  • KT-62091 KMP for iOS framework with private api : __NSCFBoolean
  • KT-64076 ObjCExport: Do not retain descriptors in stubs
  • KT-64168 ObjCExport: Split header generator module into K1 and Analysis Api
  • KT-64227 ObjCExport: Extract Header Generation to base module

Native. Runtime. Memory

  • KT-62689 Native: generate signposts for GC performance debugging

Native. Testing

  • KT-64256 IR_DUMP directive doesn't enforce FIR_IDENTICAL when it is possible
  • KT-62157 Native: Migrate FileCheck tests to new native test infra

Tools. CLI

  • KT-64013 CLI REPL: "com.sun.jna.LastErrorException: [14] Bad address" on invoking kotlinc from CLI on ARM Mac

Tools. Compiler Plugin API

  • KT-64444 K2: IrGeneratedDeclarationsRegistrar.addMetadataVisibleAnnotationsToElement doesn't work for declarations in common module

Tools. Compiler Plugins

  • KT-33020 Support stripping debug information in the jvm-abi-gen plugin
  • KT-64707 K2: Parcelize ignores @TypeParceler set for typealias

Tools. Compiler plugins. Serialization

  • KT-64447 K2: Implement Serialization...IrBoxTestGenerated for K2
  • KT-64124 Different klib signatures in K1/K2 for a serializable class

Tools. Gradle

  • KT-64653 Add Kotlin DslMarker into Gradle plugin DSL
  • KT-64251 KGP: Cannot re-use tooling model cache with Project Isolation due to "~/.gradle/kotlin-profile" changing
  • KT-58768 Support configuration cache and project isolation for FUS statistics
  • KT-64379 Remove kotlin.useK2 gradle property
  • KT-62527 Gradle: get rid of the Project.buildDir usages
  • KT-55322 Kotlin daemon: Cannot perform operation, requested state: Alive > actual: LastSession

Tools. Gradle. Cocoapods

  • KT-57650 Gradle Cocoapods: use pod install --repo-update instead of pod install

Tools. Gradle. JS

  • KT-64561 K/JS tests are not executed after upgrade to 1.9.22
  • KT-63435 KJS: Get rid of deprecated outputFileProperty of Kotlin2JsCompile

Tools. Gradle. Multiplatform

  • KT-56440 TCS: Gradle Sync: Add API to populate extras only during sync
  • KT-63226 KGP Multiplatform Ide Dependency Resolution: Use gradle variants instead/in addition of ArtifactResolutionQuery

Tools. Gradle. Native

  • KT-62745 iOS application build is failing if script sandboxing option is enabled in Xcode
  • KT-62800 CInteropProcess should not require .def file to exist
  • KT-62795 CInteropProcess task resolves cinterop def file eagerly, breaking Gradle task dependencies

Tools. Incremental Compile

  • KT-63837 Implement baseline fix for common sources getting access to platform declarations
  • KT-64513 Simplify adding configuration properties to incremental compilation
  • KT-21534 IC doesn't recompile file with potential SAM-adapter usage
  • KT-63839 Measure impact of rebuilding common sources, using nightly IC benchmarks
  • KT-64228 K2: After switching to LV20 branch incremental tests are not running on PSI anymore
  • KT-46743 Incremental compilation doesn't process usages of Java property in Kotlin code if getter is removed
  • KT-60522 Incremental compilation doesn't process usages of Java property in Kotlin code if return type of getter changes

Tools. JPS

  • KT-55393 JPS: Java synthetic properties incremental compilation is broken

Tools. Kapt

  • KT-64719 K2 KAPT Stub genertaion doesn't fail on files with syntax errors
  • KT-64680 Kapt: remove the flag to enable old JVM backend
  • KT-64639 KAPT+JVM_IR: erased error types in JvmStatic and JvmOverloads
  • KT-64389 K2 KAPT generates invalid code for multiple generic constraints
  • KT-61776 K2: KAPT tasks fail with parallel gradle
  • KT-64021 Kapt3 + Kapt4. NullPointerException: processingEnv must not be null
  • KT-64303 K2 KAPT: Kapt doesn't dispose resources allocated by standalone analysis API
  • KT-64301 K2 KAPT: Kapt doesn't report invalid enum value names to log
  • KT-64297 K2 KAPT: Deprecated members are not marked with @java.lang.Deprecated

Tools. REPL

  • KT-18355 REPL doesn't quit on the first line after pressing Ctrl+D or typing :quit

v1.9.22

4 months ago

Changelog

JavaScript

  • KT-63719 KJS: Test results ignored for ES module kind
  • KT-63808 compileTestDevelopmentExecutableKotlinJs failed in JsIntrinsicTransformers

Native

  • KT-64139 Weird bug with while and coroutine in Kotlin Native
  • KT-63471 linkDebugTestIosX64 Failed to build cache: NoSuchFileException bitcode_deps
  • KT-63789 Native: Incremental compilation problem with compose

Tools. CLI

  • KT-64485 CLI: cache and optimize parsing of command-line arguments

Tools. Gradle

  • KT-63990 "Cannot query the value of property 'buildFlowServiceProperty' because it has no value available" with Isolated Projects

Tools. Gradle. Native

  • KT-63363 Kotlin Gradle Plugin: KotlinNativeHostSpecificMetadataArtifact breaks configuration cache, implicitly includes output file as configuration cache input
  • KT-63742 Gradle wrongly caches Kotlin/Native compiler flags

Tools. JPS

  • KT-64305 Kotlin JPS builder requests chunk rebuild with graph implementation
  • KT-64112 Avoid using IJ's JPS mappings in Kotlin JPS tests
  • KT-63799 Make plugin classpath serialization path agnostic

Checksums

File Sha256
kotlin-compiler-1.9.22.zip 88b39213506532c816ff56348c07bbeefe0c8d18943bffbad11063cf97cac3e6
kotlin-native-linux-x86_64-1.9.22.tar.gz c2b0a6481ced5401db4a7028661c039b7466996efaa554bbcc6a3d421ac5e7d4
kotlin-native-macos-x86_64-1.9.22.tar.gz 4646c9bc289d48a228064f565f3a968dde3dcccd7821f403717c708f6ffa8285
kotlin-native-macos-aarch64-1.9.22.tar.gz 8a95c0e0eb46b41b6d02a1942dc7dfe8c70082a2a26679490a77cd486f0ec8dd
kotlin-native-windows-x86_64-1.9.22.zip a9d7bcf38a41a84002ba7a733b08e97b554225a39656d5158fc31dc6d0acede4

v2.0.0-Beta2

4 months ago

Changelog

Analysis. API

Fixes

  • KT-62982 K2: Cannot get a PSI element for 'Enum.values'
  • KT-59732 FirLazyResolveContractViolationException: lazyResolveToPhase(IMPORTS) cannot be called from a transformer with a phase IMPORTS from serialisation plugin
  • KT-61757 K2 IDE: resolution to buitlins does not work for from common module
  • KT-62676 K2 IDE: Reference shortener does not recoginize redundant this references
  • KT-63627 K2 IDE: shorten reference shortens required qualifier
  • KT-62675 K2 IDE: Reference shortener does not recoginize redundant labels
  • KT-63771 fe10: KtNamedClassOrObjectSymbol#isInline does not cover value classes
  • KT-62947 Analysis API: Error while resolving FirPropertyImpl
  • KT-60327 K2 IDE. "IllegalArgumentException: source must not be null" during delegation declaration
  • KT-63700 K2: "FirLazyExpression should be calculated before accessing" in the case of secondary constructor
  • KT-62111 K2 IDE. IllegalArgumentException on for loop with iterator declaration attempt
  • KT-63538 Analysis API: Removing a contract statement via PsiElement.delete() does not trigger an out-of-block modification
  • KT-63694 K1/K2 IDE. "RuntimeException: Broken stub format, most likely version of kotlin.FILE (kotlin.FILE) was not updated after serialization changes" exception on incorrect class name
  • KT-63560 Analysis API: Modifiable PSI tests cannot rely on the cached application environment to allow write access
  • KT-62980 Implement KtFirSimpleNameReference#getImportAlias
  • KT-63130 Analysis API: No receiver found for broken code during commit document
  • KT-60170 K2 IDE: CCE from KtFirCallResolver on invalid code with wrong implicit invoke
  • KT-61783 K2: Analyze 'KtCodeFragment' in a separate session
  • KT-62010 K2: IDE K2: "ConeClassLikeTypeImpl is not resolved to symbol for on-error type"
  • KT-62957 Analysis API: NullPointerException on call resolution when builtins are not available
  • KT-62899 K2 IDE. IDE ignores @Suppress annotation for errors
  • KT-62935 Analysis API: kotlin.Cloneable should not be available in Kotlin/Native sources
  • KT-62910 Analysis API: create AbstractFirPsiNativeDiagnosticsTest for LL FIR
  • KT-63096 K2: Analysis API: KotlinAnnotationsResolver for IDE is created with incorrect scope
  • KT-63282 K2 Script: annotation arguments phase should resolve propagated annotations
  • KT-63223 Analysis API: reference to declarations with kotlin* package are not resolved
  • KT-63195 AA: incorrect results from KtTypeProvider#getReceiverTypeForDoubleColonExpression

Analysis. Light Classes

  • KT-63552 Symbol Light Classes don't support arrayOf and similar without parameters in property initializers and default parameter values
  • KT-63486 SLC: a lot of RAM is allocated in org.jetbrains.kotlin.asJava.LightClassUtil.isMangled

Backend. Wasm

  • KT-62863 Execution failed for task ':kotlinx-serialization-properties:wasmJsD8Test' in serialization in the K2 QG

Compiler

New Features

  • KT-22004 Allow to resolve CONFLICTING_OVERLOADS with Deprecated(HIDDEN)
  • KT-61955 Support more wider actual member visibility, if the expect member is effectively final

Fixes

  • KT-63695 JVM: Don't use plugin extensions when compiling code fragment
  • KT-59903 K2: Disappeared DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE
  • KT-62961 K2 / KMP: NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS with expect enum class and typealias
  • KT-59369 K2: Missing BUILDER_INFERENCE_STUB_RECEIVER
  • KT-53749 Support builder inference restriction in FIR
  • KT-59390 K2: Missing BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION
  • KT-59887 K2: Disappeared ACTUAL_MISSING
  • KT-62885 Introduce a language feature entry for expect actual classes for easier configuration of MPP projects
  • KT-62589 K2: Investigate need of non-nullable IdSignature in Fir2IrLazyDeclarations
  • KT-63329 K2: difference in SAM-conversion casts generation
  • KT-64062 K2 IDE. NPE on typing nullable parameter in return
  • KT-63761 K2: False positive "Unresolved reference" caused by object's parameter in enum class which is passed as annotation parameter
  • KT-55252 Backend Internal error during psi2ir in native compile tasks (NPE in getKlibModuleOrigin)
  • KT-50453 Improve builder inference diagnostics with type mismatch due to chosen inapplicable overload
  • KT-56949 K2: Builder inference violates upper bound
  • KT-64028 K2: Investigate questionable condition in FirBuilderInfernceSession
  • KT-60031 K2: Introduced NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS
  • KT-63646 K2: "IllegalStateException: Return type of provideDelegate is expected to be one of the type variables of a candidate, but D was found"
  • KT-59881 K2: Disappeared UNSUPPORTED
  • KT-64136 K2: NSME with Anvil compiler plugin
  • KT-63448 K2: CONFLICTING_INHERITED_JVM_DECLARATIONS with @JvmField
  • KT-63865 K2: "IllegalArgumentException: Failed requirement." caused by lambda parameters with different type in init block
  • KT-62609 K2. Type argument inference changed for object of Java class with several common parents
  • KT-63081 Optimize new native caches: CachedLibraries.computeVersionedCacheDirectory()
  • KT-63580 "AssertionError: access of const val: GET_FIELD" caused by const value and variable with delegation
  • KT-63567 "NoSuchMethodError" on getting value of lazily initialized property by companion's const value
  • KT-63540 Restrict the CONFLICTING_OVERLOADS + DeprecatedLevel.HIDDEN ignore to final callables
  • KT-30369 Smartcasts from safe call + null check don't work if explicit true/false check is used
  • KT-30376 Smartcasts don't propagate to the original variable when use not-null assertion or cast expression
  • KT-30868 Unsound smartcast if smartcast source and break is placed inside square brackets (indexing expression)
  • KT-31053 Nothing? type check isn't equivalent to null check is some places
  • KT-29935 Smartcasts don't work if explicit annotated true/false check is used
  • KT-30903 Smartcast to null doesn't affect computing of exhaustiveness
  • KT-62847 K2: Introduce FIR node for SAM conversion
  • KT-63564 K/Wasm: CompilationException with 2.0.0-Beta1
  • KT-63345 K2: FIR2IR chooses an incorrect type for smartcast in case of SAM conversion
  • KT-63848 ReflectiveAccessLowering does not count arguments of super-calls
  • KT-61920 K2: False negative CONST_VAL_WITH_NON_CONST_INITIALIZER when initializer is Java field
  • KT-63649 K2: Wild card in superclass confuses EXPANSIVE_INHERITANCE checker
  • KT-63569 K2: "IllegalStateException: ?!id:1" caused by private function call
  • KT-63842 K2: some arguments of annotations on local declarations are unresolved
  • KT-63832 K2: missed context during annotation argument resolution for a type alias, init and property receiver
  • KT-62559 KMP, K2: prevent reporting ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT twice in CLI
  • KT-24652 Elvis with 'break' can produce unsound smartcasts in while-true loop
  • KT-28508 Possible unsound smartcast in class initializer
  • KT-28759 No not-null smartcast from direct assignment if it's split into declaration and value assignment
  • KT-28760 No not-null smartcast from direct assignment of this
  • KT-29878 Smartcasts from type check or null check don't work if explicit true check as reference equality is used
  • KT-29936 Smartcasts don't work if comparing with return value of some function and explicit true/false check is used
  • KT-30317 Smartcast doesn't work if smartcast source is used as an operand of the reference equality
  • KT-63071 K2 supports calling functions with the dynamic receiver over Nothing?
  • KT-59896 K2: Disappeared WRONG_ANNOTATION_TARGET
  • KT-56849 Implement K/Wasm K1 diagnostics in K2
  • KT-31636 Expect-actual matching doesn't work for inner/nested classes with explicit constructor using typealiases
  • KT-63361 K2: Expected FirResolvedTypeRef for return type of FirDefaultPropertyGetter(SubstitutionOverride(DeclarationSite)) but FirImplicitTypeRefImplWithoutSource found
  • KT-63377 K2: conflict between type parameter and nested class
  • KT-62913 Convert DEFAULT_ARGUMENTS_IN_EXPECT_ACTUALIZED_BY_FAKE_OVERRIDE to checking incompatibility
  • KT-63550 K2: fake-override in expect covariant override in actual. Move diagnostics from backend to frontend
  • KT-63443 IrFakeOverrideBuilder: ISE "No new fake override recorded" when Java superclass declares abstract toString
  • KT-58933 Applying suggested signature from WRONG_NULLABILITY_FOR_JAVA_OVERRIDE leads to red code
  • KT-63600 K2: Duplicate WRONG_NULLABILITY_FOR_JAVA_OVERRIDE
  • KT-63508 K2: "IllegalArgumentException: Not FirResolvedTypeRef (String) in storeResult" caused by @Deprecated Java function and typo
  • KT-63656 K2: "IllegalArgumentException: Local com/example/ should never be used to find its corresponding classifier"
  • KT-63459 K2: OPT_IN_USAGE_ERROR is absent when calling the enum primary constructor
  • KT-59582 OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN on an annotation import
  • KT-63732 K1: False positive OUTER_CLASS_ARGUMENTS_REQUIRED inside anonymous object
  • KT-60614 K2: Conflicting INVISIBLE_REFERENCE and UNRESOLVED_REFERENCE reported depending on FIR test for transitive friend module dependencies
  • KT-59983 K2: Disappeared IMPLEMENTATION_BY_DELEGATION_IN_EXPECT_CLASS
  • KT-57044 K2 LL Tests: false-positive 'Overload resolution ambiguity between candidates: [@Override() fun test(): Unit , fun test(): Unit]'
  • KT-58028 K2: False-positive TYPE_PARAMETER_IS_NOT_AN_EXPRESSION
  • KT-62560 K2: KAPT4: annotation @ReplaceWith is missing a default value for the element 'imports'
  • KT-63068 K2 supports typeRef-name labels
  • KT-63642 JVM_IR: don't generate reflective access to getter/setter without property
  • KT-62212 K2: require matching of suspend status for override check
  • KT-63597 JVM_IR: Properly handle type parameters of outer declaration in code fragment
  • KT-61282 K2: Incorrect overridden function for java.nio.CharBuffer.get
  • KT-63317 K2: Disallow generic types in contract type assertions
  • KT-59922 K2: Disappeared CANNOT_CHECK_FOR_ERASED
  • KT-63241 IJ monorepo K2 QG: backward-incompatible compiler ABI change leads to run-time failures of Fleet's kotlinc plugins
  • KT-59988 K2: Disappeared TYPE_ARGUMENTS_NOT_ALLOWED
  • KT-59936 K2: Disappeared ARGUMENT_PASSED_TWICE
  • KT-63522 K2: wrong context for delegated field type
  • KT-63454 Properly check that inline fun is in the same module as callee in IrSourceCompilerForInline
  • KT-59951 K2: Disappeared NO_TYPE_ARGUMENTS_ON_RHS
  • KT-63535 K2: Apply DFA implications for nullable Nothing to both sides
  • KT-62727 K2: Missing JSCODE_UNSUPPORTED_FUNCTION_KIND
  • KT-62726 K2: Missing JSCODE_WRONG_CONTEXT
  • KT-62725 K2: Missing JSCODE_INVALID_PARAMETER_NAME
  • KT-62314 Make usages of JavaTypeParameterStack safe
  • KT-60924 FIR2IR: Get rid of all unsafe usages of IrSymbol.owner
  • KT-57949 FIR: SignatureEnhancement: mutation of java enum entry
  • KT-59908 K2: Disappeared RECURSIVE_TYPEALIAS_EXPANSION
  • KT-62724 K2: Missing WRONG_JS_FUN_TARGET
  • KT-62856 K2: Don't create IR declaration when its symbol is accessed in fir2ir
  • KT-61329 K2: Review for diagnostic messages reported by CLI arguments processing
  • KT-60604 K2: introduced NON_PUBLIC_CALL_FROM_PUBLIC_INLINE, @PublishedApi needed for constants in annotations
  • KT-63286 K2: Top-level properties in scripts are missing initialization checks
  • KT-62711 Incorrect ParsedCodeMetaInfo instances
  • KT-63122 K2: Improve 'EVALUATION_ERROR' messages
  • KT-63164 K2/JVM: compiler codegen crash on invisible property IllegalStateException: Fake override should have at least one overridden descriptor
  • KT-62352 jspecify NonNull annotation seems not supported
  • KT-56614 K2: Incorrect overload resolution with SAM types
  • KT-62783 K2: False positive CAST_NEVER_SUCCEEDS when casting nullable expression to it's non-nullable generic base class
  • KT-47931 FIR DFA: smartcast not working for if (x!=null || x!=null && x!=null) {}
  • KT-62735 K2: Disappeared EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER
  • KT-62733 K2: Disappeared WRONG_EXTERNAL_DECLARATION
  • KT-62734 K2: Disappeared INLINE_EXTERNAL_DECLARATION
  • KT-62618 K2: Fix the ensureAllMessagesPresent test
  • KT-60312 K2: CCE “class [I cannot be cast to class java.lang.Number ([I and java.lang.Number are in module java.base of loader 'bootstrap')” on using IntArray as vararg
  • KT-61362 K2: Properties/fields are missing from system libraries
  • KT-52432 Using the IDE compiled with K2 (useFir) throws VerifyError exception
  • KT-59825 K2: Fix the TODO about wasExperimentalMarkerClasses in FirSinceKotlinHelpers
  • KT-26045 False positive DUPLICATE_LABEL_IN_WHEN for safe calls
  • KT-63094 K2: Exception from fir2ir during conversion data class with property of dynamic type
  • KT-59822 K2: Fix the TODO in FirConstChecks
  • KT-59493 Definitely non-nullable types have type inference issues with extension functions
  • KT-63396 K2: property from companion object are unresolved as an annotation argument in type parameter
  • KT-62925 K2: Disappeared EXPOSED_FUNCTION_RETURN_TYPE for package-private and type args
  • KT-63430 IrFakeOverrideBuilder: VerifyError on calling a function with a context receiver from a superclass
  • KT-62420 K2: Remove ConeClassifierLookupTag from ConeTypeVariableTypeConstructor
  • KT-59998 K2: Disappeared OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN
  • KT-53308 TYPE_MISMATCH: Contracts on boolean expression has no effect on referential equality to null
  • KT-51160 Type mismatch with contracts on narrowing sealed hierarchy fail to smart cast
  • KT-49696 Smart cast to non-null with inline non-modifying closures sometimes doesn't work
  • KT-46586 SMARTCAST_IMPOSSIBLE when assigning value inside lambda instead of if expression
  • KT-41728 False positive no smart cast with unreachable code after return in if expression
  • KT-57529 K1/K2: "IllegalStateException: not identifier: " with hard keywords in angle brackets
  • KT-59401 K2: Missing ADAPTED_CALLABLE_REFERENCE_AGAINST_REFLECTION_TYPE
  • KT-63147 K2: False negative DSL_SCOPE_VIOLATION when member is annotated with @LowPriorityInOverloadResolution
  • KT-63172 K2: Java vararg setter should not be used as property accessor
  • KT-62306 K2: Compiler internal error for incorrect call on ILT
  • KT-61592 kt57320.kt weird diagnostic range for NO_ACTUAL_FOR_EXPECT
  • KT-60294 K2: lambda inside object capturing this, when not in K1
  • KT-62590 Split expect/actual matcher-checker machinery in two separate components: matcher and checker
  • KT-62120 K2: "NoSuchMethodError: java.lang.String" at runtime on class delegating to Java type
  • KT-36976 FIR: Provide exact smart casting type
  • KT-62628 K2: FirErrorTypeRefImpl doesn't have annotations
  • KT-62447 K2. "Replacing annotations in FirErrorTypeRefImpl is not supported" compiler error when annotation is used as variable type or return type
  • KT-62541 K2: Missed type mismatch error
  • KT-37591 Deprecate cases in FE 1.0 when companion property is prioritized against enum entry

Docs & Examples

IDE

  • KT-55788 [SLC] Declarations with value classes are leaked into light classes

IDE. Gradle. Script

  • KT-60813 Scripts: NoSuchMethodError: 'void org.slf4j.Logger.error(java.lang.String, java.lang.Object)' when dependency uses Slf4j API

IDE. JS

  • KT-61257 Analysis API:"KotlinIllegalArgumentExceptionWithAttachments: Invalid FirDeclarationOrigin DynamicScope" exception on unsupported JS dynamic usage in scope

IDE. Multiplatform

  • KT-45513 Run c-interop generation in parallel during project import
  • KT-63126 K2: Analysis API Standalone: IllegalStateException from Kotlin/Native klib

IDE. Script

  • KT-61267 K2 Scripts: dependency issues

IR. Actualizer

  • KT-62292 K2: Extract IrActualizer into separate module
  • KT-63442 IrFakeOverrideBuilder: ISE "Multiple overrides" error when function signatures differ only in the type parameter upper bound

IR. Interpreter

  • KT-62683 K2: FIR2IR: IrConst*Transformer doesn't evaluate an expression for const val initializer

IR. Tree

  • KT-61970 Refactor IR and FIR tree generators to reuse common logic
  • KT-61703 Drop the dependency on kotlinpoet for IR tree generation
  • KT-63437 IrFakeOverrideBuilder: ISE "Captured Type does not have a classifier" on complex Java hierarchy

JavaScript

Fixes

  • KT-61117 Migrate remaining legacy IC tests to IR
  • KT-63808 compileTestDevelopmentExecutableKotlinJs failed in JsIntrinsicTransformers
  • KT-61523 KJS: Call main function in per-file mode
  • KT-63543 KJS / K2: Exported declaration uses non-exportable return type type: 'kotlin.Unit'
  • KT-63089 KJS / K2 : "IllegalArgumentException: source must not be null " for inner class and interface as type
  • KT-62077 KJS: TypeError: str.charCodeAt is not a function
  • KT-63436 K/JS: Eliminate names for synthetic classes in setMetadataFor()
  • KT-61929 KJS: "IllegalStateException: No dispatch receiver parameter for FUN LOCAL_FUNCTION_FOR_LAMBDA" caused by run function in init block
  • KT-63013 KJS: requireNotNull not working correctly in JS tests with Kotlin 1.9.20
  • KT-63207 KMP / JS: "TypeError: <mangled_name> is not a function" with 1.9.20
  • KT-16981 js: Command line arguments passed to main() are always empty
  • KT-61525 KJS: Test functions are not invoked in per-file mode

Klibs

  • KT-62259 KLIB ABI reader: add information about a backing field to AbiProperty
  • KT-62515 Interop klib of concurrent version is not accepted when building dependent project: "The library versions don't match"

Language Design

  • KT-62138 K1: false positive (?) NO_SET_METHOD for += resolved as a combination of Map.get and plus
  • KT-61573 Emit the compilation warning on expect/actual classes. The warning must mention that expect/actual classes are in Beta

Libraries

  • KT-62346 Sublists of ListBuilder does not correctly detect ConcurrentModification
  • KT-59441 Design reading and writing future versions of Kotlin metadata
  • KT-57922 kotlinx-metadata-jvm does not take into account strict semantics flag
  • KT-63341 K2: JVM StringBuilder has no corresponding members for expected class members
  • KT-51058 Avoid byte array allocation in File.writeText when possible
  • KT-63447 K2: stdlib buildscript error: file included in two modules

Native

  • KT-63789 Native: Incremental compilation problem with compose
  • KT-50547 [Commonizer] K/N echoServer sample fails with multiple "Unresolved reference" errors on Windows

Native. Build Infrastructure

  • KT-63905 Extract ObjC Export Header generation from K/N backend
  • KT-63220 [K/N] Unable to specify custom LLVM distribution

Native. C and ObjC Import

  • KT-63287 [K/N] Create test model for building/executing C-Interop tests
  • KT-63048 K2 ObjC interop: Fields are not supported for Companion of subclass of ObjC type

Native. ObjC Export

  • KT-63153 Native: implement a flag to emit compiler warnings on ObjCExport name collisions

Reflection

  • KT-60708 Reflection: Not supported ) (parentheses in backticks)

Tools. Compiler Plugins

  • KT-53861 K2. Report SERIALIZER_TYPE_INCOMPATIBLE on specific type argument in kotlinx.serialization
  • KT-63086 K2: "Parcelable should be a class"
  • KT-61432 K2 Parcelize. RawValue is not recognized if parameter is annotated via typealias

Tools. Compiler plugins. Serialization

  • KT-63591 K2: "KotlinReflectionInternalError: Could not compute caller for function" on generated internal constructor
  • KT-63570 K2 / Serialization: "Class * which is serializer for type * is applied here to type *. This may lead to errors or incorrect behavior."
  • KT-63402 K2 / Serialization: "SyntheticAccessorLowering should not attempt to modify other files!" caused by sealed base with generic derived class in separate files

Tools. Gradle

New Features

  • KT-61975 Re-purpose kotlin.experimental.tryK2

Performance Improvements

  • KT-63005 Avoid registering KMP related compatibility/disambiguration rules for pure JVM/Android projects

Fixes

  • KT-60733 Allow specify log level for compiler arguments used to compile sources
  • KT-63697 The warning is still presented in terminal after suppressing it with -Xexpect-actual-classes flag
  • KT-63491 Restore access to top-level DSL to configure compiler options in MPP
  • KT-55322 Kotlin daemon: Cannot perform operation, requested state: Alive > actual: LastSession
  • KT-63369 Fix: "The org.gradle.api.plugins.BasePluginConvention type has been deprecated."
  • KT-63368 Fix "The automatic loading of test framework implementation dependencies has been deprecated. "
  • KT-63601 Fetching Gradle compiler DSL objects using raw strings is inconvenient in the Groovy DSL
  • KT-62758 Gradle: make precise task outputs backup enabled by default
  • KT-62955 Missing static accessors for Wasm targets in Kotlin Gradle plugin DSL:
  • KT-62962 Remove COMPILE_INCREMENTAL_WITH_ARTIFACT_TRANSFORM system property
  • KT-63499 Gradle: Source sets conventions are still registered
  • KT-52976 Remove deprecated Gradle conventions usages
  • KT-62939 Bump minimal supported AGP version to 7.1
  • KT-58223 Kotlin Gradle plugin shouldn't store data in project cache directory
  • KT-62131 Could not isolate value org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService$Parameters_Decorated@63fddc4b of type BuildFlowService.Parameters
  • KT-62264 Send build type report metric to FUS
  • KT-62617 Update report configuration project FUS metrics

Tools. Gradle. Cocoapods

  • KT-63331 CocoaPods plugin noPodspec() causes "property * specifies file * which doesn't exist."

Tools. Gradle. JS

  • KT-62780 K/JS: Deprecate node-specific properties in NodeJsRootExtension
  • KT-63544 KGP: JS - KotlinJsIrLink is not compatible with Gradle CC starting 8.4
  • KT-63312 KJS: Apply IR flags for JS compilations unconditionally
  • KT-62633 wasmWasi/JsNodeTest tasks are always not up-to-date
  • KT-63040 K/JS: Rework outputs of webpack and distribution task

Tools. Gradle. Multiplatform

  • KT-63315 Wasm gradle plugin DSL is invalid for parameterless wasmWasi method
  • KT-63338 [KMP] metadata task fails to find cinterop classes from dependency projects
  • KT-63197 After using Kotlin 1.9.20 on Windows 11, the gradle sync failed
  • KT-63044 KGP: Multiplatform - 8.4 configuration cache support
  • KT-63011 Apple Framework Artifacts is not connected to KotlinNativeTask

Tools. Gradle. Native

  • KT-56455 Gradle: remove enableEndorsedLibs from codebase

Tools. Incremental Compile

  • KT-56963 Add MPP/Jvm incremental compilation tests for both K1 and K2 modes
  • KT-63876 Move useful utilities from KmpIncrementalITBase.kt to KGPBaseTest and/or common utils
  • KT-63010 Build reports may contain incorrect measurements for "Total size of the cache directory"
  • KT-59178 With language version = 2.0 incremental compilation of JVM, JS fails on matching expect and actual declarations

Tools. JPS

  • KT-63549 Add compiler performance metrics to JPS build reports
  • KT-64026 Maven. JVM target is imported as 1.6(deprecated) if an invalid parameter value specified in pom.xml
  • KT-63594 ClassCastException in JPS statistics
  • KT-63799 Make plugin classpath serialization path agnostic

Tools. Kapt

  • KT-60821 [KAPT4] Make sure that KAPT produces correct JCTree; if that's not possible, investigate using JavaPoet as an alternative
  • KT-57389 KAPT3 uses a Javac API for JCImport which will break in JDK 21

Tools. Maven

Tools. Scripts

  • KT-58367 Remove script-util from the repo
  • KT-54819 Scripts: Not able to use slf4j in .main.kts
  • KT-63352 Scripting dependencies resolver logs "file not found" even if the artefact is retrieved

Tools. Wasm

  • KT-63417 KMP hierarchy DSL. Split withWasm() into withWasmJs() and withWasmWasi()

Checksums

File Sha256
kotlin-compiler-2.0.0-Beta2.zip a2866984b7e6ddd0aa4cab27bb3179d36116a72b62836df6f51d8d737b6f73b1
kotlin-native-linux-x86_64-2.0.0-Beta2.tar.gz db20c4da4fd7d5d50af1fafa809f1cc56a9517df28cf684ab98dccfa79c9115d
kotlin-native-macos-x86_64-2.0.0-Beta2.tar.gz bafc9419f782a7b0bfa630014d5f286dee6e49218211e1dc573d72ed63c87ca5
kotlin-native-macos-aarch64-2.0.0-Beta2.tar.gz 569a2ba9a79499b2d71b74a4bb7e26afcbc911f5af0fab69537f3d86b46ab42d
kotlin-native-windows-x86_64-2.0.0-Beta2.zip 7dcf52ca098d8089ed2edde15d44a80123c53e49763ea7dabc554afed7005163

v1.9.21

5 months ago

Changelog

Compiler

  • KT-62885 Introduce a language feature entry for expect actual classes for easier configuration of MPP projects
  • KT-63081 Optimize new native caches: CachedLibraries.computeVersionedCacheDirectory()

Docs & Examples

  • KT-55619 Document String.format function

IDE. Gradle Integration

  • KT-62877 Artifact files collecting for project configuration was finished. Resolution for configuration configuration X will be skipped

IDE. Gradle. Script

  • KT-60813 Scripts: NoSuchMethodError: 'void org.slf4j.Logger.error(java.lang.String, java.lang.Object)' when dependency uses Slf4j API

JavaScript

  • KT-60785 KJS: Destructured value class in suspend function fails with Uncaught TypeError: can't convert to primitive type error
  • KT-63207 KMP / JS: "TypeError: <mangled_name> is not a function" with 1.9.20
  • KT-62778 package.json "main" field has .js extension when the result files have .mjs extension
  • KT-61795 KJS: Incremental Cache is not invalidated if useEsClasses compiler argument was changed
  • KT-61957 KJS: "Uncaught ReferenceError: entries is not defined" caused by enum class with @JsExport and Enum.entries call
  • KT-62444 KJS with commonJS modules should re-export in 1.9.20
  • KT-63184 KJS / Serialization: JsExport on serializable interface creates erroneous TypeScript
  • KT-62190 KJS: "IllegalStateException: Expect to have either super call or partial linkage stub inside constructor" caused by Compose and useEsModules()
  • KT-58685 KJS: "IllegalStateException: Not locked" cused by "unlock" called twice

Klibs

  • KT-62515 Interop klib of concurrent version is not accepted when building dependent project: "The library versions don't match"

Tools. CLI

  • KT-63139 Incorrect kotlin implementation version (1.9.255-SNAPSHOT) in metadata info

Tools. Gradle

  • KT-63499 Gradle: Source sets conventions are still registered

Tools. Gradle. JS

  • KT-59523 MPP / KJS: ESM modules uses incorrect file extension on package.json (.mjs)

Tools. Gradle. Kapt

  • KT-63366 Kapt processing fails with custom source sets

Tools. Gradle. Multiplatform

  • KT-32608 Create JUnit-XML result file in multiplatform gradle build
  • KT-63315 Wasm gradle plugin DSL is invalid for parameterless wasmWasi method
  • KT-63338 [KMP] metadata task fails to find cinterop classes from dependency projects
  • KT-63044 KGP: Multiplatform - 8.4 configuration cache support
  • KT-63011 Apple Framework Artifacts is not connected to KotlinNativeTask
  • KT-62601 AS/IntelliJ exception after updating a KMP project with a macos target to Kotlin 1.9.20-RC

Tools. Incremental Compile

  • KT-61590 K2/KMP: Expect actual matching is breaking on the incremental compilation

Tools. JPS

  • KT-63594 ClassCastException in JPS statistics
  • KT-63651 Fix NPE in Kotlin JPS after enabling graph implementation of JPS

Tools. Kapt

  • KT-57389 KAPT3 uses a Javac API for JCImport which will break in JDK 21
  • KT-60507 Kapt: "IllegalAccessError: superclass access check failed" using java 21 toolchain

Tools. Scripts

  • KT-54819 Scripts: Not able to use slf4j in .main.kts
  • KT-61727 Scripts: Maven artifacts resolution is slow

Checksums

File Sha256
kotlin-compiler-1.9.21.zip cf17e0272bc065d49e64a86953b73af06065370629f090d5b7c2fe353ccf9c1a
kotlin-native-linux-x86_64-1.9.21.tar.gz 965564bb599a95283307be31947386b61f0de79514e894b1f20f4fe728eee7cc
kotlin-native-macos-x86_64-1.9.21.tar.gz 8f47cf1871bf0dfcacfc04e68ee71f2333a8a711ca25fd7a29e852eafe8da76e
kotlin-native-macos-aarch64-1.9.21.tar.gz b3c45aa0a5aa08419bd79b06cb5bdeed32b30141a6a976b67ca91bb0959e28b7
kotlin-native-windows-x86_64-1.9.21.zip e917e67d5dfeb4683a413b932f080adef08ba48d8ede61fbb040f9c3481f7b3a

v2.0.0-Beta1

5 months ago

v1.9.20

5 months ago