2.1.0
Analysis API
New Features
KT-68603 KotlinDirectInheritorsProvider: add an option to ignore non-kotlin results
Performance Improvements
KT-70757 Performance problem in KaFirVisibilityChecker for KaFirPsiJavaClassSymbol
Fixes
KT-70437 Class reference is not resolvableKT-57733 Analysis API: Use optimized ModuleWithDependenciesScopes in combined symbol providersKT-72389 K2: False positive “Redundant ‘protected’ modifier” for protected property inside protected constructor from private or internal classKT-69190 K2: False-positive “redundant private modifier”KT-64984 Analysis API: Support Wasm targetKT-70375 K2: NPE at org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirNamedClassSymbolBase.createPointerKT-71259 K2 evaluator: Invalid smart cast info collecting for Code FragmentsKT-69360 Lack of implicit receiver for the last statement under lambda in scriptsKT-70890 Analysis API: Experiment with weak references to LL FIR/analysis sessions in session cachesKT-70657 Analysis API: Inner types from classes with generics are incorrectly represented by the compiled jarsKT-71055 Suspend calls inside ‘analyze()’ break the block guaranteesKT-70815 Analysis API: Implement stop-the-world session invalidationKT-69819 K2 IDE: LHS type in callable references is unresolved when it has type arguments and is qualifiedKT-68761 Analysis API: Experiment with limited-size cache in KaFirSessionProviderKT-70384 Analysis API Standalone: The same class in the same two renamed jars is unresolvedKT-71067 Exceptions from references cancel Find UsagesKT-69535 Redesign ‘containingSymbol’KT-71025 K2 IDE: Scopes in “importingScopeContext” have reversed ordering and “indexInTower” valuesKT-67483 K2 IDE: Serializable plugin causes infinite resolve recursion when there is a star import from a class with annotation callKT-69416 K2 IDE / Completion: “No classifier found” on simple value creatingKT-70257 CCE: class kotlin.UInt cannot be cast to class java.lang.NumberKT-70376 K2 IDE / Kotlin Debugger: IAE “Only componentN functions should be cached this way, but got: toString” on evaluating toString() method for value classKT-70264 AA: service registration via XML fails with AbstractMethodError in Lint CLIKT-69950 Analysis API: Introduce isSubtypeOf(ClassId)KT-68625 K2: “lazyResolveToPhase(STATUS) cannot be called from a transformer with a phase STATUS.”KT-67665 K2: contract violation for value class with a constructor parameter with an implicit typeKT-67009 Analysis API: Add abbreviated type tests for type aliases from source modulesKT-69977 KaFirFunctionalType#getAbbreviation is always nullKT-68341 Analysis API: Expanded function types from libraries don't have an abbreviated typeKT-68857 Analysis API: Refactor annotationsKT-70386 Do not filter out overloads from different libraries in dangling filesKT-65552 K2: CANNOT_CHECK_FOR_ERASED in KtTypeCodeFragmentKT-65803 K2: Analysis API: KtFirTypeProvider#getSubstitutedSuperTypes throws an exception in the case of “Wrong number of type arguments”KT-68896 Support VirtualFile binary dependency inputs to Analysis API modulesKT-69395 K2 IDE: incorrect overload selection from binary dependencies in a shared native source setKT-68573 ISE: “Unexpected constant value (kotlin/annotation/AnnotationTarget, CLASS)” at Kt1DescUtilsKt.toKtConstantValue()KT-69576 Analysis API: FIR implementation of “isImplicitReferenceToCompanion” returns false for companion references in implicit invoke operator callsKT-69568 Analysis API: FIR implementation of “isImplicitReferenceToCompanion” returns true for non-companion references in qualified callsKT-69436 Analysis API Platform: Encapsulate LLFirDeclarationModificationService as an engine serviceKT-63004 K2: Analysis API: Design API for querying declarations generated by compiler plugins (similar to indices)KT-69452 AA FIR: wrong source PSI after compile-time evaluationKT-69598 AA: definitely not-null type at receiver position should be wrapped in parenthesisKT-60484 Analysis API: add support for KtType pointers similar to KtSymbolPointerKT-68884 Analysis API: Rename/deprecate/remove declarations as part of StabilizationKT-69453 AA FIR: miss to handle expected type of lambda with explicit labelKT-69533 Protect implementation parts of Analysis API with opt-in annotations
Analysis API. FIR
Performance Improvements
KT-71566 FirElementBuilder#getFirForNonKtFileElement should iterate a Psi file over and overKT-71224 Analysis API: FirElementFinder.collectDesignationPath relies on naive iteration through FIR files
Fixes
KT-70327 Analysis API: Batch inspection causes deadlock in ValueWithPostComputeKT-69070 Analysis API: Querying declared member scope for Java symbols results in exception in some use casesKT-68268 LLSealedInheritorsProvider: reduce scope to kotlin filesKT-69671 TYPES phase contract violation through JavaSymbolProviderKT-70624 Declaration symbols from code fragments are treated as not localKT-70662 NPE: FirLazyBodiesCalculatorKt.calculateLazyBodyForPropertyKT-70859 Do not fail highlighting due to resolution problemsKT-70474 FirLazyResolveContractViolationException from JavaSymbolProviderKT-70323 FirLazyResolveContractViolationException: lazyResolveToPhase(TYPES) cannot be called from a transformer with a phase TYPESKT-71567 LLFirCompilerRequiredAnnotationsTargetResolver should calculate annotation arguments on demandKT-71584 getNonLocalContainingOrThisDeclaration treats KtParameter from functional type as non-local
Analysis API. Light Classes
Performance Improvements
KT-69998 Drop redundant cache from ClassInnerStuffCache
Fixes
KT-69833 Support value classesKT-71693 Wrong name mangling for JvmField class property and companion property clashKT-71469 KtLightClassForDecompiledDeclaration: missed kotlinOriginKT-70710 Provide light classes for KMP modules in Android LintKT-70548 SLC: text of class object access expression is not the same as raw textKT-70572 SLC: missing isInheritor implementation for type parameterKT-70491 SLC: inconsistent source PSI of no-arg constructor for all default valuesKT-70458 SLC: missed auxiliaryOriginalElement for delegated propertyKT-70232 Support a companion object inside value classesKT-70349 @delegate:` annotations are missed for light class fieldsKT-68328 Move KtLightClassBase to ULC
Analysis API. Providers and Caches
KT-65618 K2: resulted FirClass.psi != requested PsiClass from completionKT-69292 K2: Analysis API: A property's MUST_BE_INITIALIZED diagnostic is not updated after changing field usage in an accessorKT-71468 Drop redundant logic from LLFirJavaFacadeForBinariesKT-71700 Cache result of resolveToCallKT-71520 Analysis API: LLFirNativeForwardDeclarationsSymbolProvider spends a lot of time in indices
Analysis API. Standalone
KT-65110 Analysis API: In Standalone mode the order of symbols is unstable
Analysis API. Stubs and Decompilation
KT-71565 KtClassOrObject should use isLocal from greenStub
Analysis API. Surface
New Features
KT-69960 resolveToCallCandidates should support operatorsKT-69961 resolveToCallCandidates should support properties
Performance Improvements
KT-70529 KaSymbol: reduce the number of cached usagesKT-70165 Introduce PSI-based KaSymbols for K2
Fixes
KT-69371 Analysis API: expose only interfaces/abstract classes for the resolution APIKT-69696 KaSymbolByFirBuilder should filter call-site substitutionsKT-69679 KaDelegatedConstructorCall should have substituted signatureKT-70206 anonymousSymbol API throws an exception for regular functionsKT-69699 Receiver type is not substituted in the case of conflict declarationsKT-69381 Analysis API: Investigate the viability of current KaSymbol cachesKT-70199 K2: ConcurrentModificationException at FirCallCompleter$LambdaAnalyzerImpl.analyzeAndGetLambdaReturnArgumentsKT-70661 Invalid FirDeclarationOrigin ScriptTopLevelDestructuringDeclarationContainerKT-70663 KaFirDestructuringDeclarationSymbol: Failed requirementKT-63490 Analysis API: Accessing the Analysis API should be prohibited during dumb modeKT-63390 K2: Analysis API: add annotations to KtClassInitializerSymbolKT-55124 Design common ancestor for KtValueParameter and KtReceiverParameterSymbolKT-71731 directlyOverridenSymbols/allOverridenSymbols works incorrectly for intersection overrides
Apple Ecosystem
KT-66262 Deprecate and remove support for bitcode embedding from the Kotlin Gradle pluginKT-66894 XCFramework task fails when name passed to xcframework DSL is different from framework's nameKT-65675 XCFrameworkTask produces an xcframework with mismatched casing in embedded frameworksKT-69119 xcodeVersion task fails if Xcode isn‘t installed and apple-specific native targets aren’t declared
Backend. Wasm
New Features
KT-70786 Improve DX of the variable view during debugging in Chrome/Firefox for Kotlin/WasmKT-70331 Support incremental compilation for the Wasm backendKT-71686 K/Wasm: Add functions to convert between Kotlin and JS array typesKT-68185 [WasmJs] Attach js exception object to JsException
Fixes
KT-71294 Wasm Artifacts/Resource are being loaded relatively instead of absolutelyKT-71473 K/Wasm: Use --closed-world and related options for BinaryenKT-72297 [Wasm] Unused associated object class lead to compiler failKT-72156 custom-formatters.js exists in JAR after publishToMavenLocal but not in the published artifact in Maven publicKT-65799 K/Wasm: remove default exports from wasm exportsKT-71800 Wasm compiler: Fix member generation for data classes with an array-type propertyKT-71580 String::toFloat on wasm behaves differently compared to other targetsKT-71523 K/Wasm: cleanup after fix for KT-71474KT-71475 K/Wasm: KClass::qualifiedName returns incorrect result for nested or companion objectsKT-71474 K/Wasm: KProperty*Impl equals work incorrectly for clabbale reference created in different files or modulesKT-61130 K/Wasm: Function signatures may clash with base class internal methods from a friend moduleKT-70820 [Kotlin QG] wasm-validator fails when running compile[...]KotlinWasmJsOptimizeKT-70819 [Kotlin QG] node.js fails when running wasmJs[...]Test KGP tasksKT-70394 Investigate increased wasm binary size after switching stdlib compilation to K2KT-69627 Remove create###Array functions from WASM stdlibKT-68509 Fatal: error validating input in compileProductionExecutableKotlinWasmJsOptimize
Compiler
New Features
KT-71094 Kotlin/Native incremental compilation: fail compilation if cache build failedKT-21908 Support ‘when’ exhaustiveness checking for generic type parameter with sealed class upper boundKT-70679 Kotlin/Native: fill WritableTypeInfo from Swift Export type mappingKT-59798 Builder inference is not working when combined with let expressionKT-54227 Cannot use nullable Nothing as reified type parameterKT-71430 Kotlin-to-Java direct actualization implementationKT-68163 Expose supplementary compiler warnings via CLIKT-69321 Swift export: enable auto-linkage of binary dependenciesKT-11526 Improve diagnostics for “X overrides nothing”KT-49710 False positive NO_ELSE_IN_WHEN with nullable type as receiverKT-69729 Support calling super interface Java methods from Kotlin interfaceKT-69508 Improve “Public-API inline function cannot access non-public-API” check for the inline property accessors
Performance Improvements
KT-71353 FP Kotlin performance degradation (around Cone types hierarchy changes)KT-71159 [K2] OOM on large enum classes with fieldsKT-69718 K2: Check for jvm nullability annotations in fir2ir is slowKT-68417 Native: LLVM 16 inliner is slow on K/N-produced modulesKT-63971 K2: Redundant @ParameterName in abbreviated type in metadata
Fixes
KT-71550 JVM IR: NPE on identity equals of boolean true with nullKT-72214 -fpass-plugin (clangFlags) is not applied since Kotlin 2.0.20KT-68933 CompilationException: Back-end: Could not get inlined classKT-72255 Promote jspecify from warning to errorKT-73065 CCE with context receiversKT-61033 K2: implement a diagnostic corresponding to K1's MISSING_BUILT_IN_DECLARATIONKT-72345 K2: Method ‘get’ without @Override annotation not calledKT-71260 K2: Internal compiler error in IrFakeOverrideSymbolBase.getOwner when there is no actual for expectKT-72996 false-positive unresolved reference error on an overloaded callable reference in a lambda return position on the left-hand size of an elvis operatorKT-72552 AutoboxingTransformer fails on during linkage on nested lambdas with cinteroped typesKT-71751 K2: Skipping code in last statement of lambdaKT-71121 Kotlin/JS incremental compilation fails with KotlinIllegalArgumentExceptionWithAttachmentsKT-60521 Drop language versions 1.4 and 1.5KT-70461 K2: “Inline class types should have the same representation” caused by value class and smart checkKT-72238 Argument type mismatch in builder inside extension function after ?:KT-70306 K2: Lambdas are unserializable: inferred from Java param ? super IKT-67383 Incorrect optimisation when optimising for loop with UByteKT-68653 Switch latest stable language version in Kotlin project to 2.1KT-71708 False negative UNSUPPORTED for collection literals as trailing return valueKT-72281 K/N: “Failed to wait for cache to be built”KT-72017 Enum property reflection returning null KClassifier property for Enum classes defined inside Kotlin ScriptsKT-69040 PCLA: deal with “deep” calls that can be fully analyzed properlyKT-69920 K2: java.lang.IllegalArgumentException: FirNamedArgumentExpressionImpl.replaceConeTypeOrNull() during Space project compilationKT-69549 Try to move callable reference transformation earlier in pipelineKT-63944 Kotlin/Native: Cache flavor selection doesn't respect GC kindKT-71649 K2: Put operator on mutableMap<T?, V>() causes crashes on null keyKT-70667 K2: “Type parameter * has inconsistent bounds” caused by wildcard and where-clauseKT-70562 @SubclassOptInRequired cannot accept multiple experimental markerKT-69407 K2: Compiler crash (Shouldn't be here) due to unresolved reference in FirProjectionRelationCheckerKT-71508 JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS isn't reported when java class is inherited from an effectively private classKT-72178 K2: “Unexpected FirPlaceholderProjectionImpl” exception when using “_” as key type in EnumMapKT-70407 Error/warning message for @SubclassOptInRequired-annotated class should provide more contextKT-72302 K2: no error on type operator in annotation parameter default valueKT-58820 OPT_IN_USAGE_ERROR's message text does not account for SubclassOptInRequiredKT-71662 PCLA: a type variable is not fixed on demand to a type containing a not-fixed type variableKT-69739 K2: “KotlinIllegalArgumentExceptionWithAttachments: Unexpected FirPlaceholderProjectionImpl” caused by unresolved referencesKT-72154 Dokka fails with not array: KClass<out Annotation> on Kotlin 2.1.20-dev with @SubclassOptInRequiredKT-70756 K2. Compiler crash with FileAnalysisException on incorrect symbol in nesting lambdaKT-72173 K2: simple object names from root package are resolved without imports in non-root packages when used as valuesKT-71480 JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS isn‘t reported while java object isn’t createdKT-71034 Failing compiler/testData/codegen/box/inlineClasses/kt70461.ktKT-71016 K/Wasm: Failing compiler/testData/codegen/box/inlineClasses/kt70461.ktKT-52469 Deprecate reified type parameter instantiating into intersection typesKT-71753 PCLA: false-negative operator ambiguity error on fixing a type variable on demand for an operator assignmentKT-59871 K2: Fix introduced diagnosticsKT-71563 ‘llegalStateException: Source classes should be created separately before referencing’ when actualized through typealias and java direct actualizationKT-64741 Avoid leaking ConeTypeVariable types in diagnostics from PCLAKT-60447 Builder inference fails to infer generic type argument from local classKT-69170 K2: “Unresolved reference” caused by generics and fun interfacesKT-71756 K2 evaluator: broken resolve of private members during debug of Kotlin project itselfKT-68893 Invalid annotation in contract crashes with K2KT-71490 K2: missing REDUNDANT_ELSE_IN_WHENKT-64403 Implement BlackBoxCodegenTestSpecGenerated for K2KT-71551 JVM IR K1: NPE on generating a function imported from an object from another moduleKT-71210 K2: false negative FUNCTION_CALL_EXPECTED / NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE with companion objectsKT-71528 K2/JVM: ClassCastException around Array<Nothing?>KT-71228 K2: “IllegalArgumentException: Failed requirement” caused by lambda parameter and class typeKT-71738 K2: False negative REDECLARATION inside object expressionKT-71701 K2: false positive CAN_BE_VAL with lateinit and non-in-place lambdaKT-68694 K2 IDE / Kotlin Debugger: AE “Unresolved reference: <HIDDEN: samples/gen/classes/enum class/EnumClass.lam is invisible” on evaluating private lambda inside enum entryKT-70970 K2 IDE / Kotlin Debugger: AE “Only assignable IrValues can be set” on calling overloaded inc() operator on interfaceKT-70824 K2: NoSuchFieldException when evaluating private extension propertyKT-70390 K2 IDE / Kotlin Debugger: can't invoke lambda from private class during evaluationKT-68701 K2 IDE / Kotlin Debugger: AE “ERROR_CALL ‘Unresolved reference: <HIDDEN: /privateLambda is invisible>#’ type=IrErrorType(null)” on evaluating private top-level lambdaKT-68695 K2 IDE / Kotlin Debugger: AE “Unsupported callable reference” on evaluating ::lateinitStr on private lateinit propertyKT-70861 K2 IDE / Kotlin Debugger: can't evaluate Clazz::class call for private classKT-34911 Improve error message for WRONG_ANNOTATION_TARGET: list applicable targetsKT-71601 K2: When with a subject of type dynamic always considered exhaustiveKT-33091 Kotlin/Native: Compiler crashes if an external class is declaredKT-59651 K1/K2: Assertion error on external enum usage attemptKT-69939 Extract a category of internal FIR checkers from supplementary FIR checkersKT-70850 Pull down typeArguments from ConeKotlinType to ConeClassLikeTypeKT-71117 K2: “IllegalArgumentException: No type for StarProjection” with star projection and function typeKT-71251 Native & JS K2: Missing check for calling isInitialized inside inline funKT-70161 Native: extracting LLVM 16 on Linux makes the compiler print many “Ignoring unknown extended header keyword ‘LIBARCHIVE.creationtime’” messagesKT-71215 K2: UB due to the erroneous greening of the red code with multiple delegation with javaKT-59386 K2: Missing CONSTANT_EXPECTED_TYPE_MISMATCHKT-69564 Make using -Xuse-k2 compiler flag an errorKT-69756 TypeOfLowering: don't create constant object nodes before inliningKT-66328 K2: implement an error for KT-66324KT-71046 K/N: a separate lowering to convert function reference to IrConstantObjectKT-69223 Drop parallel lowering mode in JVM backendKT-70260 @JsPlainObject: improve compiler error if a method is presentKT-67739 Improve error message when JDK used in -Xjdk-release has corrupted class filesKT-63964 K2: different naming of classes defined in script in metadataKT-70014 Common inference: introduce rigidTypeMarkerKT-71352 Cannot load script definition class org.gradle.kotlin.dsl.KotlinProjectScriptTemplateKT-63502 Getting java.lang.ClassNotFoundException: javaslang.λ during compilationKT-66316 Kotlin/Native: make @Escapes annotation required for all external functionsKT-69653 Prohibit exposing types via type parameters' boundsKT-68451 Inconsistent rules of CFA in enum initialization blockKT-70893 K2: Bogus NO_COMPANION_OBJECT on resolve to private qualifierKT-70965 FIR/AA: Initializers for Java annotation arguments mapping capture use-site sessionsKT-63945 K2: Prevent possible diagnostic lossKT-64453 K2: Implement ComposeLikeIr...TestGenerated for K2KT-30424 Confusing error message “modality is different”KT-70846 Replace ConeKotlinType.nullability with isMarkedNullable on specific typesKT-56720 K2: false positive MANY_IMPL_MEMBER_NOT_IMPLEMENTED in case of delegation in diamond inheritanceKT-69937 Define & enforce user-friendly terminology for extended checkersKT-64406 K2: Implement CompileKotlinAgainstJavaTestGenerated for K2KT-69938 Validate sets of default compiler warnings and supplementary compiler warningsKT-68971 Investigate suspicious fragmentation of FIR trees for string literals with interpolationKT-71073 Multi-dollar strings: parser grabs too much if backticks follow a short sequence of ‘$’KT-71213 Rethrow exceptions in checkers with some useful attachmentsKT-70395 K2: “Captured Type does not have a classifier” caused by out type and interface hierarchyKT-70133 K2: false negative UNINITIALIZED_VARIABLE when postponed lambda is created before initializationKT-70625 K2: ClassCastException caused by function reference, star projection and invariant type parameterKT-70835 K2: “TYPE_MISMATCH” caused by operator assignmentKT-70366 K2: "KotlinIllegalArgumentExceptionWithAttachments: Failed to find functional supertype for class "KT-68834 Parentheses don't influence calls of any convention operators (except invoke operator) after safe navigation operatorKT-70358 K2: “java.lang.IllegalArgumentException: No type for StarProjection” when using a star projection on a function typeKT-69298 K2: “Initializer type mismatch” caused by elvis operator type inference for nullable typealiasKT-71189 K2: emit ‘DELEGATE_SPECIAL_FUNCTION_MISSING’ and ‘DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE’ on ‘by’ keywordKT-71178 K2: False negative NO_ELSE_IN_WHEN in when over nullable type with !is Nothing? checkKT-70812 False positive NO_ELSE_IN_WHEN with nullable type argument as subjectKT-70947 False positive NO_ELSE_IN_WHEN with DNN subject and nullable sealed class upper boundKT-70752 Review diagnostics with whole declaration as rangeKT-71160 K2: Rendering of flexible collection types and arrays is too verboseKT-61227 Definitely non-nullable types cause “Any was expected” for @Nullable parameterKT-69389 K2: NONE_APPLICABLE instead of more useful “type mismatch” error with overloads and parameter nullability mismatchKT-69829 Missed UNRESOLVED_LABEL for label in returns and loopsKT-61223 JDK 21: new addFirst/addLast and putFirst/putLast methods allow adding nullable value for non-null typesKT-66742 Supertypes with inaccessible type arguments are allowedKT-62906 Type system: consider changing simple type & DNN type relationKT-70104 Update the error message for calling super Java interface methods caseKT-69794 K2: Wrong target is reported for EXPOSED_SUPER_INTERFACE diagnosticKT-70724 False-positive UNINITIALIZED_VARIABLE for inline constructor with late-initialized variablesKT-70749 False-positive UNINITIALIZED_VARIABLE for inline fun with crossinline modifierKT-65805 Migrate builtins serializer to K2KT-71004 FirSignatureEnhancement#enhance mutates attributes on the original functionKT-70813 Questionable behavior for calls on ILT receiversKT-70208 ‘when’ is not exhaustive for expect BooleanKT-69210 Native: tune LLVM optimization pipelineKT-70753 K2: Missing non-null assertion on the return value of try-catch blockKT-70012 EXTENSION_SHADOWED_BY_MEMBER shouldn't be reported for actual declarationsKT-70837 K2. “Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSource” on incorrect call with extension funKT-66751 Implement a general deprecation of types with inaccessible type argumentsKT-68748 K2: Remove irFactory from Fir2IrComponentsKT-61659 K2: Implement the EXTENSION_SHADOWED_BY_MEMBER warningKT-70709 Range for MUST_BE_INITIALIZED shouldn't include property annotationsKT-63294 Do not use duplicated compiler argument names across the codebaseKT-70673 False positive NO_ELSE_IN_WHEN with nullable Boolean as subjectKT-70672 False positive NO_ELSE_IN_WHEN with nullable Enum as subjectKT-69207 Native: use lld when the compiler produces binaries for a Linux targetKT-67696 Native: compiler crashes when loading an LLVM bitcode file of unsupported versionKT-69767 K2: Investigate differences in tests without alias behavior for cyclic expansionKT-70617 K2: ClassCastException caused by Java enum with overridden name propertyKT-68796 Non-first invoke operator calls break chained calls of convention operators after safe navigation operatorKT-67772 K2: Metadata misses NoInfer annotation for unsafeCast resultKT-70304 [FIR2IR] Missing @NoInferKT-65085 K2: Get rid of special check for unresolved array literals on argument mapping phaseKT-65066 K1 crashes, K2 doesn't report type mismatch on array literal inside nested annotation callKT-49235 Kotlin interface limited to 1000 super typesKT-69991 K2/JVM: Backend crash with functional types and KFunctionsKT-7461 Forbid using projection modifiers inside top-level Array in annotation's value parameterKT-52315 Legacy keywords (header, impl) break enum definitionsKT-69499 Native: aggressive inline of runtime procedures causes compiler crash in debug buildsKT-69737 Native: incompatible target-cpu attributes between runtime and Kotlin codeKT-69911 Unexpected line numbers in default setterKT-61529 K2: Unexpected FirClassLikeSymbol null with -no-jdkKT-69475 K2: No “Name contains illegal characters” for package name with dots insideKT-69484 Native: remove default values for isObjectTypeKT-70352 K2: False-negative CONFLICTING_UPPER_BOUNDS on Nothing boundKT-59781 K2: investigate implicit cast generation in fir2ir vs psi2irKT-70036 [FIR2IR] Fix param name in overridden setterKT-68718 [JVM] Generic function is instantiated with wrong type argumentKT-67983 K2: False negative “Recursive type alias in expansion” at recursive typealiasesKT-70328 K2: @UnsafeVariance stored in the metadata despite the Source retentionKT-70313 K2: Don't add Any supertype to kotlin.Nothing compiled from sourcesKT-69982 K2: New errors when executing :kotlin-stdlib:jvmJarKT-70169 K2: implement a deprecation error for Synchronized, Throws, JvmField on annotation parametersKT-67651 K2: inconsistency in behavior for SAM constructor with flexible typeKT-63857 K2: Extra operator modifier in metadataKT-70182 K2: Set up isOperator flag according to operator naming conventions during building synthetic overrides for Java methodsKT-20798 Implement a deprecation warning for reified modifier on type parameters of type aliasKT-68697 K2 IDE / Kotlin Debugger: NSEE “List is empty.” when method reference is used in some place in codeKT-70157 K2: false positive JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS for a Java private classKT-68702 K2 IDE: AE “SyntheticAccessorLowering should not attempt to modify other files!” on evaluating of supermethods toString() and hashCode()KT-69509 K2 IDE / Kotlin Debugger: exception in lowering ReplaceKFunctionInvokeWithFunctionInvoke when compiling code fragmentKT-66323 K2: Clarify contracts of ConeSubstitutorByMapKT-69652 K2: False positive “Redundant visibility modifier” with explicitApi()KT-65815 K2: False-positive NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY with inline function returning Nothing?KT-60508 K2/stdlib: compilation of common code fails if built-in types are provided as platform sourcesKT-70037 K2: Generate IR body for Any constructor despite that fact it's emptyKT-69870 K2: False positive NO_VALUE_FOR_PARAMETER for override without default but base with default and with enabled KMPKT-69599 K2: Investiage and fix lots of UNRESOLVED_REFERENCE during building stdlib native with K2KT-68375 K2: FirPrimaryConstructorSuperTypeChecker fails on generated superclassesKT-58309 Deal with test failures inside FirTypeEnhancementTestGeneratedKT-27112 Implement prohibition of exposing types via type parameters' boundsKT-69831 Add long FastJarFS tests to the nightlyFirCompilerTest configurationKT-69537 K2: Unintentional behavior caused by InferMoreImplicationsFromBooleanExpressionsKT-59814 K2: Explore why FirDataFlowAnalyzer strips away value parameters of non top-level-functionsKT-69069 K2: expect overloads are deprioritized in common codeKT-69511 KJS / K2: False positive IMPLICIT_BOXING_IN_IDENTITY_EQUALS when comparing dynamic with primitiveKT-69500 Native: introduce an option to inline less “ALWAYS_INLINE” runtime proceduresKT-69717 K2: Don't call coneType/coneTypeOrNull extensions on FirResolvedTypeRefKT-60440 K2/Java: investigate constructor own type parameters enhancementKT-69871 K2 allows modifier keywords on package declarationKT-61271 Frontend: “The label does not denote a loop.” error message is used even if the label does denote a loopKT-69768 K2: Investigate differences in tests without alias behavior with typealias to enum entryKT-63846 K2: incorrect type argument inferred for smart cast value of a generic typeKT-69774 Don't report overload resolution ambiguity if extension receiver contains error typeKT-61316 K2: Consider throwing exception when replaceType is called on special FirExpressions with immutable typesKT-69201 Discard expect candidate in overload conflict resolver if there is no actualKT-69557 K2: Investigate failures with enabled assertion in ConeResolvedAtom constructorKT-69783 K2: Make FirTypeProjection sealedKT-68000 Investigate getting container functions in checkersKT-69649 K2: Cleanup various utilities about toSymbol conversionKT-69185 K2: Prepare a test runner for diagnostic tests with type aliases non-expanded automaticallyKT-69390 UNRESOLVED_REFERENCE on call with lambda argument turns whole call redKT-68794 K2 IDE / Kotlin Debugger: ISE “No real overrides for FUN FAKE_OVERRIDE name:privateFun visibility:private modality:FINAL” on calling private function from superclass in debuggerKT-69315 FirJavaGenericVarianceViolationTypeChecker: StackOverflowErrorKT-49962 “Visibility inherited is not allowed in forVisibility” when analyzing broken fileKT-24212 Report “This class shouldn't be used in Kotlin” on calling constructor of Java class with Kotlin analogKT-64195 K2: Consider make FirAnonymousInitializer. containingDeclarationSymbol not nullKT-64254 “Projections are not allowed on type arguments of functions and properties”: Type-project type arguments of propertiesKT-40533 Error message PROPERTY_WITH_NO_TYPE_NO_INITIALIZER for interface property is not fully correctKT-20014 Improve diagnostics for lateinit property without initializer and type annotationKT-51366 False positive error “Value class cannot extend classes” when extending generic interface with wrong number of type argumentsKT-68277 K2: false positive UNREACHABLE_CODE for non-local return/breakKT-69544 K2: Mapped Java @Target annotation's vararg argument has swapped type and elementTypeKT-68998 K2: Refactor postponed atomsKT-69288 Native: Apple LLVM 16 fork can't read bitcode with memory attribute produced by upstream LLVM 16KT-67808 K2: Inconsistent properties initialization analysis in init blocks in presence of smartcast on thisKT-69035 K2: Investigate potential removal of FirManglerKT-69473 Missing suspend-conversion for lambda in the last statement of when with expected typeKT-64640 Prevent mutating SequenceCollection methods from JDK 21 be available on read-only collectionsKT-65441 K1: Remove JDK 21 getFirst()/getLast() in (Mutable)List interfacesKT-54792 Store program order of properties inside @kotlin.MetadataKT-59832 K2: Fix the TODO about merging values for labels in UnusedChecker
Compose compiler
New features
b/328817808 Added the PausableComposition feature flags83c48a0 Decoy support for JS target is removed from Compose compiler
Fixes
CMP-6926 iOS compilation failure: Unresolved reference ‘copy’CMP-6842 FAKE_OVERRIDE declarations are not preserved in metadata and should not be marked with annotationsCMP-6788 non-private field compilation warnings (stableprop & ComposableSingletons)CMP-6685 Native/WASM compilation failure on Composable function with value-type arg + returnb/376058538 Fix stack overflow when inferring stability of indirect generic loopb/339322843 Transform @Composable property delegate referencesb/366040842, b/365066530 Replace deep copy in Compose plugin with in-place type mutationb/329477544 Force open / overridden Composable functions to be non-restartable.b/361652128 Disable live literal transform if the corresponding flag is disabledb/325004814 [Compose] Fix infinite recursion in target analysisb/357878245 Disallow open @Composable functions with default params to fix binary compatibility issues.b/338597078 [Compose] Fix target warning messageb/351858979 Fix stability inferencing of interfaces on incremental compilationb/346821372 [Compose] Fix code generation for group optimizationb/339311821 Give warning when stability configuration file is not foundb/346821372 Fixes group generation for if statements when nonSkippingGroupOptimization is enabled.
IDE. Gradle Integration
KT-48554 [Multiplatform Import] Ensure consistency between GradleImportProperties and PropertiesProvider
IR. Actualizer
KT-71631 Kotlin-to-Java direct actualization: java annotation element isn't actualizedKT-71597 Kotlin-to-Java direct actualization: it is possible to actualize a function with default parametersKT-71592 Kotlin-to-Java direct actualization: constructor of nested class can't be actualizedKT-71577 Kotlin-to-Java direct actualization: method can be actualized by java static methodKT-69632 K2: Expect actual mismatch on actualization with alias to expect classKT-71817 Actualization of static members is broken for non-JVM platforms
IR. Inlining
New Features
KT-69527 Set the right visibility for synthetic accessors in SyntheticAccessorLowering
Fixes
KT-71232 Implement an IR validation check that ensures that all IrFields are private on non-JVM backendsKT-69307 Source offsets seem incorrect after IR inliningKT-72884 Internal error in body lowering: IllegalStateException: Can‘t inline given reference, it should’ve been loweredKT-71659 IR Inliner fails to inline function expressions due to implicit cast from the 1st phase of inliningKT-69681 IR: Report warnings on exposure of private types in non-private inline functionsKT-72521 Kotlin/Native: java.lang.AssertionError: kfun:androidx.compose.runtime#access$<get-androidx_compose_runtime_ProvidedValue$stable>$p$tComposerKt(){}kotlin.IntKT-72623 Don't generate synthetic accessors in files other than the one being loweredKT-70420 Enable double-inlining in Native & JS backends by defaultKT-67292 Handling assertions before the IR inlinerKT-70423 KLIB: SyntheticAccessorLowering - generate static factory functions instead of synthetic constructorsKT-69565 Don't generate synthetic accessors for private symbols inside local classesKT-69787 Handle clashes of synthetic accessors generated for top-level callablesKT-71137 Generate synthetic accessors for backing fieldsKT-67172 Native & JS: Introduce OuterThisInInlineFunctionsSpecialAccessorLoweringKT-64865 Explicitly generate accessors for private declarations in inline functionsKT-71657 K/JS: Double-inlining causes failures in IC with top-level synthetic accessorsKT-71078 Inline all functions in local classes at the 1st stage of inliningKT-69802 Don't extract local classes from inline functions in double inlining modeKT-66508 IR inliner: Add implicit cast for initializer of temporary variablesKT-66507 IR inliner: Enable implicit casts in all KLib backendsKT-69466 IrInlinedFunctionBlock: Refactor it to make it possible to serialize in KLIBsKT-69317 IR Inlining. Try to place inlined arguments outside IrInlinedFunctionBlockKT-67149 Common Native/JS lowering prefix at the 2nd phase of compilationKT-69172 Implement double-inlining for NativeKT-67304 Keep in common prefix: Shared variables + local classes in inline lambdasKT-67170 ArrayConstructorReferenceLowering is missing in NativeKT-70583 Internal error in body lowering: java.lang.IllegalStateException: An attempt to generate an accessor after all accessors have been already added to their containersKT-69700 Inline stub_for_inlining use sites survive after the inlinerKT-69462 Support dumping IR after inlining in compiler testsKT-70693 IR: replace IrReturnableBlock.inlineFucntion with IrInlinedFunctionBlock.inlineFucntionKT-70763 IR inline: consider storing stub_for_inline as an inlined function for callable referenceKT-69168 Wrap assertion calls before IR inlinerKT-69167 Create intrinsics in stdlib for handling assertions in KLIB-based backendsKT-69169 Expand assertion intrinsics in backend based on CLI parametersKT-69174 Implement the basic Synthetic Accessors Lowering for KLIB-based backends
IR. Interpreter
KT-70388 K2 IDE / Kotlin Debugger: InterpreterError “Unsupported number of arguments for invocation as builtin function: INT_MAX_POWER_OF_TWO” during evaluation
IR. Tree
Fixes
KT-69644 Report warning on cross-file IrGetField operations generated by compiler pluginsKT-68789 Prepare tests for testing visibility (non-)violation in inlined IRKT-71826 stdlib fails to compile with -Xserialize-ir=allKT-70333 IR: remove ability to apply compiler plugins during KAPT stub generation phaseKT-67752 Make copyRemappedTypeArgumentsFrom and transformValueArguments methods in DeepCopyIrTreeWithSymbols protected instead of privateKT-68151 Setup testing visibility of referenced declarations in IRKT-68988 [Tests] Streamline the order of irFiles in IR- and Kotlin-like dumpsKT-65773 Auto generate IR implementation classesKT-70330 Automatically keep track of IrValueParameter.indexKT-68495 Compile-time failure on bounded generic value used in a contains-check with rangeKT-68974 Validate scopes of IrValueParameters in IrValidator
JavaScript
New Features
KT-70254 K/JS: Generate arrows in ES6 mode instead of anonymous functionsKT-70283 KJS / ES6: Don't generate bind(this) calls for anonymous functions that capture this
Fixes
KT-43567 KJS: toString() method and string interpolation of variable produce different codeKT-70533 KJS: changed string concatenation behavior in 2.0KT-14013 JS toString produces different result for nullable/non-nullable ref to the same arrayKT-72732 KJS / ES6: “SyntaxError: ‘super’ keyword unexpected here” with enabled -Xir-generate-inline-anonymous-functions and disabled arrow functionsKT-69408 [JS] Enable insertAdditionalImplicitCasts=true (as in other KLIB-based backends)KT-71821 K/JS tests are failing with coroutines flow and turbine on timeoutKT-31799 Allow non-identifier characters in Kotlin/JS (backquoted properties, @JsName)KT-55869 Coroutine is not intercepted, when the coroutine is started calling startCoroutineUninterceptedOrReturn using callable referenceKT-70117 Generate debug info for code from js callKT-69642 ES generator-based coroutines rely on evalKT-67452 K2: Consider hiding dynamic type creation under FlexibleTypeFactory for JS onlyKT-70226 Delete JS tests that were only run with the legacy JS backendKT-71338 K/JS: Add a flag for switching generating arrow functions on & offKT-69173 Implement double-inlining for JSKT-67327 JS: Remove error toleranceKT-69892 Array.isArray() returns false for an instance returned by KtList.asReadonlyArrayView()KT-70231 Delete the org.jetbrains.kotlin.cli.js.dce.K2JSDce classKT-69928 KJS: keys() and values() of KtMap‘s JS view don’t behave as expectedKT-70707 KJS: asJsReadonlyMapView does not implement ReadonlyMap correctlyKT-71220 Fix invalid IrFunctionReference creation in InnerClassConstructorCallsLoweringKT-70393 Investigate failing JS test after switch stdlib compilation to K2KT-64429 K2: Implement KlibJsIrTextTestCaseGenerated for K2KT-69587 [Tests] Fix multi-module deserialization in JS irText testsKT-70219 Delete the org.jetbrains.kotlin.cli.js.K2JSCompiler classKT-70221 Rename org.jetbrains.kotlin.cli.js.K2JsIrCompiler to K2JSCompilerKT-70229 Remove test classes related to the legacy JS backendKT-70359 Remove legacy backend-related test directives from Kotlin/JS testsKT-70362 Clean up Gradle tasks for running JS tests against the legacy JS backendKT-66181 Reorganize JsCodeOutliningLowering and keep it before the IR inlinerKT-30016 JS BE does not generate special bridge methodsKT-68975 KJS: Investigate calling js(...) from inline functions
KMM Plugin
KT-71011 AS KMP plugin: ios application can't start for 2024.2.1
Klibs
New Features
KT-64169 [KLIB Resolve] Don't skip libraries that happen to have the same unique_nameKT-68322 Compiler (JS, Wasm): warn about incompatible Kotlin stdlib/compiler pair
Fixes
KT-61098 [KLIB Resolve] Don't allow working with KLIB “repositories”KT-72965 Ignore subclassOptInRequired constructor warningKT-68792 Bump KLIB ABI version in 2.1KT-67474 K2: Missing @ExtensionFunctionType in metadata in KLIBsKT-71633 [2.1.0] Suspicious “Argument type mismatch” errorKT-70146 [KLIB Resolve] Don't fail on nonexistent transitive dependencyKT-71455 [KLIB Resolve] Forbid passing KLIB unique names via CLIKT-67448 [KLIB Resolve] Deprecate passing KLIB unique names via CLIKT-67450 [KLIB Resolve] Kotlin/Native: Only one implicit repository should remain for the compiler (“dist”)KT-70285 Warning about incompatible stdlib (JS/Wasm) is not reported if stdlib is unpackedKT-66218 Clean-up the code for serialization & deserialization of DFGs to & from KLIBsKT-71414 KotlinLibraryResolver.resolveWithDependencies was evolved in binary incompatible wayKT-68195 move KlibMetadataProtoBuf to frondend-independent module
Language Design
KT-54617 Stabilize @SubclassOptInRequired: ability to require opt-in for interface implementationKT-54458 Preview of non-local break and continueKT-69924 Mention ‘if’ guard when ‘&&’ is used incorrectlyKT-71222 Remove @ExperimentalSubclassOptIn from SubclassOptInRequiredKT-67675 Allow usage of Array<Nothing?>KT-70754 Changes in typeOf behaviour for Kotlin/NativeKT-58659 Prohibit implementing a var property with an inherited val property
Libraries
Performance Improvements
KT-66715 Performance: faster alternative to String.lines()
Fixes
KT-71628 Review deprecations in stdlib for 2.1KT-69545 Kotlin/Native: Deprecate API marked with FreezingIsDeprecated to errorKT-56076 K2: build Kotlin standard libraryKT-71660 Stabilize experimental API for 2.1KT-54299 Extract org.w3c declarations to separate library from K/Wasm StdlibKT-68027 Document caveats and deincentivise usage of measureTimeMillisKT-71581 Update outdated documentation to common lazy and provide samplesKT-71796 Improve documentation for Path.walk and Path.visitFileTree functionsKT-68019 Fill in missing package descriptions for standard library documentationKT-52181 Native: Inconsistent behaviour of LinkedHashMap#entries on JVM and NativeKT-71570 Document suspend lambda builderKT-65526 Rewrite builtins as expect-actualKT-68502 K2: Fix or suppress stdlib K2 warningsKT-68731 K2: Handle some formally incompatible expect/actual classes in JVM stdlibKT-70378 Implement custom serialization for UuidKT-70005 K/Wasm and K/Native: IntArray.sort - array element access out of boundsKT-66764 kotlinx-benchmark: rework on kotlin-compiler-embeddableKT-69817 Set up klib binary API validation for stdlibKT-68396 Handle some formally incompatible top-level expects/actuals callablesKT-69524 kotlin.uuid.Uuid: checkHyphenAt - error message always specified index 8KT-69327 [native] FloatingPointParser.initialParse works incorrectly for some inputsKT-46785 Get rid of !! after readLine() in the standard library
Native
KT-71435 Native: cannot access class ‘objcnames.classes.Protocol’KT-49279 Kotlin/Native: update LLVM from 11.1.0 to 16.0.0KT-61299 Native: patch LLVM to prevent it from using signal handlers incompatibly with JVMKT-69637 Native: our LLVM shouldn't advise submitting bugs to the upstreamKT-64636 kotlin.incremental.native=true causes IrLinkageErrorKT-69142 ObsoleteWorkersApi and FreezingIsDeprecated is not displayed on targets in webdocs
Native. Build Infrastructure
KT-71820 Update the coroutines version used in kotlin-native build infrastructureKT-69479 Native: remove custom python version building from the LLVM builder container imageKT-63214 [K/N] llvm build script fails with MacOSX14.0.sdk sysroot
Native. ObjC Export
KT-62997 IllegalStateException for hashCode(): KClass for Objective-C classes is not supported yetKT-59497 KClass.simpleName returns null in ObjC-inherited class
Native. Platform Libraries
KT-70032 Rebuild platform libraries in 2.1.0 with Xcode 16KT-69448 LLVM 16 clang with Xcode 16 headers: ‘sys/cdefs.h’ file not found
Native. Runtime
KT-70680 Kotlin/Native: Use WritableTypeInfo when creating Swift wrapper from the runtimeKT-70568 Native: revert workaround for debug with LLVM 16KT-67730 Native: fix runtime compilation warnings after update to LLVM 16
Native. Runtime. Memory
KT-72624 Native: testRelease_on_unattached_thread sometimes fails with Releasing StableRef with rc 0KT-71401 K/N: CMS barrier can be executed on an unregisterred threadKT-70364 Kotlin/Native: data race during GC initializationKT-68544 [Native] Implement heap dump toolKT-70365 Kotlin/Native: make thread id be pointer size
Native. Swift Export
New Features
KT-71539 Swift Export: export class member overridesKT-70442 Swift Export: export class inheritanceKT-68864 Refactor internal details of swift-export-standalone
Fixes
KT-70678 Swift Export: generate Kotlin<->Swift type mappingKT-70920 Swift Export Nullability: primitive typeKT-71087 Swift Export: Nullability: NeverKT-71086 Swift Export: Nullability: StringsKT-70919 Swift Export Nullability: reference typeKT-71026 Swift Export: function overloading with ref types does not workKT-70960 Swift Export nullability: add nullability to sir and printerKT-70063 Swift export generates invalid Swift code for class and function with the same nameKT-70069 Swift export: filter out extension propertiesKT-70068 Swift export: nullable types are not marked as unsupportedKT-69287 Swift Export: support leaking dependenciesKT-69633 Provide interface for multiple module translationKT-69286 [Swift Export][TestInfra] Support translating multiple rootsKT-69376 Property with Any type does not force addition of import
Reflection
KT-71378 KotlinReflectionInternalError: Inconsistent number of parameters in the descriptor and Java reflection object
Specification
Tools. CLI
New Features
KT-8087 Make it possible to suppress warnings globally in compiler (via command-line option)KT-71537 Add JVM target bytecode version 23
Fixes
KT-70991 K2: Compilation fails if project version has a commaKT-70179 K2: Building a file with kotlin-test-junit without junit does not include annotationsKT-72311 KotlinCliJavaFileManagerImpl caches empty result and broke repeated analysesKT-61745 K2: support light tree in multi-module chunk modeKT-70885 Errors are not reported for wrong arguments in -Xsuppress-warning flag for non-jvm backendsKT-69541 K2: “IllegalArgumentException: Unexpected versionNeededToExtract” on using JAR packaged as ZIP64KT-69434 K2: Kotlin compiler JarFS can't handle large dependencies (>2GB)KT-70959 K2: Support legacy metadata jar format in K2 compilerKT-70337 Obsolete code is not removed after refactoring - JvmEnvironmentConfigurator.registerModuleDependenciesKT-70322 Merge CLITool and CLICompiler classes
Tools. CLI. Native
KT-68673 Kotlin/Native “You have not specified any compilation arguments. No output has been produced” when no source nor -Xinclude is passed
Tools. Compiler Plugins
Fixes
KT-72804 Regression in Kotlin 2.1.0: compilation fails when building iOSKT-72824 Kotlin power-assert plugin StringIndexOutOfBoundsExceptionKT-71658 Transform top-level atomic properties to Java boxed atomicsKT-65645 Atomicfu-plugin: compilation hangs on a long string concatenationKT-69038 Power-Assert does not display const valsKT-71525 Setting JvmAbiConfigurationKeys.REMOVE_PRIVATE_CLASSES = true triggers java.util.ConcurrentModificationExceptionKT-41888 IrExpression startOffset and endOffset are inconsistent with raw file textKT-69856 Compose Plugin: IrType.erasedUpperBound throws NullPointerException when evaluating IrScript nodes due to missing targetClassKT-69410 PowerAssert: Cannot find overload of requireNotNull without existing messageKT-66293 Atomicfu-plugin: wrong return types for lowered extension functionsKT-69646 PowerAssert: result of array access operator is unalignedKT-70112 Power Assert: multiline assertion supportKT-70504 [atomicfu-plugin] Incremental compilation fails for atomic extensions on JVMKT-70351 K2 CodeGen API exception triggered by a compose compiler plugin lowering transformer for data class exampleKT-70113 Power Assert: tab supportKT-69806 K2: SOE on nested plugin-like annotation in class annotated with itselfKT-69538 jvm-abi-gen: Remove copy$default if data class constructor is private and ConsistentCopyVisibility is used
Tools. Compiler plugins. Serialization
KT-70110 Prohibit @Serializable on companion object of another @Serializable classKT-69388 Serialization: “You should use ConeClassLookupTagWithFixedSymbol” caused by @Serializable on local generic class
Tools. Daemon
KT-69929 compileKotlin task reports that daemon has terminated unexpectedlyKT-72530 The daemon has terminated unexpectedly on startup attempt #1 with error code: Unknown
Tools. Fleet. ObjC Export
Fixes
KT-71162 ObjCExport: nullable functional type with reference argumentsKT-71022 ObjCExport: enum c keywords translationKT-71082 ObjCExport: KotlinUnit translated as Function1KT-70781 ObjCExport: classifiers and callables type parameters translationKT-70943 ObjCExport: extension orderKT-70840 ObjCExport: duplicated interfacesKT-70642 ObjCExport: translate collection type arguments as idKT-70546 ObjCExport: method generic parameter is lost and translated as idKT-70329 ObjCExport: translation and forward of super generic typesKT-70263 ObjCExport: generic extension supportKT-69685 ObjCExport: extension translated as not extensionKT-70318 ObjCExport: translate companion typeKT-69252 ObjCExport: Get rid of context receivers from ./native/objcexport-header-generator
Tools. Gradle
New Features
KT-69940 Expose supplementary compiler warnings via KGPKT-71603 Introduce KotlinJvmExtension and KotlinAndroidExtensionKT-70383 KotlinJvmFactory registerKaptGenerateStubsTask() function should also request compilation task providerKT-65125 Provide basic support for Swift Export in Kotlin Gradle PluginKT-71602 Introduce KotlinTopLevelExtensionKT-69927 Need ability to pass KotlinJvmCompilerOptions to registerKotlinJvmCompileTask()KT-71227 [Compose] Add PausableComposition feature flag to the Compose Gradle PluginKT-68345 ‘composeCompiler#stabilityConfigurationFile’ doesn't allow setting multiple stability configuration files
Performance Improvements
Fixes
KT-71411 Add FUS statistics for new Dokka tasksKT-72495 Warn about kotlin-compiler-embeddable loaded along KGPKT-70543 Gradle: create migration guide for those who are using Kotlin compiler classes indirectly available in buildscriptsKT-69329 Compatibility with Gradle 8.9 releaseKT-71291 Log plugins from the list as Gradle pluginsKT-69255 Deprecate KotlinCompilationOutput#resourcesDirProviderKT-61706 Gradle: remove kotlin-compiler-embeddable from build runtime dependenciesKT-73128 Apply Kotlinlang template for partial HTMLsKT-47897 Official Kotlin Gradle plugin apiKT-58858 Add KDoc documentation for Kotlin Gradle plugin APIKT-73076 Kotlin Gradle Plugin API Reference: adjust settingsKT-72387 KGP 2.1.0-RC-227 changes cause KSP to crash calling produceUnpackedKlibKT-53280 Gradle plugin leaks some compiler related extensions into APIKT-69851 Compatibility with Gradle 8.10 releaseKT-65565 Remove deprecated common platform plugin idKT-69719 Bump minimal supported Gradle version to 7.6.3KT-69721 Bump minimal supported Android Gradle plugin version to 7.3.1KT-66944 Relax host requirements on Kotlin klib compilationKT-72651 Unable to use target for KotlinBaseApiPlugin.createKotlin(Jvm/Android)Extension()KT-72467 kotlin.sourceSets extension not added for KotlinBaseApiPlugin.createKotlinAndroidExtension()KT-72303 KGP 2.1.0-Beta2 broke compatibility with KSPKT-68596 Update KGP deprecations before 2.1KT-67951 Update Compose extension KDocKT-66049 KGP JVM: Publishing isn't compatible with isolated projects and project dependenciesKT-71405 Compose compiler gradle plugin: project.layout.file can't be used as a value of the ‘stabilityConfigurationFiles’ optionKT-71948 KotlinJvmFactory : get rid of replaces with TODO()KT-72092 Gradle: use packed klib variant as the default when no packaging attribute is presentKT-58956 Offer a shared interface for JVM and Android compilerOptions in Project extensionKT-70251 Gradle: hide compiler symbols in KGPKT-70430 Clean-up obsolete Gradle plugin variants for Gradle versions <7.6KT-69853 Compile against Gradle API 8.10KT-69852 Run Gradle integration tests against Gradle 8.10 releaseKT-65990 Update GradleDeprecatedOption.level values for arguments removed from the DSL after 2.1KT-69331 Run tests against Gradle 8.9 releaseKT-69332 Compile against Gradle 8.9 APIKT-67174 Cleanup old Test DSLKT-71071 BuildFusStatisticsIT.testInvalidFusReportDir test failes on WindowsKT-69585 KGP / Composite Build: “Could not apply withXml() to generated POM” during publishingKT-59769 Many “Unexpected exception happened” warnings during build without internet connection
Tools. Gradle. Cocoapods
KT-63811 cinterop fails to build klib for iosArm64 target when iOS simulator SDK isn't installedKT-70500 Remove useLibraries from CocoaPods pluginKT-56947 Replace AFNetworking with a smaller library in tests
Tools. Gradle. JS
KT-69628 K/Wasm: Node.js version per projectKT-71578 KotlinJS. Webpack does not recompile on changes with per-fileKT-71536 [JS, Wasm] Stop collecting information about KLIB IC in Kotlin2JsCompileKT-70621 Move kotlin-test-js-runner out of Kotlin repositoryKT-67442 KJS / Gradle: kotlinStorePackageLock fails due to OS-dependent lockfile with npm package manager
Tools. Gradle. Multiplatform
New Features
KT-70469 Add feature flag for Project Isolation and Kotlin MultiplatformKT-70897 Add KotlinBaseApiPlugin.kotlinAndroidExtension
Fixes
KT-71206 KGP: Test source set may get duplicated KLIBs of different versionsKT-71209 Drop Hierarchy Template diagnostic about used shortcutsKT-69412 Change KotlinTargetAlreadyDeclaredChecker's severity from warning to errorKT-70060 KGP: handleHierarchicalStructureFlagsMigration doesn't support project isolationKT-57280 Expose Kotlin Project Structure metadata via consumable configurations instead of accessing all gradle projects directlyKT-64999 Support Project Isolation with Kotlin Native tasks (XCode integration, Cocoapods etc)KT-64998 Granular Metadata Dependencies Transformation is not compatible with Project IsolationKT-70650 GenerateProjectStructureMetadata is not compatible with Project IsolationKT-71675 checkSandboxAndWriteProtection collides with Compose's syncComposeResourcesKT-66461 Promote compiler options DSL for multiplatform projects to stableKT-69323 Don't pass platform dependencies to metadata compilationKT-72454 Revert changes made in KT-69899 i.e. make kotlin.android.buildTypeAttribute.keep = false by default againKT-70380 KMM App failed to consume android binary libKT-71423 Xcode archive missing dSYM files since Kotlin 2.0.20KT-69899 KMP: Publish BuildType by default for android publications with multiple variantsKT-71428 Change deprecation message for KMP target shorcutsKT-58231 Kotlin Gradle Plugin: set deprecation level to Error for KotlinTarget.useDisambiguationClassifierAsSourceSetNamePrefix and overrideDisambiguationClassifierOnIdeImportKT-72068 Distribution for klib cross-compilation is not downloaded during compile tasksKT-70612 Report incompatibility warning when Project Isolation enabled and Included builds are usedKT-71529 Deprecate targetFromPreset API with an errorKT-69614 Deprecate with error ios/tvos/watchos presetsKT-69974 KMP: POM dependency rewriter doesn't work with Included Builds OR dependencySubstitutionKT-69472 Remove IncompatibleAgpVersionTooHighWarning diagnosticKT-64996 Commonize Native Distribution task is not compatible with Project IsolationKT-62911 Export Kotlin Multipaltform Project Coordinates as a secondary variant of apiMetadataElementsKT-70888 Project isolation: Project cannot dynamically look up a property in the parent project at PropertiesProvider.propertiesWithPrefixKT-70688 Move ExperimentalSwiftExportDsl to another packageKT-58298 AndroidAndJavaConsumeMppLibIT maintenance: Convert to new infrastructure and add test for newer AGP versionsKT-68976 K2 IDE: Unresolved FileSystem.SYSTEM from OKIO in shared source sets
Tools. Gradle. Native
KT-67162 KGP: Kotlin/Native with Isolated Projects: kotlinNativeBundleBuildService cannot be changed any futherKT-72366 KGP 2.1.0-Beta2 doesn't download kotlin-native-prebuilt when running DokkaKT-45559 CInteropProcess: Changes to header files are not recognized; Task is still UP-TO-DATEKT-71051 K/N dependencies are re-downloaded multiple times on WindowsKT-71398 kotlinNativeBundleConfiguration should not contain dependencies on unsupported platformsKT-71722 kotlinNativeBundleConfiguration present in JVM-only Gradle projectKT-55832 Support passing errors to Xcode when configuration cache is enabledKT-70690 not possible to build iOS app with Swift Export and Xcode 16KT-65838 Remove project usage from PlatformLibrariesGeneratorKT-70875 KSP1 native tasks fail on configuration phase
Tools. Incremental Compile
KT-69123 IC: “NoSuchFieldError: No instance field”. Not tracking changes to Android ViewBinding class
Tools. JPS
KT-68565 K2: IllegalStateException: Source classes should be created separately before referencingKT-71042 JAVA_MODULE_DOES_NOT_READ_UNNAMED_MODULE when compiling IntelliJ
Tools. Kapt
KT-72249 K2 KAPT Not picking up use site annontation like K1 KaptKT-69860 K2 kapt: use compiler directly instead of Analysis APIKT-71776 K2 Kapt in 2.1.0-Beta1 fails with e: java.lang.IllegalStateException: FIR symbol "class org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol" is not supported in constant evaluationKT-70879 Kapt: check that Kotlin 2.1 language features are ignored correctly by K1 kaptKT-71431 K2KAPT fails on modules without any annotation processorsKT-70600 K2 KAPT: inline reified function has a null signatureKT-70718 Kapt: “error: could not load module ” on error type in data class componentKT-69861 Kapt: use IR to obtain line information instead of PSI
Tools. REPL
KT-71109 Kotlin Scripting REPL doesn't support keyboard shortcuts
Tools. Scripts
KT-68685 K2 / Script: “KotlinReflectionInternalError: Unresolved class:” caused by main.kts script with nested classes and reflectionKT-68545 Using labeled this access to implicit receivers fails in scripts
Tools. Wasm
KT-67797 Improve the variable view during debugging in Fleet for Kotlin/WasmKT-71506 [Wasm, IC] FUS report for builds with incremental compilationKT-70100 wasmJs Target Fails to Compile on ARM64 LinuxKT-70367 Update binaryen once we get a release with PR 6793KT-67863 K/Wasm: Remove ChromeWasmGcKT-71360 K/JS & K/Wasm: Upgrade NPM dependenciesKT-70297 Wasm: Incorrect kotlinJsTestRunner version set in Multi-Project Builds with mixed kotlin-stdlibs
Previous ChangeLogs: