{"id":1936,"name":"com.android.application","ecosystem":"maven","repository_url":null,"issues_count":3727,"created_at":"2025-06-06T15:01:53.103Z","updated_at":"2025-06-06T15:01:53.103Z","purl":"pkg:maven/com.android.application","unique_repositories_count":1017,"unique_repositories_count_past_30_days":87,"recent_issues":[{"uuid":"5705556415","node_id":"PR_kwDOUEoZG88AAAABGn5Ryg","number":128,"state":"closed","title":"build: bump the gradle-minor-and-patch group across 2 directories with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-05T16:39:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-05T02:27:42.000Z","updated_at":"2026-10-05T16:39:47.000Z","time_to_close":51115,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build: bump","group_name":"gradle-minor-and-patch","update_count":5,"packages":[{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-and-patch group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.4.20` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `8.14.5` |\n\nBumps the gradle-minor-and-patch group with 2 updates in the /app directory: androidx.test.ext:junit and androidx.test:runner.\n\nUpdates `com.android.application` from 8.7.3 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.1.0 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.1.0...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:runner` from 1.6.2 to 1.7.0\n\nUpdates `gradle-wrapper` from 8.11.1 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:runner` from 1.6.2 to 1.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Slacker-LLC/openIME/pull/128","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slacker-LLC%2FopenIME/issues/128","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/128/packages"},{"uuid":"5682296041","node_id":"PR_kwDOSRYmZs8AAAABGV2r4A","number":632,"state":"closed","title":"build(deps): bump the android-deps group in /apps/android with 32 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T01:39:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-02T19:25:11.000Z","updated_at":"2026-10-03T01:39:36.000Z","time_to_close":22463,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"android-deps","update_count":32,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.wear.compose:compose-foundation","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.protolayout:protolayout","old_version":"1.4.1","new_version":"1.4.2"},{"name":"androidx.wear.protolayout:protolayout-material3","old_version":"1.4.1","new_version":"1.4.2"},{"name":"androidx.wear.tiles:tiles","old_version":"1.6.1","new_version":"1.6.2"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"org.commonmark:commonmark","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"org.junit.vintage:junit-vintage-engine","old_version":"6.1.2","new_version":"6.1.3","repository_url":"https://github.com/junit-team/junit-framework"},{"name":"io.kotest:kotest-assertions-core-jvm","old_version":"6.2.2","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.2","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"com.squareup.okhttp3:mockwebserver","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"com.squareup.okhttp3:okhttp","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.3.0","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.0","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.10","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":"/apps/android","ecosystem":"maven"},"body":"Bumps the android-deps group in /apps/android with 32 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.8.0` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.wear.compose:compose-foundation | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| androidx.wear.protolayout:protolayout | `1.4.1` | `1.4.2` |\n| androidx.wear.protolayout:protolayout-material3 | `1.4.1` | `1.4.2` |\n| androidx.wear.tiles:tiles | `1.6.1` | `1.6.2` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [org.commonmark:commonmark](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) | `6.1.2` | `6.1.3` |\n| [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest) | `6.2.2` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.2` | `6.2.5` |\n| [com.squareup.okhttp3:mockwebserver](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.3.0` | `9.4.1` |\n| com.android.library | `9.3.0` | `9.4.1` |\n| com.android.test | `9.3.0` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.10` | `2.3.12` |\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.appcompat:appcompat` from 1.7.1 to 1.8.0\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.wear.compose:compose-foundation` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.protolayout:protolayout` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.protolayout:protolayout-material3` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.protolayout:protolayout-material3` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.tiles:tiles` from 1.6.1 to 1.6.2\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-autolink` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-autolink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-autolink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to rem...\n\n_Description has been truncated_","html_url":"https://github.com/l3ocifer/puck-openclaw/pull/632","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3ocifer%2Fpuck-openclaw/issues/632","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/632/packages"},{"uuid":"5675374598","node_id":"PR_kwDOU4gbIc8AAAABGQU6GQ","number":5,"state":"closed","title":"Bump com.android.application from 8.10.1 to 9.4.1","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-02T16:58:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-02T09:14:41.000Z","updated_at":"2026-10-02T16:59:02.000Z","time_to_close":27851,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"8.10.1","new_version":"9.4.1","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps com.android.application from 8.10.1 to 9.4.1.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=8.10.1\u0026new-version=9.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/bobby-99/reflex/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobby-99%2Freflex/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"5665886605","node_id":"PR_kwDOTfQbHc8AAAABGIxXzg","number":12,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T16:52:40.000Z","updated_at":"2026-10-01T16:53:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":13,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.baselineprofile","old_version":"1.4.1","new_version":"1.5.0"},{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.2.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.compose","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.kotlinx.binary-compatibility-validator","old_version":"0.18.1","new_version":"0.18.2","repository_url":"https://github.com/Kotlin/binary-compatibility-validator"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.8.0` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.baselineprofile | `1.4.1` | `1.5.0` |\n| com.android.application | `9.2.1` | `9.4.1` |\n| com.android.library | `9.2.1` | `9.4.1` |\n| com.android.library | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| [org.jetbrains.kotlinx.binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) | `0.18.1` | `0.18.2` |\n\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.compose.ui:ui-tooling-preview` from 1.7.3 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/releases\"\u003eorg.jetbrains.compose.ui:ui-tooling-preview's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation Event\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigationevent#1.1.1\"\u003eNavigation Event 1.1.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.compose.ui:ui-tooling-preview's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1 (September 2026)\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/bdd8e879b2fc4960934a99959d82400c96b7c590\"\u003e\u003ccode\u003ebdd8e87\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5717\"\u003e#5717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/2569a3e4e055087682b0d844fbb6c1b0380a6ca7\"\u003e\u003ccode\u003e2569a3e\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/d67175a3766c51caa673b220c74a4fb68a61fd31\"\u003e\u003ccode\u003ed67175a\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/5935bcd0a54328c4910798882c1d84cd50f248d2\"\u003e\u003ccode\u003e5935bcd\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5670\"\u003e#5670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/7cb29f17a7b7e61f3be0eb3ab4388e949ccc5cfc\"\u003e\u003ccode\u003e7cb29f1\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5660\"\u003e#5660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/79bf7cab92b333e5b51b70f55cc971638319dc12\"\u003e\u003ccode\u003e79bf7ca\u003c/code\u003e\u003c/a\u003e Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5659\"\u003e#5659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/106e0309e3b980128227620bff238e245234a4d4\"\u003e\u003ccode\u003e106e030\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Fix \u0026quot;Desktop release build fails with VerifyError: Bad return t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/40197c0b97efaa19cdfa6b26eb6074abbe5734ab\"\u003e\u003ccode\u003e40197c0\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Desktop release build fails with VerifyError: Bad return type\u0026quot; (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5652\"\u003e#5652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/96aba2ffc5cd9c1198fca0c52ce07dfb452179c6\"\u003e\u003ccode\u003e96aba2f\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/e3a721387901e382d4568bfcc893c5bb87f3bd3c\"\u003e\u003ccode\u003ee3a7213\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5641\"\u003e#5641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/compare/v1.7.3...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.compose` from 1.7.3 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/releases\"\u003eorg.jetbrains.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation Event\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigationevent#1.1.1\"\u003eNavigation Event 1.1.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1 (September 2026)\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/bdd8e879b2fc4960934a99959d82400c96b7c590\"\u003e\u003ccode\u003ebdd8e87\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5717\"\u003e#5717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/2569a3e4e055087682b0d844fbb6c1b0380a6ca7\"\u003e\u003ccode\u003e2569a3e\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/d67175a3766c51caa673b220c74a4fb68a61fd31\"\u003e\u003ccode\u003ed67175a\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/5935bcd0a54328c4910798882c1d84cd50f248d2\"\u003e\u003ccode\u003e5935bcd\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5670\"\u003e#5670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/7cb29f17a7b7e61f3be0eb3ab4388e949ccc5cfc\"\u003e\u003ccode\u003e7cb29f1\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5660\"\u003e#5660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/79bf7cab92b333e5b51b70f55cc971638319dc12\"\u003e\u003ccode\u003e79bf7ca\u003c/code\u003e\u003c/a\u003e Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5659\"\u003e#5659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/106e0309e3b980128227620bff238e245234a4d4\"\u003e\u003ccode\u003e106e030\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Fix \u0026quot;Desktop release build fails with VerifyError: Bad return t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/40197c0b97efaa19cdfa6b26eb6074abbe5734ab\"\u003e\u003ccode\u003e40197c0\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Desktop release build fails with VerifyError: Bad return type\u0026quot; (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5652\"\u003e#5652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/96aba2ffc5cd9c1198fca0c52ce07dfb452179c6\"\u003e\u003ccode\u003e96aba2f\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/e3a721387901e382d4568bfcc893c5bb87f3bd3c\"\u003e\u003ccode\u003ee3a7213\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5641\"\u003e#5641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/compare/v1.7.3...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.baselineprofile` from 1.4.1 to 1.5.0\n\nUpdates `com.android.application` from 9.2.1 to 9.4.1\n\nUpdates `com.android.library` from 9.2.1 to 9.4.1\n\nUpdates `com.android.library` from 9.2.1 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.multiplatform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.multiplatform's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/cod...\n\n_Description has been truncated_","html_url":"https://github.com/PrasadVennam1005/NeoCompose/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrasadVennam1005%2FNeoCompose/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"5657661427","node_id":"PR_kwDOU1tIas8AAAABGCKgXA","number":11,"state":"closed","title":"build(deps): bump com.android.application from 8.6.1 to 9.4.1 in /android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-01T07:01:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-01T05:53:39.000Z","updated_at":"2026-10-01T07:01:42.000Z","time_to_close":4080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"com.android.application","old_version":"8.6.1","new_version":"9.4.1","repository_url":null}],"path":"/android","ecosystem":"maven"},"body":"Bumps com.android.application from 8.6.1 to 9.4.1.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=8.6.1\u0026new-version=9.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/meshbergio/toomux/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshbergio%2Ftoomux/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"5655055531","node_id":"PR_kwDOTsjxFM8AAAABGAF4mA","number":10,"state":"open","title":"build(deps): bump the gradle-all group with 14 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T00:47:34.000Z","updated_at":"2026-10-01T00:47:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"gradle-all","update_count":14,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"org.bouncycastle:bcpkix-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"io.ktor:ktor-network","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-network-tls","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"com.github.luben:zstd-jni","old_version":"1.5.7-16","new_version":"1.5.7-20","repository_url":"https://github.com/luben/zstd-jni"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"com.android.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-all group with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [io.ktor:ktor-network](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-network-tls](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) | `1.5.7-16` | `1.5.7-20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| com.android.library | `9.4.0` | `9.4.1` |\n| com.android.application | `9.4.0` | `9.4.1` |\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.bouncycastle:bcpkix-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcpkix-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode -...\n\n_Description has been truncated_","html_url":"https://github.com/LTechnologies0/kotlin-tor/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/LTechnologies0%2Fkotlin-tor/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"5641882756","node_id":"PR_kwDOUzrUp88AAAABF1fgUw","number":2,"state":"open","title":"build(deps): bump com.android.application from 9.1.0 to 9.4.1 in /app/android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-30T06:12:45.000Z","updated_at":"2026-09-30T07:23:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"com.android.application","old_version":"9.1.0","new_version":"9.4.1","repository_url":null}],"path":"/app/android","ecosystem":"maven"},"body":"Bumps com.android.application from 9.1.0 to 9.4.1.\n","html_url":"https://github.com/muhammad-shameel-ks/gymly/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/muhammad-shameel-ks%2Fgymly/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"5623134880","node_id":"PR_kwDOCEdbWs8AAAABFmhsgw","number":470,"state":"closed","title":"build(deps): bump the all-dependencies group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-29T19:37:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-29T00:24:41.000Z","updated_at":"2026-09-29T19:37:15.000Z","time_to_close":69151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"all-dependencies","update_count":9,"packages":[{"name":"com.google.protobuf:protobuf-java","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"org.mockito:mockito-core","old_version":"5.23.0","new_version":"5.24.0","repository_url":"https://github.com/mockito/mockito"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.gradle.plugin-publish","old_version":"2.1.1","new_version":"2.2.1"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.00","new_version":"2026.09.00"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the all-dependencies group with 9 updates in the /oss-licenses-plugin/testapp directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `5.23.0` | `5.24.0` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| com.gradle.plugin-publish | `2.1.1` | `2.2.1` |\n| androidx.compose:compose-bom | `2026.06.00` | `2026.09.00` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n\n\nUpdates `com.google.protobuf:protobuf-java` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.mockito:mockito-core` from 5.23.0 to 5.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockito/mockito/releases\"\u003eorg.mockito:mockito-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.24.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.24.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-09-23 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0\"\u003e27 commit(s)\u003c/a\u003e by Andrei Solntsev, DragonFSKY, Hünkar Can Tunç, Joshua Selbo, M. Minot, Markus Gaisbauer, Mirko Alicastro, Vinod Kumar M ( codingkiddo ), dependabot[bot]\u003c/li\u003e\n\u003cli\u003eFix Mockito docs for -javaagent flag with Gradle [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3866\"\u003e#3866\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3866\"\u003emockito/mockito#3866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin example for adding Mockito as an agent is incorrect [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3864\"\u003e#3864\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3864\"\u003emockito/mockito#3864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.6.3 to 1.6.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3862\"\u003e#3862\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3862\"\u003emockito/mockito#3862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 6.2.0 to 6.3.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3852\"\u003e#3852\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3852\"\u003emockito/mockito#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 5 to 6.2.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3851\"\u003e#3851\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3851\"\u003emockito/mockito#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve method parameters when clearing inline mocks [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3847\"\u003e#3847\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3847\"\u003emockito/mockito#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.6.0 to 1.6.3 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3845\"\u003e#3845\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3845\"\u003emockito/mockito#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrint object fields via reflection when \u003ccode\u003etoString()\u003c/code\u003e is not implemented [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3844\"\u003e#3844\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3844\"\u003emockito/mockito#3844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrate extensions-tests to JUnit Jupiter [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3840\"\u003e#3840\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3840\"\u003emockito/mockito#3840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.6 to 1.6.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3839\"\u003e#3839\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3839\"\u003emockito/mockito#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs(when-verify): fixes to explanations about redundancy [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3838\"\u003e#3838\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3838\"\u003emockito/mockito#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConfusing inconsistency in example method calls in “stubbing and verifying is redundant” note of “when” and “verify” Javadoc [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3837\"\u003e#3837\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3837\"\u003emockito/mockito#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6 to 7 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3836\"\u003e#3836\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3836\"\u003emockito/mockito#3836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003e#2740\u003c/a\u003e : Add mockMaker option to \u003ccode\u003e@Spy\u003c/code\u003e annotation [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3835\"\u003e#3835\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3835\"\u003emockito/mockito#3835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.5 to 1.5.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3834\"\u003e#3834\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3834\"\u003emockito/mockito#3834\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.4 to 1.5.5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3833\"\u003e#3833\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3833\"\u003emockito/mockito#3833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 6 to 7 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3831\"\u003e#3831\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3831\"\u003emockito/mockito#3831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.5 to 1.5.4 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3830\"\u003e#3830\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3830\"\u003emockito/mockito#3830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix clearInlineMocks not de-registering singleton mocks [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3829\"\u003e#3829\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3829\"\u003emockito/mockito#3829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NotAMockException when using mockSingleton with MockitoJUnit [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3827\"\u003e#3827\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3827\"\u003emockito/mockito#3827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNotAMockException when using mockSingleton with MockitoSession or MockitoJUnit [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3826\"\u003e#3826\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3826\"\u003emockito/mockito#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove Gradle agent docs for configuration cache [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3823\"\u003e#3823\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3823\"\u003emockito/mockito#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGradle documentation for setting up instrumentation with Gradle configuration cache [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3822\"\u003e#3822\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3822\"\u003emockito/mockito#3822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003e#3818\u003c/a\u003e : Fix data race in InvocationContainerImpl.invocationForStubbing [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3819\"\u003e#3819\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3819\"\u003emockito/mockito#3819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eData race on invocationForPotentialStubbing [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003e#3818\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003emockito/mockito#3818\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003e#3814\u003c/a\u003e : implement package-level clinit suppression [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3815\"\u003e#3815\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3815\"\u003emockito/mockito#3815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePackage-level clinit suppression [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003e#3814\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003emockito/mockito#3814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade Android Gradle Plugin to 8.13.2 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3812\"\u003e#3812\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3812\"\u003emockito/mockito#3812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaces raw generic types with type parameters [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3806\"\u003e#3806\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3806\"\u003emockito/mockito#3806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003e#2398\u003c/a\u003e : Implement global suppress static initialization leveraging java agent [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3801\"\u003e#3801\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3801\"\u003emockito/mockito#3801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3800\"\u003e#3800\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3800\"\u003emockito/mockito#3800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix non-deterministic AssertionError when using MockMakers.SUBCLASS (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3406\"\u003e#3406\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2823\"\u003e#2823\u003c/a\u003e) [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3795\"\u003e#3795\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3795\"\u003emockito/mockito#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003e#3536\u003c/a\u003e : Implement SpyStatic API [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3794\"\u003e#3794\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3794\"\u003emockito/mockito#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThe class's MethodParameters are removed after clearAllCaches is invoked [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3763\"\u003e#3763\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3763\"\u003emockito/mockito#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[FeatureRequest / Idea] Create Mockito.spyStatic [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003e#3536\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003emockito/mockito#3536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd option to specify mockmaker for \u003ccode\u003e@Spy\u003c/code\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003e#2740\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003emockito/mockito#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHow can I suppress static initializer? [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003e#2398\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003emockito/mockito#2398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/5a2f0f81cdafc9b34ddb4520db7f8866c787dac0\"\u003e\u003ccode\u003e5a2f0f8\u003c/code\u003e\u003c/a\u003e Fix Mockito docs for -javaagent flag with Gradle (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3866\"\u003e#3866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/9c5f36fb9f2ad89fbaab828d33d144cd398a4079\"\u003e\u003ccode\u003e9c5f36f\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.6.3 to 1.6.6 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3862\"\u003e#3862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/e7fd06dda31daf0c71ad1dedc76ffc9f8ecf6973\"\u003e\u003ccode\u003ee7fd06d\u003c/code\u003e\u003c/a\u003e Preserve method parameters when clearing inline mocks (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3847\"\u003e#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/5a676bcd9ef9a10db46e1dc34e190eb46faa2687\"\u003e\u003ccode\u003e5a676bc\u003c/code\u003e\u003c/a\u003e Bump gradle/actions from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/508f8e78f5ac5ed9f23f7b92b01de76752120a67\"\u003e\u003ccode\u003e508f8e7\u003c/code\u003e\u003c/a\u003e Bump gradle/actions from 5 to 6.2.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3851\"\u003e#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/ee8a330da0218f32d5964acdeaa3ac39e2c6ce14\"\u003e\u003ccode\u003eee8a330\u003c/code\u003e\u003c/a\u003e Print object fields via reflection when \u003ccode\u003etoString()\u003c/code\u003e is not implemented (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3844\"\u003e#3844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/39b1aba6e6cc92d8ad3c812dcc16ed357c9fbc85\"\u003e\u003ccode\u003e39b1aba\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.6.0 to 1.6.3 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/d8638e1a8b67b4acea63c80dc85d62eda4ef57f5\"\u003e\u003ccode\u003ed8638e1\u003c/code\u003e\u003c/a\u003e Migrate extensions-tests to JUnit Jupiter (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3840\"\u003e#3840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/0aab922fa4c8967e50613671f58c707a69606c62\"\u003e\u003ccode\u003e0aab922\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.5.6 to 1.6.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/f3cf74c7e1106f7d32299001ca0ecf2c492c468c\"\u003e\u003ccode\u003ef3cf74c\u003c/code\u003e\u003c/a\u003e docs(when-verify): fixes to explanations about redundancy (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3838\"\u003e#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.jvm` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.gradle.plugin-publish` from 2.1.1 to 2.2.1\n\nUpdates `androidx.compose:compose-bom` from 2026.06.00 to 2026.09.00\n\nUpdates `org.robolectric:robolectric` from 4.16.1 to 4.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.17 supports SDK 37 and contains many other features and enhancements.\u003c/p\u003e\n\u003cp\u003ePlease note you may need to add jvmFlags configuration when using JDKs \u0026gt;= 17 at \u003ca href=\"https://robolectric.org/getting-started/\"\u003ehttps://robolectric.org/getting-started/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cp\u003eAndroidVersions has been removed in favor of using android.os.Build constants\nShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T), in order to correctly reflect type enforcement in the framework\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable httpclient tests in Github CI by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10553\"\u003erobolectric/robolectric#10553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse Java 21 for CodeQL by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10554\"\u003erobolectric/robolectric#10554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.48.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10561\"\u003erobolectric/robolectric#10561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.12 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10557\"\u003erobolectric/robolectric#10557\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eAndroidVersions\u003c/code\u003e Javadoc by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10556\"\u003erobolectric/robolectric#10556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake Scheduler#size as unsupported on SDKs \u0026gt; Baklava. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10564\"\u003erobolectric/robolectric#10564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate shadows/httpclient to use prebuilt legacy http client for tests by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10562\"\u003erobolectric/robolectric#10562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for getDeviceOwnerComponentOnAnyUser. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10565\"\u003erobolectric/robolectric#10565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10567\"\u003erobolectric/robolectric#10567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UiModeManager contrast handling in in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10568\"\u003erobolectric/robolectric#10568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake all static fields emitted by Reflector volatile. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10569\"\u003erobolectric/robolectric#10569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate listener logic of getProfileProxy to match actual behavior. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10570\"\u003erobolectric/robolectric#10570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate mockito monorepo to v5.19.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10560\"\u003erobolectric/robolectric#10560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate kotlin monorepo to v2.2.10 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10558\"\u003erobolectric/robolectric#10558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ShadowPausedLooper#poll when sync barrier is blocking the queue. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10571\"\u003erobolectric/robolectric#10571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eShadowTelephonyManager\u003c/code\u003e to support \u003ccode\u003eupdateAvailalbeNetworks\u003c/code\u003e by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10574\"\u003erobolectric/robolectric#10574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android V (SDK 35) to build id 13954326 by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10575\"\u003erobolectric/robolectric#10575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UserManager.isMainUser on in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10576\"\u003erobolectric/robolectric#10576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds robolectric support for AccessibilityWindowInfo.get/setRegionInScreen(). by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10577\"\u003erobolectric/robolectric#10577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused dependencies by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10566\"\u003erobolectric/robolectric#10566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for mouse wheel scroll events to the simulator by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10578\"\u003erobolectric/robolectric#10578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Javadoc of {get,peek}NextStartedService to better reflect the actual implementation by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10585\"\u003erobolectric/robolectric#10585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a script to generate a legacy http client bundle by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10555\"\u003erobolectric/robolectric#10555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SurroundingTextCallback to ShadowAccessibilityInputConnection. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10591\"\u003erobolectric/robolectric#10591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds setInformationElements() to WifiScanResultBuilder by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10593\"\u003erobolectric/robolectric#10593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd isWallpaperBackupEligible and getWallpaperFile with cropping by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10594\"\u003erobolectric/robolectric#10594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMention Baklava support in the Readme by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10588\"\u003erobolectric/robolectric#10588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AccessibilityWindowInfoBuilderTest by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10595\"\u003erobolectric/robolectric#10595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused method in \u003ccode\u003eAndroidVersionInitTools\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10563\"\u003erobolectric/robolectric#10563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.50.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10582\"\u003erobolectric/robolectric#10582\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub Actions to v5 (major) by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10583\"\u003erobolectric/robolectric#10583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android Gradle Plugin by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10580\"\u003erobolectric/robolectric#10580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.13 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10596\"\u003erobolectric/robolectric#10596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10559\"\u003erobolectric/robolectric#10559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate a workflow to automate the sync of \u003ccode\u003egoogle\u003c/code\u003e into \u003ccode\u003emaster\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10339\"\u003erobolectric/robolectric#10339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump toolchains in devcontainer's Dockerfile by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10597\"\u003erobolectric/robolectric#10597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Robolectric icon for IDE by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10598\"\u003erobolectric/robolectric#10598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare File? as type for toolsJar explicitly by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10599\"\u003erobolectric/robolectric#10599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable parallel for aggregateDocs task temporarily by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10600\"\u003erobolectric/robolectric#10600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/0706415db828e1bdcf4f0c820784fa760d0185a2\"\u003e\u003ccode\u003e0706415\u003c/code\u003e\u003c/a\u003e Bump version to 4.17.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f3c17bd2aeb66035ec3ece695f94ebc81588b79c\"\u003e\u003ccode\u003ef3c17bd\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/04b84f6f3778743e27b4c82a5da488ddf2046d41\"\u003e\u003ccode\u003e04b84f6\u003c/code\u003e\u003c/a\u003e \u0026quot;fixed ResTable_package.SIZEOF value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f4ee543bf78a429be44ab914b045736ddfda58dc\"\u003e\u003ccode\u003ef4ee543\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/gemini-code-assist\"\u003e\u003ccode\u003e@​gemini-code-assist\u003c/code\u003e\u003c/a\u003e[bot]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/fb99bfbcbcb9ca9c7fe3b3937df1afb0ac23c74d\"\u003e\u003ccode\u003efb99bfb\u003c/code\u003e\u003c/a\u003e Expose BouncyCastle BoM as api dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/a453192a93423d5c4f93f520609aed69d60572a1\"\u003e\u003ccode\u003ea453192\u003c/code\u003e\u003c/a\u003e Fix Javadoc for \u003ccode\u003eVersionCalculator\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/6f268925237080530b7cdf9ff7a001cc138c1043\"\u003e\u003ccode\u003e6f26892\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ceffe96a63b3565ac8337c334b770ef76db7a2f2\"\u003e\u003ccode\u003eceffe96\u003c/code\u003e\u003c/a\u003e Only adjust frameinfo timestamp values (including vsync).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ea5879f7e3fc9d354833d73acd73f089388f42b9\"\u003e\u003ccode\u003eea5879f\u003c/code\u003e\u003c/a\u003e Add opt-in fix for stale screenshots on SDK 37.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/8bea42181c6a1ecdd60ab50e502157ab4aed3f6d\"\u003e\u003ccode\u003e8bea421\u003c/code\u003e\u003c/a\u003e Fix jank log spam on SDK 37+ by translating FrameInfo timestamps.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16.1...robolectric-4.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jet...\n\n_Description has been truncated_","html_url":"https://github.com/google/play-services-plugins/pull/470","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fplay-services-plugins/issues/470","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/470/packages"},{"uuid":"5612069344","node_id":"PR_kwDOTVkVeM8AAAABFdmchw","number":114,"state":"open","title":"build(deps): bump the android-deps group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T09:05:55.000Z","updated_at":"2026-09-28T09:06:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"android-deps","update_count":24,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.wear.compose:compose-foundation","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85.2","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.kotest:kotest-assertions-core-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"androidx.media3:media3-datasource-okhttp","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.11","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the android-deps group with 24 updates in the /apps/android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.wear.compose:compose-foundation | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85.2` | `1.86` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [androidx.media3:media3-datasource-okhttp](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.3.1` | `9.4.1` |\n| com.android.library | `9.3.1` | `9.4.1` |\n| com.android.test | `9.3.1` | `9.4.1` |\n| com.android.library | `9.3.1` | `9.4.1` |\n| com.android.test | `9.3.1` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.11` | `2.3.12` |\n\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.wear.compose:compose-foundation` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85.2 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-compose` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-svg` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-svg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-svg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-svg` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-svg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-svg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.kotest:kotest-assertions-core-jvm` from 6.2.4 to 6.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kotest/kotest/releases\"\u003eio.kotest:kotest-assertions-core-jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.2.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eskill version update PR upon release by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6213\"\u003ekotest/kotest#6213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse a singleton strategy for getConfigurationFactory of Kotest legacy producers + ensure the same config is reused for gradle producers by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6216\"\u003ekotest/kotest#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ewithEdtSafeAnalysis\u003c/code\u003e to improve safe analysis for spec and style… by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6215\"\u003ekotest/kotest#6215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake the \u003ccode\u003eshouldBeSingleton\u003c/code\u003e block overloads infix by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6223\"\u003ekotest/kotest#6223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound the short/byte/uShort/uByte shrinkers by the generator range by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6224\"\u003ekotest/kotest#6224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlex/make default extension registry thread safe by \u003ca href=\"https://github.com/AlexCue987\"\u003e\u003ccode\u003e@​AlexCue987\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6199\"\u003ekotest/kotest#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd back jsoup assertions by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6226\"\u003ekotest/kotest#6226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Android StackWalker compatibility by \u003ca href=\"https://github.com/cfcromn\"\u003e\u003ccode\u003e@​cfcromn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6222\"\u003ekotest/kotest#6222\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kotest/kotest/compare/6.2.4...v6.2.5\"\u003ehttps://github.com/kotest/kotest/compare/6.2.4...v6.2.5\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/41df99d60c7093cfe4f48638fe2bf4b2d7f8b1c5\"\u003e\u003ccode\u003e41df99d\u003c/code\u003e\u003c/a\u003e Fix Android StackWalker compatibility (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6222\"\u003e#6222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/8655ca73f2682055af0db3b81cbede05d10f050f\"\u003e\u003ccode\u003e8655ca7\u003c/code\u003e\u003c/a\u003e add back jsoup assertions (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6226\"\u003e#6226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/e2271eb187aec4ce4a581fea777825c68a9d60f1\"\u003e\u003ccode\u003ee2271eb\u003c/code\u003e\u003c/a\u003e Alex/make default extension registry thread safe (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6199\"\u003e#6199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/fdca60984121899038daac2f7b5537ce46b8630c\"\u003e\u003ccode\u003efdca609\u003c/code\u003e\u003c/a\u003e Bound the short/byte/uShort/uByte shrinkers by the generator range (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6224\"\u003e#6224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/56301a629b268e6960d6a9cda05a3024badb8d7a\"\u003e\u003ccode\u003e56301a6\u003c/code\u003e\u003c/a\u003e Make the \u003ccode\u003eshouldBeSingleton\u003c/code\u003e block o...\n\n_Description has been truncated_","html_url":"https://github.com/devops2626/openclaw/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/devops2626%2Fopenclaw/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"},{"uuid":"5610780822","node_id":"PR_kwDOS341Ks8AAAABFckLtQ","number":266,"state":"closed","title":"build(deps): Bump the gradle-minor-patch group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T00:20:31.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T07:13:57.000Z","updated_at":"2026-10-01T00:20:39.000Z","time_to_close":234394,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"gradle-minor-patch","update_count":4,"packages":[{"name":"com.android.application","old_version":"8.5.2","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.20","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.9.1","new_version":"2.12.0"},{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 4 updates in the / directory: com.android.application, [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin), androidx.work:work-runtime-ktx and [gradle-wrapper](https://github.com/gradle/gradle).\n\nUpdates `com.android.application` from 8.5.2 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.0.20 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.work:work-runtime-ktx` from 2.9.1 to 2.12.0\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/j-raghavan/inkread/pull/266","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-raghavan%2Finkread/issues/266","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/266/packages"},{"uuid":"5609386130","node_id":"PR_kwDORqy2Rc8AAAABFbdCEg","number":983,"state":"closed","title":"ci: bump the gradle-minor-patch group across 1 directory with 34 updates","user":"dependabot[bot]","labels":["deps","kmp","size/size:s","dependabot"],"assignees":["tajemniktv"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-02T04:15:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T04:35:50.000Z","updated_at":"2026-10-02T04:15:26.000Z","time_to_close":344374,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"ci: bump","group_name":"gradle-minor-patch","update_count":34,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.jetbrains.kotlin:kotlin-test","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test-junit","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test-junit","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"org.jetbrains.compose.ui:ui-tooling","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.runtime:runtime","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.foundation:foundation","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.components:components-resources","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.runtime:runtime","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.foundation:foundation","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.material3:material3","old_version":"1.12.0-alpha03","new_version":"1.13.0-alpha01","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.components:components-resources","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"ch.qos.logback:logback-classic","old_version":"1.6.3","new_version":"1.6.4","repository_url":"https://github.com/qos-ch/logback"},{"name":"uk.uuid.slf4j:slf4j-android","old_version":"2.0.17-0","new_version":"2.0.19-0","repository_url":"https://github.com/nomis/slf4j-android"},{"name":"io.ktor:ktor-server-core-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-netty-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-auth","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-core","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-cio","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-darwin","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor.plugin","old_version":"3.5.2","new_version":"3.6.0"},{"name":"io.ktor:ktor-server-netty-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-auth","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-core","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-cio","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-darwin","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"com.github.skydoves:compose-stability-runtime","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"},{"name":"com.github.skydoves.compose.stability.analyzer","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.kotlin.multiplatform.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.kotlin.multiplatform.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"io.ktor.plugin","old_version":"3.5.2","new_version":"3.6.0"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.github.skydoves.compose.stability.analyzer","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 34 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| [org.jetbrains.kotlin:kotlin-test](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin:kotlin-test-junit](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin:kotlin-test-junit](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| [org.jetbrains.compose.ui:ui-tooling](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.runtime:runtime](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.foundation:foundation](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.components:components-resources](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.runtime:runtime](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.foundation:foundation](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.material3:material3](https://github.com/JetBrains/compose-multiplatform) | `1.12.0-alpha03` | `1.13.0-alpha01` |\n| [org.jetbrains.compose.ui:ui](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.components:components-resources](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.6.3` | `1.6.4` |\n| [uk.uuid.slf4j:slf4j-android](https://github.com/nomis/slf4j-android) | `2.0.17-0` | `2.0.19-0` |\n| [io.ktor:ktor-server-core-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-auth](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-test-host-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-core](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-cio](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-darwin](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| io.ktor.plugin | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-auth](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-test-host-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-core](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-cio](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-darwin](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [com.github.skydoves:compose-stability-runtime](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n| [com.github.skydoves.compose.stability.analyzer](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| com.android.kotlin.multiplatform.library | `9.4.0` | `9.4.1` |\n| com.android.kotlin.multiplatform.library | `9.4.0` | `9.4.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| io.ktor.plugin | `3.5.2` | `3.6.0` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.github.skydoves.compose.stability.analyzer](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-test` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-test-junit` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-test-junit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-test-junit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.jvm` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.multiplatform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca ...\n\n_Description has been truncated_","html_url":"https://github.com/tajemniktv/TajsOS/pull/983","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tajemniktv%2FTajsOS/issues/983","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/983/packages"},{"uuid":"5593958322","node_id":"PR_kwDOTVtvC88AAAABFPu04A","number":31,"state":"closed","title":"build(deps): bump the maven group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T12:14:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-26T12:26:09.000Z","updated_at":"2026-10-03T12:14:26.000Z","time_to_close":604097,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"maven","update_count":13,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"org.commonmark:commonmark","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"com.squareup.okhttp3:okhttp-bom","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"com.materialkolor:material-kolor","old_version":"5.0.0-alpha07","new_version":"5.0.1","repository_url":"https://github.com/jordond/materialkolor"},{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the maven group with 13 updates in the /manager directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.7.1` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| [org.commonmark:commonmark](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [com.squareup.okhttp3:okhttp-bom](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [com.materialkolor:material-kolor](https://github.com/jordond/materialkolor) | `5.0.0-alpha07` | `5.0.1` |\n| com.android.application | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `org.commonmark:commonmark` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-tables` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-tables's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-tables's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-autolink` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-autolink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-autolink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-task-list-items` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-task-list-items's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-task-list-items's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-tables` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-tables's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-tables's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/comm...\n\n_Description has been truncated_","html_url":"https://github.com/yoyicue/xpad2-ksu-lateload/pull/31","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyicue%2Fxpad2-ksu-lateload/issues/31","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/31/packages"},{"uuid":"5564666301","node_id":"PR_kwDOUKe7G88AAAABE4ru4w","number":22,"state":"closed","title":"build(deps): bump the gradle group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T07:22:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-24T07:16:35.000Z","updated_at":"2026-10-01T07:23:00.000Z","time_to_close":605182,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"gradle","update_count":7,"packages":[{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.11","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"},{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.11` | `2.3.12` |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.room:room-ktx | `2.8.4` | `2.8.5` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.3.11 to 2.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eMigrating Processors to Support Backing Fields\u003c/h3\u003e\n\u003cp\u003eThis release introduces support for explicit backing fields (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2873\"\u003e#2873\u003c/a\u003e), which may now be returned by \u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e. To prevent breaking existing processors, new language features require an explicit opt-in.\u003c/p\u003e\n\u003cp\u003eMore generally, the KSP API now explicitly models backing fields for properties. The following is an exhaustive list of functions in KSP API where processor may observe the change after opting in:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e: The function now returns a \u003ccode\u003eKSBackingField\u003c/code\u003e if the given annotation targeted a field. Previously, if a field were targeted, the function would return a \u003ccode\u003eKSProperty\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResolver.effectiveJavaModifiers\u003c/code\u003e: The function returns fewer modifiers for a \u003ccode\u003eKSPropertyDeclaration\u003c/code\u003e if it has a backing field, since most of the JVM-specific annotations apply to the backing field. If you are interested in the JVM modifiers, you should call the function with the \u003ccode\u003eKSBackingField\u003c/code\u003e obtained from the property instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, KSP now models Java fields as properties that always have backing fields. Some of the modifiers now apply to the backing field instead.\u003c/p\u003e\n\u003cp\u003eProcessors adapting to new features must opt in via both of the following steps simultaneously (failing to do both may lead to undefined behavior):\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe processor should call the \u003ccode\u003eregisterProcessorForNewFeatures\u003c/code\u003e function in \u003ccode\u003eSymbolProcessorEnvironment\u003c/code\u003e immediately when created (and only once). Example: \u003ca href=\"https://github.com/google/ksp/blob/958be42cfd07943f901727d12ab7fec6540d543f/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AbstractTestProcessor.kt#L30\"\u003eAbstractTestProcessor.kt#L30\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAll implementations of \u003ccode\u003eKSVisitor\u003c/code\u003e should move to \u003ccode\u003eKSVisitorNext\u003c/code\u003e. If their processor code does not directly implement the interface but instead \u003cstrong\u003eextends\u003c/strong\u003e one of the KSP-provided visitors (such as \u003ccode\u003eKSTopDownVisitor\u003c/code\u003e), they should instead extend \u003ccode\u003eKSTopDownVisitor(enableNewFeatures = true)\u003c/code\u003e and override \u003ccode\u003evisitBackingField\u003c/code\u003e depending on their code and needs.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eLet us know if you run into unexpected behavior!\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Resolver.getDeclarationsFromPackage returning incomplete declarations from KLibs in Kotlin Multiplatform (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2396\"\u003e#2396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP CLI process hanging indefinitely when a processor throws an unhandled exception (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix implicit task dependency error between KSP and Android Lint in Android KMP (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NullPointerException by registering PluginProblemReporter as an application service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3140\"\u003e#3140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not mark companion objects as JAVA_STATIC in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3125\"\u003e#3125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JAVA_STATIC modifier resolution for \u003ca href=\"https://github.com/JvmStatic\"\u003e\u003ccode\u003e@​JvmStatic\u003c/code\u003e\u003c/a\u003e members in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3124\"\u003e#3124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate minimum supported Android Gradle Plugin (AGP) version to 8.12.0 (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3149\"\u003e#3149\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/budindepunk\"\u003e\u003ccode\u003e@​budindepunk\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ehttps://github.com/google/ksp/compare/2.3.11...2.3.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a3c38590913b863cc6b73b41d54ff8afa625f642\"\u003e\u003ccode\u003ea3c3859\u003c/code\u003e\u003c/a\u003e Format Resolver file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a614317b071a434139689d8fc0f5c1377b4f0d44\"\u003e\u003ccode\u003ea614317\u003c/code\u003e\u003c/a\u003e Fix grammatical errors in Resolver doc comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c19f255fd96877bbc5b1b18c227c2a3d56883a24\"\u003e\u003ccode\u003ec19f255\u003c/code\u003e\u003c/a\u003e Merge equal EXPECT NEXT and EXPECT CURRENT in javaBackingFieldUsedInKotlin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d3df886048fc6512a06649371b2c1917863160cf\"\u003e\u003ccode\u003ed3df886\u003c/code\u003e\u003c/a\u003e Add test for getting default annotation values in KMP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/3bcac2082b36d3be96ea37070fa007d26233af88\"\u003e\u003ccode\u003e3bcac20\u003c/code\u003e\u003c/a\u003e Mark testJavaBackingFieldUsedInKotlin as fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/e74bb5f56328808f1ad37ba62e66ec3a8e72976e\"\u003e\u003ccode\u003ee74bb5f\u003c/code\u003e\u003c/a\u003e Update expected test output in libOrigins\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c9b1d406ed5bebb34411c4036fecbf0b014b013a\"\u003e\u003ccode\u003ec9b1d40\u003c/code\u003e\u003c/a\u003e Use KSSyntheticJavaBackingFieldImpl in KSPropertyDeclarationImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/afefe15219f9ef70363390236eca8e012c12f6d2\"\u003e\u003ccode\u003eafefe15\u003c/code\u003e\u003c/a\u003e Add KSSyntheticJavaBackingFieldImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/2da07c146f61caa0428c97df1152466a7a2aa7d5\"\u003e\u003ccode\u003e2da07c1\u003c/code\u003e\u003c/a\u003e Add test for missing synthetic Java fields\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/70335307edb9381edd707e5c0eabedf22300c3ab\"\u003e\u003ccode\u003e7033530\u003c/code\u003e\u003c/a\u003e Fix visibility modifiers for Kotlin-based backing fields\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/kinjo-ryura/handball-recorder-android/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kinjo-ryura%2Fhandball-recorder-android/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"},{"uuid":"5563711582","node_id":"PR_kwDOTvqVP88AAAABE39X4g","number":174,"state":"open","title":"chore(deps): Bump the gradle-deps group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-24T05:44:32.000Z","updated_at":"2026-09-24T09:10:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"gradle-deps","update_count":9,"packages":[{"name":"com.google.firebase:firebase-bom","old_version":"34.18.0","new_version":"34.19.0"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.2.0","new_version":"1.2.1"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"androidx.benchmark:benchmark-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"androidx.benchmark:benchmark-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"com.android.application","old_version":"9.3.2","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.2","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.2","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.diffplug.spotless","old_version":"8.10.1","new_version":"8.10.2"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-deps group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.google.firebase:firebase-bom | `34.18.0` | `34.19.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.google.android.libraries.identity.googleid:googleid | `1.2.0` | `1.2.1` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.3.4` | `1.5.0` |\n| androidx.benchmark:benchmark-junit4 | `1.3.4` | `1.5.0` |\n| androidx.benchmark:benchmark-junit4 | `1.3.4` | `1.5.0` |\n| com.android.application | `9.3.2` | `9.4.1` |\n| com.android.test | `9.3.2` | `9.4.1` |\n| com.android.test | `9.3.2` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| com.diffplug.spotless | `8.10.1` | `8.10.2` |\n\n\nUpdates `com.google.firebase:firebase-bom` from 34.18.0 to 34.19.0\n\nUpdates `org.robolectric:robolectric` from 4.16.1 to 4.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.17 supports SDK 37 and contains many other features and enhancements.\u003c/p\u003e\n\u003cp\u003ePlease note you may need to add jvmFlags configuration when using JDKs \u0026gt;= 17 at \u003ca href=\"https://robolectric.org/getting-started/\"\u003ehttps://robolectric.org/getting-started/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cp\u003eAndroidVersions has been removed in favor of using android.os.Build constants\nShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T), in order to correctly reflect type enforcement in the framework\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable httpclient tests in Github CI by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10553\"\u003erobolectric/robolectric#10553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse Java 21 for CodeQL by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10554\"\u003erobolectric/robolectric#10554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.48.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10561\"\u003erobolectric/robolectric#10561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.12 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10557\"\u003erobolectric/robolectric#10557\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eAndroidVersions\u003c/code\u003e Javadoc by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10556\"\u003erobolectric/robolectric#10556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake Scheduler#size as unsupported on SDKs \u0026gt; Baklava. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10564\"\u003erobolectric/robolectric#10564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate shadows/httpclient to use prebuilt legacy http client for tests by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10562\"\u003erobolectric/robolectric#10562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for getDeviceOwnerComponentOnAnyUser. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10565\"\u003erobolectric/robolectric#10565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10567\"\u003erobolectric/robolectric#10567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UiModeManager contrast handling in in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10568\"\u003erobolectric/robolectric#10568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake all static fields emitted by Reflector volatile. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10569\"\u003erobolectric/robolectric#10569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate listener logic of getProfileProxy to match actual behavior. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10570\"\u003erobolectric/robolectric#10570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate mockito monorepo to v5.19.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10560\"\u003erobolectric/robolectric#10560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate kotlin monorepo to v2.2.10 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10558\"\u003erobolectric/robolectric#10558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ShadowPausedLooper#poll when sync barrier is blocking the queue. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10571\"\u003erobolectric/robolectric#10571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eShadowTelephonyManager\u003c/code\u003e to support \u003ccode\u003eupdateAvailalbeNetworks\u003c/code\u003e by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10574\"\u003erobolectric/robolectric#10574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android V (SDK 35) to build id 13954326 by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10575\"\u003erobolectric/robolectric#10575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UserManager.isMainUser on in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10576\"\u003erobolectric/robolectric#10576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds robolectric support for AccessibilityWindowInfo.get/setRegionInScreen(). by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10577\"\u003erobolectric/robolectric#10577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused dependencies by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10566\"\u003erobolectric/robolectric#10566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for mouse wheel scroll events to the simulator by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10578\"\u003erobolectric/robolectric#10578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Javadoc of {get,peek}NextStartedService to better reflect the actual implementation by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10585\"\u003erobolectric/robolectric#10585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a script to generate a legacy http client bundle by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10555\"\u003erobolectric/robolectric#10555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SurroundingTextCallback to ShadowAccessibilityInputConnection. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10591\"\u003erobolectric/robolectric#10591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds setInformationElements() to WifiScanResultBuilder by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10593\"\u003erobolectric/robolectric#10593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd isWallpaperBackupEligible and getWallpaperFile with cropping by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10594\"\u003erobolectric/robolectric#10594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMention Baklava support in the Readme by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10588\"\u003erobolectric/robolectric#10588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AccessibilityWindowInfoBuilderTest by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10595\"\u003erobolectric/robolectric#10595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused method in \u003ccode\u003eAndroidVersionInitTools\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10563\"\u003erobolectric/robolectric#10563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.50.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10582\"\u003erobolectric/robolectric#10582\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub Actions to v5 (major) by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10583\"\u003erobolectric/robolectric#10583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android Gradle Plugin by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10580\"\u003erobolectric/robolectric#10580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.13 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10596\"\u003erobolectric/robolectric#10596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10559\"\u003erobolectric/robolectric#10559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate a workflow to automate the sync of \u003ccode\u003egoogle\u003c/code\u003e into \u003ccode\u003emaster\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10339\"\u003erobolectric/robolectric#10339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump toolchains in devcontainer's Dockerfile by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10597\"\u003erobolectric/robolectric#10597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Robolectric icon for IDE by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10598\"\u003erobolectric/robolectric#10598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare File? as type for toolsJar explicitly by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10599\"\u003erobolectric/robolectric#10599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable parallel for aggregateDocs task temporarily by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10600\"\u003erobolectric/robolectric#10600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/0706415db828e1bdcf4f0c820784fa760d0185a2\"\u003e\u003ccode\u003e0706415\u003c/code\u003e\u003c/a\u003e Bump version to 4.17.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f3c17bd2aeb66035ec3ece695f94ebc81588b79c\"\u003e\u003ccode\u003ef3c17bd\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/04b84f6f3778743e27b4c82a5da488ddf2046d41\"\u003e\u003ccode\u003e04b84f6\u003c/code\u003e\u003c/a\u003e \u0026quot;fixed ResTable_package.SIZEOF value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f4ee543bf78a429be44ab914b045736ddfda58dc\"\u003e\u003ccode\u003ef4ee543\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/gemini-code-assist\"\u003e\u003ccode\u003e@​gemini-code-assist\u003c/code\u003e\u003c/a\u003e[bot]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/fb99bfbcbcb9ca9c7fe3b3937df1afb0ac23c74d\"\u003e\u003ccode\u003efb99bfb\u003c/code\u003e\u003c/a\u003e Expose BouncyCastle BoM as api dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/a453192a93423d5c4f93f520609aed69d60572a1\"\u003e\u003ccode\u003ea453192\u003c/code\u003e\u003c/a\u003e Fix Javadoc for \u003ccode\u003eVersionCalculator\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/6f268925237080530b7cdf9ff7a001cc138c1043\"\u003e\u003ccode\u003e6f26892\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ceffe96a63b3565ac8337c334b770ef76db7a2f2\"\u003e\u003ccode\u003eceffe96\u003c/code\u003e\u003c/a\u003e Only adjust frameinfo timestamp values (including vsync).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ea5879f7e3fc9d354833d73acd73f089388f42b9\"\u003e\u003ccode\u003eea5879f\u003c/code\u003e\u003c/a\u003e Add opt-in fix for stale screenshots on SDK 37.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/8bea42181c6a1ecdd60ab50e502157ab4aed3f6d\"\u003e\u003ccode\u003e8bea421\u003c/code\u003e\u003c/a\u003e Fix jank log spam on SDK 37+ by translating FrameInfo timestamps.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16.1...robolectric-4.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.2.0 to 1.2.1\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.3.4 to 1.5.0\n\nUpdates `androidx.benchmark:benchmark-junit4` from 1.3.4 to 1.5.0\n\nUpdates `androidx.benchmark:benchmark-junit4` from 1.3.4 to 1.5.0\n\nUpdates `com.android.application` from 9.3.2 to 9.4.1\n\nUpdates `com.android.test` from 9.3.2 to 9.4.1\n\nUpdates `com.android.test` from 9.3.2 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.diffplug.spotless` from 8.10.1 to 8.10.2\n","html_url":"https://github.com/sempermechanics/semperdic-app/pull/174","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sempermechanics%2Fsemperdic-app/issues/174","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/174/packages"},{"uuid":"5561565124","node_id":"PR_kwDORxQT9c8AAAABE2Ufrw","number":19,"state":"closed","title":"Bump the gradle-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-30T11:09:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-24T01:11:54.000Z","updated_at":"2026-09-30T11:09:10.000Z","time_to_close":554234,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies","update_count":20,"packages":[{"name":"gradle-wrapper","old_version":"8.9","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.compose:compose-bom","old_version":"2024.10.01","new_version":"2026.09.00"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"com.google.dagger:hilt-android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.8.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-android","old_version":"3.0.1","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"com.revenuecat.purchases:purchases","old_version":"8.10.7","new_version":"10.22.1","repository_url":"https://github.com/RevenueCat/purchases-android"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.5"},{"name":"com.android.application","old_version":"8.7.3","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies group with 20 updates in the /movemark-android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.9` | `9.7.1` |\n| androidx.compose:compose-bom | `2024.10.01` | `2026.09.00` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.8.0` |\n| [io.ktor:ktor-client-android](https://github.com/ktorio/ktor) | `3.0.1` | `3.6.0` |\n| [com.revenuecat.purchases:purchases](https://github.com/RevenueCat/purchases-android) | `8.10.7` | `10.22.1` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.5` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.5` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.5` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.5` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.5` |\n| com.android.application | `8.7.3` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.12` |\n\n\nUpdates `gradle-wrapper` from 8.9 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.9.0...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2024.10.01 to 2026.09.00\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `io.github.jan-tennert.supabase:bom` from 3.0.3 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase-community/supabase-kt/releases\"\u003eio.github.jan-tennert.supabase:bom's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch3\u003eCore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(sample): move \u0026quot;Forgot password?\u0026quot; button out of overlapping Box in… by \u003ca href=\"https://github.com/MohammedThalha2002\"\u003e\u003ccode\u003e@​MohammedThalha2002\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/supabase-...\n\n_Description has been truncated_","html_url":"https://github.com/surenss861/movemark-ios/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/surenss861%2Fmovemark-ios/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"5560661992","node_id":"PR_kwDOQkhzqs8AAAABE1nYBA","number":79,"state":"closed","title":"chore(deps): bump the dependencies group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-27T23:04:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-23T23:10:09.000Z","updated_at":"2026-09-27T23:04:41.000Z","time_to_close":345270,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":14,"packages":[{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.3.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.devtools.ksp","old_version":"2.3.8","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.3.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.squareup.okhttp3:okhttp","old_version":"5.3.2","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"com.google.dagger:hilt-android","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.3.0","new_version":"1.4.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.05.00","new_version":"2026.09.00"},{"name":"io.github.rosemoe:editor","old_version":"0.24.5","new_version":"0.24.6","repository_url":"https://github.com/Rosemoe/sora-editor"},{"name":"io.mockk:mockk","old_version":"1.14.9","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"gradle-wrapper","old_version":"9.5.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.3.21` | `2.4.20` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.8` | `2.3.12` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.3.21` | `2.4.20` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `5.3.2` | `5.5.0` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.3.0` | `1.4.0` |\n| androidx.compose:compose-bom | `2026.05.00` | `2026.09.00` |\n| [io.github.rosemoe:editor](https://github.com/Rosemoe/sora-editor) | `0.24.5` | `0.24.6` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.14.9` | `1.14.11` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.5.1` | `9.7.1` |\n\n\nUpdates `com.android.application` from 9.2.1 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.3.21 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.3.8 to 2.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eMigrating Processors to Support Backing Fields\u003c/h3\u003e\n\u003cp\u003eThis release introduces support for explicit backing fields (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2873\"\u003e#2873\u003c/a\u003e), which may now be returned by \u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e. To prevent breaking existing processors, new language features require an explicit opt-in.\u003c/p\u003e\n\u003cp\u003eMore generally, the KSP API now explicitly models backing fields for properties. The following is an exhaustive list of functions in KSP API where processor may observe the change after opting in:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e: The function now returns a \u003ccode\u003eKSBackingField\u003c/code\u003e if the given annotation targeted a field. Previously, if a field were targeted, the function would return a \u003ccode\u003eKSProperty\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResolver.effectiveJavaModifiers\u003c/code\u003e: The function returns fewer modifiers for a \u003ccode\u003eKSPropertyDeclaration\u003c/code\u003e if it has a backing field, since most of the JVM-specific annotations apply to the backing field. If you are interested in the JVM modifiers, you should call the function with the \u003ccode\u003eKSBackingField\u003c/code\u003e obtained from the property instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, KSP now models Java fields as properties that always have backing fields. Some of the modifiers now apply to the backing field instead.\u003c/p\u003e\n\u003cp\u003eProcessors adapting to new features must opt in via both of the following steps simultaneously (failing to do both may lead to undefined behavior):\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe processor should call the \u003ccode\u003eregisterProcessorForNewFeatures\u003c/code\u003e function in \u003ccode\u003eSymbolProcessorEnvironment\u003c/code\u003e immediately when created (and only once). Example: \u003ca href=\"https://github.com/google/ksp/blob/958be42cfd07943f901727d12ab7fec6540d543f/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AbstractTestProcessor.kt#L30\"\u003eAbstractTestProcessor.kt#L30\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAll implementations of \u003ccode\u003eKSVisitor\u003c/code\u003e should move to \u003ccode\u003eKSVisitorNext\u003c/code\u003e. If their processor code does not directly implement the interface but instead \u003cstrong\u003eextends\u003c/strong\u003e one of the KSP-provided visitors (such as \u003ccode\u003eKSTopDownVisitor\u003c/code\u003e), they should instead extend \u003ccode\u003eKSTopDownVisitor(enableNewFeatures = true)\u003c/code\u003e and override \u003ccode\u003evisitBackingField\u003c/code\u003e depending on their code and needs.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eLet us know if you run into unexpected behavior!\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Resolver.getDeclarationsFromPackage returning incomplete declarations from KLibs in Kotlin Multiplatform (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2396\"\u003e#2396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP CLI process hanging indefinitely when a processor throws an unhandled exception (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix implicit task dependency error between KSP and Android Lint in Android KMP (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NullPointerException by registering PluginProblemReporter as an application service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3140\"\u003e#3140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not mark companion objects as JAVA_STATIC in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3125\"\u003e#3125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JAVA_STATIC modifier resolution for \u003ca href=\"https://github.com/JvmStatic\"\u003e\u003ccode\u003e@​JvmStatic\u003c/code\u003e\u003c/a\u003e members in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3124\"\u003e#3124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate minimum supported Android Gradle Plugin (AGP) version to 8.12.0 (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3149\"\u003e#3149\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/budindepunk\"\u003e\u003ccode\u003e@​budindepunk\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ehttps://github.com/google/ksp/compare/2.3.11...2.3.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a3c38590913b863cc6b73b41d54ff8afa625f642\"\u003e\u003ccode\u003ea3c3859\u003c/code\u003e\u003c/a\u003e Format Resolver file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a614317b071a434139689d8fc0f5c1377b4f0d44\"\u003e\u003ccode\u003ea614317\u003c/code\u003e\u003c/a\u003e Fix grammatical errors in Resolver doc comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c19f255fd96877bbc5b1b18c227c2a3d56883a24\"\u003e\u003ccode\u003ec19f255\u003c/code\u003e\u003c/a\u003e Merge equal EXPECT NEXT and EXPECT CURRENT in javaBackingFieldUsedInKotlin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d3df886048fc6512a06649371b2c1917863160cf\"\u003e\u003ccode\u003ed3df886\u003c/code\u003e\u003c/a\u003e Add test for getting default annotation values in KMP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/3bcac2082b36d3be96ea37070fa007d26233af88\"\u003e\u003ccode\u003e3bcac20\u003c/code\u003e\u003c/a\u003e Mark testJavaBackingFieldUsedInKotlin as fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/e74bb5f56328808f1ad37ba62e66ec3a8e72976e\"\u003e\u003ccode\u003ee74bb5f\u003c/code\u003e\u003c/a\u003e Update expected test output in libOrigins\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c9b1d406ed5bebb34411c4036fecbf0b014b013a\"\u003e\u003ccode\u003ec9b1d40\u003c/code\u003e\u003c/a\u003e Use KSSyntheticJavaBackingFieldImpl in KSPropertyDeclarationImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/afefe15219f9ef70363390236eca8e012c12f6d2\"\u003e\u003ccode\u003eafefe15\u003c/code\u003e\u003c/a\u003e Add KSSyntheticJavaBackingFieldImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/2da07c146f61caa0428c97df1152466a7a2aa7d5\"\u003e\u003ccode\u003e2da07c1\u003c/code\u003e\u003c/a\u003e Add test for missing synthetic Java fields\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/70335307edb9381edd707e5c0eabedf22300c3ab\"\u003e\u003ccode\u003e7033530\u003c/code\u003e\u003c/a\u003e Fix visibility modifiers for Kotlin-based backing fields\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.3.21 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:okhttp` from 5.3.2 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-5.3.2...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.appcompat:appcompat` from 1.7.1 to 1.8.0\n\nUpdates `com.google.dagger:hilt-android` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.3.0 to 1.4.0\n\nUpdates `androidx.compose:compose-bom` from 2026.05.00 to 2026.09.00\n\nUpdates `io.github.rosemoe:editor` from 0.24.5 to 0.24.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Rosemoe/sora-editor/releases\"\u003eio.github.rosemoe:editor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.6\u003c/h2\u003e\n\u003ch2\u003eEditor Core\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eimprove algorithm of collecting sticky lines\u003c/li\u003e\n\u003cli\u003eadd min width for minimap region\u003c/li\u003e\n\u003cli\u003eadd inlay hint setter\u003c/li\u003e\n\u003cli\u003eenhance emoji text deletion on low API devices\u003c/li\u003e\n\u003cli\u003efix cursor anchor position for IME under wordwrap mode (\u003ca href=\"https://redirect.github.com/Xed-Editor/Xed-Editor/issues/1331\"\u003eXed-Editor/Xed-Editor#1331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate no completion checking logic (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCtrl+Space\u003c/code\u003e to trigger completion (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEditor LSP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix NPE in signature text generation (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/829\"\u003e#829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix possible dead loop in Markdown text parsing (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/845\"\u003e#845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenhance document color support and inlay hints (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/830\"\u003e#830\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenhance LSP completion overlap, character index bounds (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTextMate\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd documentation for \u003ccode\u003eTextMateLanguage\u003c/code\u003e and remove deprecated constructors\u003c/li\u003e\n\u003cli\u003einitialize color scheme on theme creation (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/806\"\u003e#806\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTreeSitter\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd cancellation token for variable analysis to reduce delay in large files\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eAs android support libraries are moving minSdk to 23, this will be the last release that supports API 21. From next release, we will raise the minSdk to 23.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/87055c459e346cac6c619b3350f0bfba076228cc\"\u003e\u003ccode\u003e87055c4\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.24.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/0b081c65b3f22483f16b83fde0e5475eba9fe88b\"\u003e\u003ccode\u003e0b081c6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/834\"\u003e#834\u003c/a\u003e from Rosemoe/renovate/androidxannotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/5af34ae09f32b4b34aacd3d6df701151d2a16a16\"\u003e\u003ccode\u003e5af34ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/838\"\u003e#838\u003c/a\u003e from Rosemoe/renovate/gradle-9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/82e11f86730644ebfc350041d040c6b0929620d8\"\u003e\u003ccode\u003e82e11f8\u003c/code\u003e\u003c/a\u003e feat(editor): add \u003ccode\u003eCtrl+Space\u003c/code\u003e keybinding for trigger completion (close \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/ed812efcedfb6b8e122007e8b010771949f084ee\"\u003e\u003ccode\u003eed812ef\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/main'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/656ccfb853def425dec8c64e2944f875efdd9d47\"\u003e\u003ccode\u003e656ccfb\u003c/code\u003e\u003c/a\u003e fix(lsp): fix markdown parsing of lists with leading spaces and possible dead...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/2b3861c0fc531b9fb1e0507c32cc8b73155718e7\"\u003e\u003ccode\u003e2b3861c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e from KonerDev/fix/lsp-completion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/4a7710f2067919a764041d80fac7fd7b55bde51b\"\u003e\u003ccode\u003e4a7710f\u003c/code\u003e\u003c/a\u003e fix: LSP completion overlap, character index bounds and no completion checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/49400e7cd4d73694673751d26bfc34b1000580d9\"\u003e\u003ccode\u003e49400e7\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency androidx.annotation:annotation to v1.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/134adc3de20cbcad91019375e57d859c9778fa85\"\u003e\u003ccode\u003e134adc3\u003c/code\u003e\u003c/a\u003e chore(deps): update gradle to v9.5.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Rosemoe/sora-editor/compare/0.24.5...0.24.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.mockk:mockk` from 1.14.9 to 1.14.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockk/mockk/releases\"\u003eio.mockk:mockk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.14.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: added SameInstanceMatcher to handle an issue with equals method when using EqMatcher along with a mock to an object by \u003ca href=\"https://github.com/DOssaA\"\u003e\u003ccode\u003e@​DOssaA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1508\"\u003emockk/mockk#1508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd scoped confirmVerified overloads for callables (KFunction and KProperty) by \u003ca href=\"https://github.com/DOssaA\"\u003e\u003ccode\u003e@​DOssaA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1513\"\u003emockk/mockk#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support MockKAnnotation.useDependencyOrder for JUnit 5 by \u003ca href=\"https://github.com/ilia1243\"\u003e\u003ccode\u003e@​ilia1243\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1515\"\u003emockk/mockk#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow updating settings from code by \u003ca href=\"https://github.com/Yentis\"\u003e\u003ccode\u003e@​Yentis\u003c/code\u003e\u003c/a\u003e in \u003ca hr...\n\n_Description has been truncated_","html_url":"https://github.com/KonaBess-Next/KonaBess-Next/pull/79","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonaBess-Next%2FKonaBess-Next/issues/79","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/79/packages"},{"uuid":"5549050208","node_id":"PR_kwDOUmrVyc8AAAABEsZtrQ","number":13,"state":"closed","title":"Bump com.android.application from 8.13.0 to 9.4.1 in /android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-23T12:05:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-23T05:06:20.000Z","updated_at":"2026-09-23T12:05:19.000Z","time_to_close":25129,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.4.1","repository_url":null}],"path":"/android","ecosystem":"maven"},"body":"Bumps com.android.application from 8.13.0 to 9.4.1.\n","html_url":"https://github.com/pboachie/zrotext/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pboachie%2Fzrotext/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"5546057888","node_id":"PR_kwDOUSKWW88AAAABEqG5IA","number":7,"state":"closed","title":"build(deps): bump the maven group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-29T22:16:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-22T22:29:02.000Z","updated_at":"2026-09-29T22:16:15.000Z","time_to_close":604031,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"maven","update_count":8,"packages":[{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.compose.material3:material3","old_version":"1.5.0-alpha27","new_version":"1.5.0-alpha28"},{"name":"com.google.protobuf:protobuf-kotlin-lite","old_version":"4.36.1","new_version":"4.36.2"},{"name":"com.google.protobuf:protoc","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"com.google.protobuf:protoc","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the maven group with 8 updates in the /manager directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.compose.material3:material3 | `1.5.0-alpha27` | `1.5.0-alpha28` |\n| com.google.protobuf:protobuf-kotlin-lite | `4.36.1` | `4.36.2` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.compose.material3:material3` from 1.5.0-alpha27 to 1.5.0-alpha28\n\nUpdates `com.google.protobuf:protobuf-kotlin-lite` from 4.36.1 to 4.36.2\n\nUpdates `com.google.protobuf:protoc` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.protobuf:protoc` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/l...\n\n_Description has been truncated_","html_url":"https://github.com/dikafarabian/KowSU/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikafarabian%2FKowSU/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"5535103395","node_id":"PR_kwDOO88c0s8AAAABEhSshA","number":979,"state":"open","title":"Bump the gradle-minor-patch group in /native-android-app with 2 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-22T03:57:09.000Z","updated_at":"2026-09-22T03:57:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-minor-patch","update_count":2,"packages":[{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/native-android-app","ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group in /native-android-app with 2 updates: com.android.application and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/teetee971/SentinelQuantumVanguardAiPro/pull/979","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/teetee971%2FSentinelQuantumVanguardAiPro/issues/979","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/979/packages"},{"uuid":"5533319128","node_id":"PR_kwDOE1xTLs8AAAABEf5OGg","number":721,"state":"closed","title":"Bump com.android.application from 9.5.0-alpha05 to 9.5.0-alpha06","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-28T22:53:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-21T22:52:59.000Z","updated_at":"2026-09-28T22:53:10.000Z","time_to_close":604809,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"9.5.0-alpha05","new_version":"9.5.0-alpha06","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps com.android.application from 9.5.0-alpha05 to 9.5.0-alpha06.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=9.5.0-alpha05\u0026new-version=9.5.0-alpha06)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/fmonniot/resync/pull/721","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmonniot%2Fresync/issues/721","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/721/packages"}],"issue_packages":[{"old_version":"8.7.3","new_version":"8.13.2","update_type":"minor","path":null,"pr_created_at":"2026-10-05T02:27:42.000Z","version_change":"8.7.3 → 8.13.2","issue":{"uuid":"5705556415","node_id":"PR_kwDOUEoZG88AAAABGn5Ryg","number":128,"state":"closed","title":"build: bump the gradle-minor-and-patch group across 2 directories with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-05T16:39:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-05T02:27:42.000Z","updated_at":"2026-10-05T16:39:47.000Z","time_to_close":51115,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build: bump","group_name":"gradle-minor-and-patch","update_count":5,"packages":[{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-and-patch group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.4.20` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `8.14.5` |\n\nBumps the gradle-minor-and-patch group with 2 updates in the /app directory: androidx.test.ext:junit and androidx.test:runner.\n\nUpdates `com.android.application` from 8.7.3 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.1.0 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.1.0...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:runner` from 1.6.2 to 1.7.0\n\nUpdates `gradle-wrapper` from 8.11.1 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:runner` from 1.6.2 to 1.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Slacker-LLC/openIME/pull/128","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slacker-LLC%2FopenIME/issues/128","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/128/packages"}},{"old_version":"9.3.0","new_version":"9.4.1","update_type":"minor","path":"/apps/android","pr_created_at":"2026-10-02T19:25:11.000Z","version_change":"9.3.0 → 9.4.1","issue":{"uuid":"5682296041","node_id":"PR_kwDOSRYmZs8AAAABGV2r4A","number":632,"state":"closed","title":"build(deps): bump the android-deps group in /apps/android with 32 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T01:39:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-02T19:25:11.000Z","updated_at":"2026-10-03T01:39:36.000Z","time_to_close":22463,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"android-deps","update_count":32,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.wear.compose:compose-foundation","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.protolayout:protolayout","old_version":"1.4.1","new_version":"1.4.2"},{"name":"androidx.wear.protolayout:protolayout-material3","old_version":"1.4.1","new_version":"1.4.2"},{"name":"androidx.wear.tiles:tiles","old_version":"1.6.1","new_version":"1.6.2"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"org.commonmark:commonmark","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"org.junit.vintage:junit-vintage-engine","old_version":"6.1.2","new_version":"6.1.3","repository_url":"https://github.com/junit-team/junit-framework"},{"name":"io.kotest:kotest-assertions-core-jvm","old_version":"6.2.2","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.2","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"com.squareup.okhttp3:mockwebserver","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"com.squareup.okhttp3:okhttp","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.3.0","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.0","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.10","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":"/apps/android","ecosystem":"maven"},"body":"Bumps the android-deps group in /apps/android with 32 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.8.0` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.wear.compose:compose-foundation | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| androidx.wear.protolayout:protolayout | `1.4.1` | `1.4.2` |\n| androidx.wear.protolayout:protolayout-material3 | `1.4.1` | `1.4.2` |\n| androidx.wear.tiles:tiles | `1.6.1` | `1.6.2` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [org.commonmark:commonmark](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) | `6.1.2` | `6.1.3` |\n| [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest) | `6.2.2` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.2` | `6.2.5` |\n| [com.squareup.okhttp3:mockwebserver](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.3.0` | `9.4.1` |\n| com.android.library | `9.3.0` | `9.4.1` |\n| com.android.test | `9.3.0` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.10` | `2.3.12` |\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.appcompat:appcompat` from 1.7.1 to 1.8.0\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.wear.compose:compose-foundation` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.protolayout:protolayout` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.protolayout:protolayout-material3` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.protolayout:protolayout-material3` from 1.4.1 to 1.4.2\n\nUpdates `androidx.wear.tiles:tiles` from 1.6.1 to 1.6.2\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-autolink` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-autolink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-autolink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to rem...\n\n_Description has been truncated_","html_url":"https://github.com/l3ocifer/puck-openclaw/pull/632","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3ocifer%2Fpuck-openclaw/issues/632","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/632/packages"}},{"old_version":"8.10.1","new_version":"9.4.1","update_type":"major","path":null,"pr_created_at":"2026-10-02T09:14:41.000Z","version_change":"8.10.1 → 9.4.1","issue":{"uuid":"5675374598","node_id":"PR_kwDOU4gbIc8AAAABGQU6GQ","number":5,"state":"closed","title":"Bump com.android.application from 8.10.1 to 9.4.1","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-02T16:58:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-02T09:14:41.000Z","updated_at":"2026-10-02T16:59:02.000Z","time_to_close":27851,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"8.10.1","new_version":"9.4.1","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps com.android.application from 8.10.1 to 9.4.1.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=8.10.1\u0026new-version=9.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/bobby-99/reflex/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobby-99%2Freflex/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"9.2.1","new_version":"9.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-01T16:52:40.000Z","version_change":"9.2.1 → 9.4.1","issue":{"uuid":"5665886605","node_id":"PR_kwDOTfQbHc8AAAABGIxXzg","number":12,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T16:52:40.000Z","updated_at":"2026-10-01T16:53:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":13,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.baselineprofile","old_version":"1.4.1","new_version":"1.5.0"},{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.2.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.compose","old_version":"1.7.3","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.kotlinx.binary-compatibility-validator","old_version":"0.18.1","new_version":"0.18.2","repository_url":"https://github.com/Kotlin/binary-compatibility-validator"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.8.0` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.baselineprofile | `1.4.1` | `1.5.0` |\n| com.android.application | `9.2.1` | `9.4.1` |\n| com.android.library | `9.2.1` | `9.4.1` |\n| com.android.library | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.7.3` | `1.12.1` |\n| [org.jetbrains.kotlinx.binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) | `0.18.1` | `0.18.2` |\n\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.compose.ui:ui-tooling-preview` from 1.7.3 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/releases\"\u003eorg.jetbrains.compose.ui:ui-tooling-preview's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation Event\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigationevent#1.1.1\"\u003eNavigation Event 1.1.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.compose.ui:ui-tooling-preview's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1 (September 2026)\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/bdd8e879b2fc4960934a99959d82400c96b7c590\"\u003e\u003ccode\u003ebdd8e87\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5717\"\u003e#5717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/2569a3e4e055087682b0d844fbb6c1b0380a6ca7\"\u003e\u003ccode\u003e2569a3e\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/d67175a3766c51caa673b220c74a4fb68a61fd31\"\u003e\u003ccode\u003ed67175a\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/5935bcd0a54328c4910798882c1d84cd50f248d2\"\u003e\u003ccode\u003e5935bcd\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5670\"\u003e#5670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/7cb29f17a7b7e61f3be0eb3ab4388e949ccc5cfc\"\u003e\u003ccode\u003e7cb29f1\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5660\"\u003e#5660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/79bf7cab92b333e5b51b70f55cc971638319dc12\"\u003e\u003ccode\u003e79bf7ca\u003c/code\u003e\u003c/a\u003e Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5659\"\u003e#5659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/106e0309e3b980128227620bff238e245234a4d4\"\u003e\u003ccode\u003e106e030\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Fix \u0026quot;Desktop release build fails with VerifyError: Bad return t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/40197c0b97efaa19cdfa6b26eb6074abbe5734ab\"\u003e\u003ccode\u003e40197c0\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Desktop release build fails with VerifyError: Bad return type\u0026quot; (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5652\"\u003e#5652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/96aba2ffc5cd9c1198fca0c52ce07dfb452179c6\"\u003e\u003ccode\u003e96aba2f\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/e3a721387901e382d4568bfcc893c5bb87f3bd3c\"\u003e\u003ccode\u003ee3a7213\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5641\"\u003e#5641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/compare/v1.7.3...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.compose` from 1.7.3 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/releases\"\u003eorg.jetbrains.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation Event\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigationevent#1.1.1\"\u003eNavigation Event 1.1.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1 (September 2026)\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eChanges since 1.12.0\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eMigration Notes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily re-exposed \u003ccode\u003eLocalSystemTheme\u003c/code\u003e (as \u003ccode\u003e@InternalComposeUiApi\u003c/code\u003e) and deprecated it. It will be removed in a future release \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3393\"\u003e#3393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003ch3\u003eMultiple Platforms\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash in cases when Skia returns null \u003ccode\u003eColorFilter\u003c/code\u003e due to no-op parameter combination \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed crashes in certain scenarios when selecting text in a \u003ccode\u003eSelectionContainer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3420\"\u003e#3420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eiOS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Toolbar is not visible on iOS 16 or older \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue where Toolbar does not appear when \u003ccode\u003eSelectionContainer\u003c/code\u003e has at least one \u003ccode\u003eTextField\u003c/code\u003e inside \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3404\"\u003e#3404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash when iOS reads \u003ccode\u003eAccessibilityElement\u003c/code\u003e's properties after disposal \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3403\"\u003e#3403\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWeb\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix virtual keyboard hiding after tapping on a selection handle without moving it \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform-core/pull/3329\"\u003e#3329\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eResources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with Kotlin 2.5 \u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eComponents\u003c/h2\u003e\n\u003ch3\u003eGradle plugin\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eorg.jetbrains.compose\u003c/code\u003e version \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/p\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLibrary group\u003c/th\u003e\n\u003cth\u003eCoordinates\u003c/th\u003e\n\u003cth\u003eBased on Jetpack\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRuntime\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.runtime:runtime*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.12.1\"\u003eRuntime 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUI\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.ui:ui*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-ui#1.12.1\"\u003eUI 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFoundation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.foundation:foundation*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.12.1\"\u003eFoundation 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material:material*:1.12.1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material#1.12.1\"\u003eMaterial 1.12.1\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3:material3*:1.12.0-alpha03\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha22\"\u003eMaterial3 1.5.0-alpha22\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial3 Adaptive\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0\"\u003eMaterial3 Adaptive 1.3.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLifecycle\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0\"\u003eLifecycle 2.11.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation#2.10.0\"\u003eNavigation 2.10.0\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNavigation3\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eorg.jetbrains.androidx.navigation3:navigation3-*:1.1.2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.7\"\u003eNavigation3 1.1.7\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/bdd8e879b2fc4960934a99959d82400c96b7c590\"\u003e\u003ccode\u003ebdd8e87\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5717\"\u003e#5717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/2569a3e4e055087682b0d844fbb6c1b0380a6ca7\"\u003e\u003ccode\u003e2569a3e\u003c/code\u003e\u003c/a\u003e Add a fallback for deleted wasm API in Kotlin 2.5 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5716\"\u003e#5716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/d67175a3766c51caa673b220c74a4fb68a61fd31\"\u003e\u003ccode\u003ed67175a\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/5935bcd0a54328c4910798882c1d84cd50f248d2\"\u003e\u003ccode\u003e5935bcd\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5670\"\u003e#5670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/7cb29f17a7b7e61f3be0eb3ab4388e949ccc5cfc\"\u003e\u003ccode\u003e7cb29f1\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5660\"\u003e#5660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/79bf7cab92b333e5b51b70f55cc971638319dc12\"\u003e\u003ccode\u003e79bf7ca\u003c/code\u003e\u003c/a\u003e Proguard - exclude notes for Kt__ classes (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5659\"\u003e#5659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/106e0309e3b980128227620bff238e245234a4d4\"\u003e\u003ccode\u003e106e030\u003c/code\u003e\u003c/a\u003e (Cherry-pick) Fix \u0026quot;Desktop release build fails with VerifyError: Bad return t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/40197c0b97efaa19cdfa6b26eb6074abbe5734ab\"\u003e\u003ccode\u003e40197c0\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Desktop release build fails with VerifyError: Bad return type\u0026quot; (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5652\"\u003e#5652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/96aba2ffc5cd9c1198fca0c52ce07dfb452179c6\"\u003e\u003ccode\u003e96aba2f\u003c/code\u003e\u003c/a\u003e [cherry-pick] Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/compose-multiplatform/commit/e3a721387901e382d4568bfcc893c5bb87f3bd3c\"\u003e\u003ccode\u003ee3a7213\u003c/code\u003e\u003c/a\u003e Bump CHR version to 1.2.0-rc01 (\u003ca href=\"https://redirect.github.com/JetBrains/compose-multiplatform/issues/5641\"\u003e#5641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/compose-multiplatform/compare/v1.7.3...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.baselineprofile` from 1.4.1 to 1.5.0\n\nUpdates `com.android.application` from 9.2.1 to 9.4.1\n\nUpdates `com.android.library` from 9.2.1 to 9.4.1\n\nUpdates `com.android.library` from 9.2.1 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.multiplatform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.multiplatform's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/cod...\n\n_Description has been truncated_","html_url":"https://github.com/PrasadVennam1005/NeoCompose/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrasadVennam1005%2FNeoCompose/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"8.6.1","new_version":"9.4.1","update_type":"major","path":"/android","pr_created_at":"2026-10-01T05:53:39.000Z","version_change":"8.6.1 → 9.4.1","issue":{"uuid":"5657661427","node_id":"PR_kwDOU1tIas8AAAABGCKgXA","number":11,"state":"closed","title":"build(deps): bump com.android.application from 8.6.1 to 9.4.1 in /android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-01T07:01:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-01T05:53:39.000Z","updated_at":"2026-10-01T07:01:42.000Z","time_to_close":4080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"com.android.application","old_version":"8.6.1","new_version":"9.4.1","repository_url":null}],"path":"/android","ecosystem":"maven"},"body":"Bumps com.android.application from 8.6.1 to 9.4.1.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=8.6.1\u0026new-version=9.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/meshbergio/toomux/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshbergio%2Ftoomux/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":null,"pr_created_at":"2026-10-01T00:47:34.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5655055531","node_id":"PR_kwDOTsjxFM8AAAABGAF4mA","number":10,"state":"open","title":"build(deps): bump the gradle-all group with 14 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T00:47:34.000Z","updated_at":"2026-10-01T00:47:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"gradle-all","update_count":14,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"org.bouncycastle:bcpkix-jdk18on","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"io.ktor:ktor-network","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-network-tls","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"com.github.luben:zstd-jni","old_version":"1.5.7-16","new_version":"1.5.7-20","repository_url":"https://github.com/luben/zstd-jni"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"com.android.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-all group with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) | `1.85` | `1.86` |\n| [io.ktor:ktor-network](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-network-tls](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) | `1.5.7-16` | `1.5.7-20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| com.android.library | `9.4.0` | `9.4.1` |\n| com.android.application | `9.4.0` | `9.4.1` |\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.bouncycastle:bcpkix-jdk18on` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcpkix-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode -...\n\n_Description has been truncated_","html_url":"https://github.com/LTechnologies0/kotlin-tor/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/LTechnologies0%2Fkotlin-tor/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"9.1.0","new_version":"9.4.1","update_type":"minor","path":"/app/android","pr_created_at":"2026-09-30T06:12:45.000Z","version_change":"9.1.0 → 9.4.1","issue":{"uuid":"5641882756","node_id":"PR_kwDOUzrUp88AAAABF1fgUw","number":2,"state":"open","title":"build(deps): bump com.android.application from 9.1.0 to 9.4.1 in /app/android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-30T06:12:45.000Z","updated_at":"2026-09-30T07:23:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"com.android.application","old_version":"9.1.0","new_version":"9.4.1","repository_url":null}],"path":"/app/android","ecosystem":"maven"},"body":"Bumps com.android.application from 9.1.0 to 9.4.1.\n","html_url":"https://github.com/muhammad-shameel-ks/gymly/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/muhammad-shameel-ks%2Fgymly/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":null,"pr_created_at":"2026-09-29T00:24:41.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5623134880","node_id":"PR_kwDOCEdbWs8AAAABFmhsgw","number":470,"state":"closed","title":"build(deps): bump the all-dependencies group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-29T19:37:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-29T00:24:41.000Z","updated_at":"2026-09-29T19:37:15.000Z","time_to_close":69151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"all-dependencies","update_count":9,"packages":[{"name":"com.google.protobuf:protobuf-java","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"org.mockito:mockito-core","old_version":"5.23.0","new_version":"5.24.0","repository_url":"https://github.com/mockito/mockito"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.gradle.plugin-publish","old_version":"2.1.1","new_version":"2.2.1"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.00","new_version":"2026.09.00"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the all-dependencies group with 9 updates in the /oss-licenses-plugin/testapp directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `5.23.0` | `5.24.0` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| com.gradle.plugin-publish | `2.1.1` | `2.2.1` |\n| androidx.compose:compose-bom | `2026.06.00` | `2026.09.00` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n\n\nUpdates `com.google.protobuf:protobuf-java` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.mockito:mockito-core` from 5.23.0 to 5.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockito/mockito/releases\"\u003eorg.mockito:mockito-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.24.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.24.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-09-23 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0\"\u003e27 commit(s)\u003c/a\u003e by Andrei Solntsev, DragonFSKY, Hünkar Can Tunç, Joshua Selbo, M. Minot, Markus Gaisbauer, Mirko Alicastro, Vinod Kumar M ( codingkiddo ), dependabot[bot]\u003c/li\u003e\n\u003cli\u003eFix Mockito docs for -javaagent flag with Gradle [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3866\"\u003e#3866\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3866\"\u003emockito/mockito#3866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin example for adding Mockito as an agent is incorrect [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3864\"\u003e#3864\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3864\"\u003emockito/mockito#3864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.6.3 to 1.6.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3862\"\u003e#3862\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3862\"\u003emockito/mockito#3862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 6.2.0 to 6.3.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3852\"\u003e#3852\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3852\"\u003emockito/mockito#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 5 to 6.2.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3851\"\u003e#3851\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3851\"\u003emockito/mockito#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve method parameters when clearing inline mocks [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3847\"\u003e#3847\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3847\"\u003emockito/mockito#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.6.0 to 1.6.3 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3845\"\u003e#3845\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3845\"\u003emockito/mockito#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrint object fields via reflection when \u003ccode\u003etoString()\u003c/code\u003e is not implemented [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3844\"\u003e#3844\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3844\"\u003emockito/mockito#3844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrate extensions-tests to JUnit Jupiter [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3840\"\u003e#3840\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3840\"\u003emockito/mockito#3840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.6 to 1.6.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3839\"\u003e#3839\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3839\"\u003emockito/mockito#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs(when-verify): fixes to explanations about redundancy [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3838\"\u003e#3838\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3838\"\u003emockito/mockito#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConfusing inconsistency in example method calls in “stubbing and verifying is redundant” note of “when” and “verify” Javadoc [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3837\"\u003e#3837\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3837\"\u003emockito/mockito#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6 to 7 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3836\"\u003e#3836\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3836\"\u003emockito/mockito#3836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003e#2740\u003c/a\u003e : Add mockMaker option to \u003ccode\u003e@Spy\u003c/code\u003e annotation [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3835\"\u003e#3835\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3835\"\u003emockito/mockito#3835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.5 to 1.5.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3834\"\u003e#3834\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3834\"\u003emockito/mockito#3834\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.5.4 to 1.5.5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3833\"\u003e#3833\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3833\"\u003emockito/mockito#3833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 6 to 7 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3831\"\u003e#3831\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3831\"\u003emockito/mockito#3831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.5 to 1.5.4 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3830\"\u003e#3830\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3830\"\u003emockito/mockito#3830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix clearInlineMocks not de-registering singleton mocks [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3829\"\u003e#3829\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3829\"\u003emockito/mockito#3829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NotAMockException when using mockSingleton with MockitoJUnit [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3827\"\u003e#3827\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3827\"\u003emockito/mockito#3827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNotAMockException when using mockSingleton with MockitoSession or MockitoJUnit [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3826\"\u003e#3826\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3826\"\u003emockito/mockito#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove Gradle agent docs for configuration cache [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3823\"\u003e#3823\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3823\"\u003emockito/mockito#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGradle documentation for setting up instrumentation with Gradle configuration cache [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3822\"\u003e#3822\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3822\"\u003emockito/mockito#3822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003e#3818\u003c/a\u003e : Fix data race in InvocationContainerImpl.invocationForStubbing [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3819\"\u003e#3819\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3819\"\u003emockito/mockito#3819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eData race on invocationForPotentialStubbing [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003e#3818\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3818\"\u003emockito/mockito#3818\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003e#3814\u003c/a\u003e : implement package-level clinit suppression [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3815\"\u003e#3815\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3815\"\u003emockito/mockito#3815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePackage-level clinit suppression [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003e#3814\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3814\"\u003emockito/mockito#3814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade Android Gradle Plugin to 8.13.2 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3812\"\u003e#3812\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3812\"\u003emockito/mockito#3812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaces raw generic types with type parameters [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3806\"\u003e#3806\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3806\"\u003emockito/mockito#3806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003e#2398\u003c/a\u003e : Implement global suppress static initialization leveraging java agent [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3801\"\u003e#3801\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3801\"\u003emockito/mockito#3801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3800\"\u003e#3800\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3800\"\u003emockito/mockito#3800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix non-deterministic AssertionError when using MockMakers.SUBCLASS (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3406\"\u003e#3406\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2823\"\u003e#2823\u003c/a\u003e) [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3795\"\u003e#3795\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3795\"\u003emockito/mockito#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003e#3536\u003c/a\u003e : Implement SpyStatic API [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3794\"\u003e#3794\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3794\"\u003emockito/mockito#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThe class's MethodParameters are removed after clearAllCaches is invoked [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3763\"\u003e#3763\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3763\"\u003emockito/mockito#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[FeatureRequest / Idea] Create Mockito.spyStatic [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003e#3536\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3536\"\u003emockito/mockito#3536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd option to specify mockmaker for \u003ccode\u003e@Spy\u003c/code\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003e#2740\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2740\"\u003emockito/mockito#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHow can I suppress static initializer? [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003e#2398\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2398\"\u003emockito/mockito#2398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/5a2f0f81cdafc9b34ddb4520db7f8866c787dac0\"\u003e\u003ccode\u003e5a2f0f8\u003c/code\u003e\u003c/a\u003e Fix Mockito docs for -javaagent flag with Gradle (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3866\"\u003e#3866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/9c5f36fb9f2ad89fbaab828d33d144cd398a4079\"\u003e\u003ccode\u003e9c5f36f\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.6.3 to 1.6.6 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3862\"\u003e#3862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/e7fd06dda31daf0c71ad1dedc76ffc9f8ecf6973\"\u003e\u003ccode\u003ee7fd06d\u003c/code\u003e\u003c/a\u003e Preserve method parameters when clearing inline mocks (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3847\"\u003e#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/5a676bcd9ef9a10db46e1dc34e190eb46faa2687\"\u003e\u003ccode\u003e5a676bc\u003c/code\u003e\u003c/a\u003e Bump gradle/actions from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/508f8e78f5ac5ed9f23f7b92b01de76752120a67\"\u003e\u003ccode\u003e508f8e7\u003c/code\u003e\u003c/a\u003e Bump gradle/actions from 5 to 6.2.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3851\"\u003e#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/ee8a330da0218f32d5964acdeaa3ac39e2c6ce14\"\u003e\u003ccode\u003eee8a330\u003c/code\u003e\u003c/a\u003e Print object fields via reflection when \u003ccode\u003etoString()\u003c/code\u003e is not implemented (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3844\"\u003e#3844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/39b1aba6e6cc92d8ad3c812dcc16ed357c9fbc85\"\u003e\u003ccode\u003e39b1aba\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.6.0 to 1.6.3 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/d8638e1a8b67b4acea63c80dc85d62eda4ef57f5\"\u003e\u003ccode\u003ed8638e1\u003c/code\u003e\u003c/a\u003e Migrate extensions-tests to JUnit Jupiter (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3840\"\u003e#3840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/0aab922fa4c8967e50613671f58c707a69606c62\"\u003e\u003ccode\u003e0aab922\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.5.6 to 1.6.0 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/f3cf74c7e1106f7d32299001ca0ecf2c492c468c\"\u003e\u003ccode\u003ef3cf74c\u003c/code\u003e\u003c/a\u003e docs(when-verify): fixes to explanations about redundancy (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3838\"\u003e#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.jvm` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.gradle.plugin-publish` from 2.1.1 to 2.2.1\n\nUpdates `androidx.compose:compose-bom` from 2026.06.00 to 2026.09.00\n\nUpdates `org.robolectric:robolectric` from 4.16.1 to 4.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.17 supports SDK 37 and contains many other features and enhancements.\u003c/p\u003e\n\u003cp\u003ePlease note you may need to add jvmFlags configuration when using JDKs \u0026gt;= 17 at \u003ca href=\"https://robolectric.org/getting-started/\"\u003ehttps://robolectric.org/getting-started/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cp\u003eAndroidVersions has been removed in favor of using android.os.Build constants\nShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T), in order to correctly reflect type enforcement in the framework\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable httpclient tests in Github CI by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10553\"\u003erobolectric/robolectric#10553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse Java 21 for CodeQL by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10554\"\u003erobolectric/robolectric#10554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.48.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10561\"\u003erobolectric/robolectric#10561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.12 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10557\"\u003erobolectric/robolectric#10557\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eAndroidVersions\u003c/code\u003e Javadoc by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10556\"\u003erobolectric/robolectric#10556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake Scheduler#size as unsupported on SDKs \u0026gt; Baklava. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10564\"\u003erobolectric/robolectric#10564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate shadows/httpclient to use prebuilt legacy http client for tests by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10562\"\u003erobolectric/robolectric#10562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for getDeviceOwnerComponentOnAnyUser. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10565\"\u003erobolectric/robolectric#10565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10567\"\u003erobolectric/robolectric#10567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UiModeManager contrast handling in in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10568\"\u003erobolectric/robolectric#10568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake all static fields emitted by Reflector volatile. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10569\"\u003erobolectric/robolectric#10569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate listener logic of getProfileProxy to match actual behavior. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10570\"\u003erobolectric/robolectric#10570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate mockito monorepo to v5.19.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10560\"\u003erobolectric/robolectric#10560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate kotlin monorepo to v2.2.10 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10558\"\u003erobolectric/robolectric#10558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ShadowPausedLooper#poll when sync barrier is blocking the queue. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10571\"\u003erobolectric/robolectric#10571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eShadowTelephonyManager\u003c/code\u003e to support \u003ccode\u003eupdateAvailalbeNetworks\u003c/code\u003e by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10574\"\u003erobolectric/robolectric#10574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android V (SDK 35) to build id 13954326 by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10575\"\u003erobolectric/robolectric#10575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UserManager.isMainUser on in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10576\"\u003erobolectric/robolectric#10576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds robolectric support for AccessibilityWindowInfo.get/setRegionInScreen(). by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10577\"\u003erobolectric/robolectric#10577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused dependencies by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10566\"\u003erobolectric/robolectric#10566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for mouse wheel scroll events to the simulator by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10578\"\u003erobolectric/robolectric#10578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Javadoc of {get,peek}NextStartedService to better reflect the actual implementation by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10585\"\u003erobolectric/robolectric#10585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a script to generate a legacy http client bundle by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10555\"\u003erobolectric/robolectric#10555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SurroundingTextCallback to ShadowAccessibilityInputConnection. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10591\"\u003erobolectric/robolectric#10591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds setInformationElements() to WifiScanResultBuilder by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10593\"\u003erobolectric/robolectric#10593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd isWallpaperBackupEligible and getWallpaperFile with cropping by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10594\"\u003erobolectric/robolectric#10594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMention Baklava support in the Readme by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10588\"\u003erobolectric/robolectric#10588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AccessibilityWindowInfoBuilderTest by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10595\"\u003erobolectric/robolectric#10595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused method in \u003ccode\u003eAndroidVersionInitTools\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10563\"\u003erobolectric/robolectric#10563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.50.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10582\"\u003erobolectric/robolectric#10582\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub Actions to v5 (major) by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10583\"\u003erobolectric/robolectric#10583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android Gradle Plugin by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10580\"\u003erobolectric/robolectric#10580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.13 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10596\"\u003erobolectric/robolectric#10596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10559\"\u003erobolectric/robolectric#10559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate a workflow to automate the sync of \u003ccode\u003egoogle\u003c/code\u003e into \u003ccode\u003emaster\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10339\"\u003erobolectric/robolectric#10339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump toolchains in devcontainer's Dockerfile by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10597\"\u003erobolectric/robolectric#10597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Robolectric icon for IDE by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10598\"\u003erobolectric/robolectric#10598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare File? as type for toolsJar explicitly by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10599\"\u003erobolectric/robolectric#10599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable parallel for aggregateDocs task temporarily by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10600\"\u003erobolectric/robolectric#10600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/0706415db828e1bdcf4f0c820784fa760d0185a2\"\u003e\u003ccode\u003e0706415\u003c/code\u003e\u003c/a\u003e Bump version to 4.17.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f3c17bd2aeb66035ec3ece695f94ebc81588b79c\"\u003e\u003ccode\u003ef3c17bd\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/04b84f6f3778743e27b4c82a5da488ddf2046d41\"\u003e\u003ccode\u003e04b84f6\u003c/code\u003e\u003c/a\u003e \u0026quot;fixed ResTable_package.SIZEOF value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f4ee543bf78a429be44ab914b045736ddfda58dc\"\u003e\u003ccode\u003ef4ee543\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/gemini-code-assist\"\u003e\u003ccode\u003e@​gemini-code-assist\u003c/code\u003e\u003c/a\u003e[bot]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/fb99bfbcbcb9ca9c7fe3b3937df1afb0ac23c74d\"\u003e\u003ccode\u003efb99bfb\u003c/code\u003e\u003c/a\u003e Expose BouncyCastle BoM as api dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/a453192a93423d5c4f93f520609aed69d60572a1\"\u003e\u003ccode\u003ea453192\u003c/code\u003e\u003c/a\u003e Fix Javadoc for \u003ccode\u003eVersionCalculator\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/6f268925237080530b7cdf9ff7a001cc138c1043\"\u003e\u003ccode\u003e6f26892\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ceffe96a63b3565ac8337c334b770ef76db7a2f2\"\u003e\u003ccode\u003eceffe96\u003c/code\u003e\u003c/a\u003e Only adjust frameinfo timestamp values (including vsync).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ea5879f7e3fc9d354833d73acd73f089388f42b9\"\u003e\u003ccode\u003eea5879f\u003c/code\u003e\u003c/a\u003e Add opt-in fix for stale screenshots on SDK 37.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/8bea42181c6a1ecdd60ab50e502157ab4aed3f6d\"\u003e\u003ccode\u003e8bea421\u003c/code\u003e\u003c/a\u003e Fix jank log spam on SDK 37+ by translating FrameInfo timestamps.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16.1...robolectric-4.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jet...\n\n_Description has been truncated_","html_url":"https://github.com/google/play-services-plugins/pull/470","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fplay-services-plugins/issues/470","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/470/packages"}},{"old_version":"9.3.1","new_version":"9.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-28T09:05:55.000Z","version_change":"9.3.1 → 9.4.1","issue":{"uuid":"5612069344","node_id":"PR_kwDOTVkVeM8AAAABFdmchw","number":114,"state":"open","title":"build(deps): bump the android-deps group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T09:05:55.000Z","updated_at":"2026-09-28T09:06:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"android-deps","update_count":24,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.4.1","new_version":"1.5.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.wear.compose:compose-foundation","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"androidx.wear.compose:compose-material3","old_version":"1.6.2","new_version":"1.7.0"},{"name":"org.bouncycastle:bcprov-jdk18on","old_version":"1.85.2","new_version":"1.86","repository_url":"https://github.com/bcgit/bc-java"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.5.0","new_version":"3.6.3","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.kotest:kotest-assertions-core-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"io.kotest:kotest-runner-junit5-jvm","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/kotest/kotest"},{"name":"androidx.media3:media3-datasource-okhttp","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.11.0","new_version":"1.11.1","repository_url":"https://github.com/androidx/media"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.library","old_version":"9.3.1","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.11","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the android-deps group with 24 updates in the /apps/android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.4.1` | `1.5.0` |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.wear.compose:compose-foundation | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| androidx.wear.compose:compose-material3 | `1.6.2` | `1.7.0` |\n| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.85.2` | `1.86` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.5.0` | `3.6.3` |\n| [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest) | `6.2.4` | `6.2.5` |\n| [androidx.media3:media3-datasource-okhttp](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.11.0` | `1.11.1` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.android.application | `9.3.1` | `9.4.1` |\n| com.android.library | `9.3.1` | `9.4.1` |\n| com.android.test | `9.3.1` | `9.4.1` |\n| com.android.library | `9.3.1` | `9.4.1` |\n| com.android.test | `9.3.1` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.11` | `2.3.12` |\n\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.4.1 to 1.5.0\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.core:core-ktx` from 1.19.0 to 1.19.1\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.wear.compose:compose-foundation` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `androidx.wear.compose:compose-material3` from 1.6.2 to 1.7.0\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85.2 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md\"\u003eorg.bouncycastle:bcprov-jdk18on's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBouncy Castle Crypto Package - Release Notes\u003c/h1\u003e\n\u003ch2\u003e1.0 Introduction\u003c/h2\u003e\n\u003cp\u003eThe Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. The package is organised so that it contains a light-weight API suitable for use in any environment (including the J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.\u003c/p\u003e\n\u003ch2\u003e2.0 Release History\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003e2.1.1 Version\u003c/h3\u003e\n\u003cp\u003eRelease: 1.87\u003cbr /\u003e\nDate: 2026, TBD\u003c/p\u003e\n\u003ch3\u003e2.1.2 Defects Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA KeyAgreement asked for its shared secret before doPhase returned data rather than refusing. javax.crypto.KeyAgreement specifies IllegalStateException for that state, but nothing in the provider tracked it, so each SPI handed back whatever its result field held: for Diffie-Hellman that was the private value itself - engineInit seeded result with x, so generateSecret() returned the private exponent padded to the prime's length and generateSecret(\u0026quot;AES\u0026quot;) an all-zero key taken from that padding - while ECDH returned null and its named-algorithm overload raised NullPointerException. BaseAgreementSpi now records whether a doPhase has completed the agreement since the last init and refuses the request with an IllegalStateException naming the algorithm, so every family in the provider - DH, ECDH and ECMQV, the SM2 exchange, both ECGOST families, XDH, SM9 and NewHope - answers the same way, and the DH SPI no longer holds the private value in that field at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMac.getInstance and KeyGenerator.getInstance by the HMAC SHA-512/224 and SHA-512/256 object identifiers (1.2.840.113549.2.12 and .13) failed, although the same algorithms resolved by name and the matching SecretKeyFactory aliases were registered: the SHA512 mappings called addHMACAlgorithm for the two truncated variants without the addHMACAlias that registers their OIDs against Mac and KeyGenerator. Both are now aliased, as every other HMAC in that class already was.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA KTSParameterSpec naming an HKDF key-derivation function with a parameters field - a form the provider does not service - was accepted at Cipher init and then failed out of wrap or unwrap with an unchecked IllegalStateException neither method declares. The KTS key-wrapping Ciphers (ML-KEM, Classic McEliece, FrodoKEM, the composite KEM and RSA-KEM) now validate the spec's KDF when they take it, reporting an unserviceable one as the InvalidAlgorithmParameterException engineInit declares, which is what the javax.crypto.KEM services already did through KdfUtil.resolveKemSpec.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA DTLS handshake deadlocked when a handshake message ahead of the peer's ChangeCipherSpec (a client's CertificateVerify, say) was lost while the ChangeCipherSpec and Finished behind it arrived: the record layer moved its read epoch on at the ChangeCipherSpec and then discarded every retransmission of the lost message as belonging to the old epoch, whose records are only accepted once the handshake has completed. Each side then waited on the other until a handshake timeout, if one was configured, ended it. Every client-authenticated handshake, and every handshake in which the server issues a NewSessionTicket, was exposed. Until the handshake completes, handshake records from the current epoch are now still accepted after the read epoch has moved on, and each message is checked against the epoch of the record that carried it. The DTLS loopback tests now run their handshakes at 10% datagram loss in each direction, with a client-authenticated handshake at 25%.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe lightweight SubjectPublicKeyInfoFactory and PrivateKeyInfoFactory encoded a GOST R 34.10-2012 key on one of the legacy CryptoPro curves under id-GostR3410-2001, although RFC 9215 sec. 4.2 permits those curves for 2012 keys. The digestParamSet now decides: a GOST R 34.11-94 parameter set means 2001 (RFC 4491 sec. 2.3.2), a GOST R 34.11-2012 digest or none means 2012 with 256/512 taken from the curve field size, and any other value is rejected. GOST3410PublicKeyAlgParameters treats digestParamSet as OPTIONAL on both read and write per RFC 9215, and PrivateKeyInfoFactory now passes attributes through for ECGOST3410 keys (bc-csharp github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/707\"\u003e#707\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe name-constraint host canonicalisation removed a single RFC 1034 root-label dot, the only empty label a name may legally carry, but nothing refused the ones that are not legal: a dNSName, rfc822Name host or uniformResourceIdentifier host such as \u0026quot;example.com..\u0026quot; kept a phantom empty label after the strip and so matched no constraint at all, escaping an excluded subtree naming the host it appears to carry. A tested name whose host carries an empty label - a second trailing dot, a doubled dot or a leading dot - is now refused outright wherever a constraint of that type is in force, rather than canonicalised into a name it is not: removing the extra dots would decide on the caller's behalf that \u0026quot;example.com..\u0026quot; names example.com, which is not how a consumer resolving or comparing the name reads it, and refusing fails closed in both directions where canonicalising would newly admit such a name under a permitted subtree. The single trailing dot is canonicalised as before, a bare \u0026quot;.\u0026quot; remains the root label rather than an empty one, and the guard is scoped to the host, so the doubled dot a quoted local part may legally carry is unaffected. Constraints are untouched - one may still begin with a dot, which is how this implementation spells \u0026quot;subdomains only\u0026quot; (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2436\"\u003e#2436\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSSLContext.createSSLEngine() from the BCJSSE provider in the 1.86 bctls jar failed with NoSuchMethodError on every JDK from 9 up, leaving engine-based users of the provider (Netty, Vert.x and the like) unable to open a connection. The jdk1.5 and jdk1.9 copies of the package-private SSLEngineUtil had declared create(ContextData) with different return types since 2019 - SSLEngine and ProvSSLEngine - and the root ProvSSLContextSpi, compiled against the first, is paired at runtime with the versions/9 copy on any modern JDK. Until 1.86 the java9 compile had hidden this by implicitly recompiling the whole base tree into META-INF/versions/9 (447 classes, ProvSSLContextSpi among them); the -implicit:none added in 1.86 to stop that duplication exposed the mismatch. The jdk1.9 copy now declares the same return type as the root one, a JDK 25 test creates engines against the built jar, and a new multiReleaseCheck Gradle task on every distributed jar reads the constant pool of each class in the jar and in the sibling BC jars it depends on and fails the build when a member reference does not resolve against the copy of its target that a JDK would pair it with, so the class of defect cannot ship again; the same check runs on arbitrary jars, a published release included, as multiReleaseCheckJar (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2448\"\u003e#2448\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe BCFKS key store derived its scrypt keys with the block size r in place of the parallelization parameter p, while writing the p the caller configured out to the store: BcFKSKeyStoreSpi passed getBlockSize() to SCrypt.generate for both arguments and never read the encoded parallelization parameter at all, so every store whose ScryptConfig gave a p other than its r encoded parameters that do not derive its own keys. The store was self-consistent - BC read back what BC wrote - but a conformant RFC 7914 reader computed a different key and so failed the integrity check and the store decryption, and BC could not open such a store written by anyone else. Derivation now follows RFC 7914. A store written by 1.86 or earlier is still read: the integrity check is retried under the old convention, and where a signature check leaves no MAC to settle it the store decryption is retried instead, in both cases reporting the failure of the encoded parameters rather than of the fallback. The write side is governed by org.bouncycastle.bcfks.scrypt_p_eq_r, default true, which writes p equal to r whatever the ScryptConfig asked for: the two conventions then agree, so a store written here is both RFC 7914 correct and readable by 1.86 and earlier. Clearing the property honours the configured p, which those releases cannot read unless p already equals r; the default is intended to become false in a later release, once enough of the installed base is writing parameters that describe themselves. Loading with a BCFKSLoadStoreParameter carrying a ScryptConfig accepts an encoded p equal to either the configured p or the block size, so a store round trips under the configuration that wrote it whichever way the property was set; every other parameter is compared as before. The parallelization parameter is now bounded alongside the cost parameter before the derivation, as the PKCS#8 and PKCS#12 scrypt paths already bound it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuilding an evidence record was cubic in the number of data objects: SortedHashList and SortedIndexedHashList held their hashes in a LinkedList and found each insertion point by walking it with get(index), so a single add() was quadratic in the position it inserted at and building a list of n hashes cubic, and both lists sit on the generation path - the reduced hash tree of ERSArchiveTimeStampGenerator, the Merkle tree of BinaryTreeRootCalculator.computeRootHash(), and the hash list of every ERSDataGroup. Each now collects its hashes and sorts them once, in toList(); the sort is stable and the old insertion placed a hash after the last one comparing equal to it, which is where a stable sort puts it, so the order of the leaves and every root hash are unchanged. getFirst() answers with a scan rather than a sort and toList() sorts a copy, so neither accessor disturbs what has been added. Generating a time-stamp request over 8,000 data objects goes from about 210 seconds to under a tenth of a second, and 100,000 objects, which the old code could not reach in any practical time, takes about 0.2 seconds (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2456\"\u003e#2456\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAn ERSDataGroup recomputed its hash on every request rather than taking it from the cache ERSCachingData exists to provide: the group overrode getHash(), which left the calculateHash() the cache calls unreachable - and wrong, as it copied the member hashes with a loop bounded by the size of the empty list it was copying into, so it would have digested nothing had anything reached it. The computation is back in calculateHash() and the override is gone, so a group's hash is computed once per digest algorithm and previous-chain hash, as every other ERSData's is. The value itself is unchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eERSArchiveTimeStampGenerator rebuilt its reduced hash tree from the data objects on every call, so the usual generateTimeStampRequest() followed by generateArchiveTimeStamp() or generateArchiveTimeStamps() built it twice. The leaves are now built once and dropped when data or a previous chain is added. A Set of the data groups it had been given, which nothing ever read, has gone with it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGrain-128AEAD returned corrupted plaintext from a decryption driven in chunks. The stream cipher data operator splits a processBytes() call that spans the buffered authentication tag into two output segments, the bytes released from the tag buffer and then the bytes taken straight from the caller's input, and wrote the second segment at the caller's output offset instead of after the first, so the second segment overwrote the head of the first and the tail of the reported output was never written at all. The call still returned the full byte count, and because the engine's state update depends on the input and the keystream rather than on where the output lands, the tag still verified: the wrong plaintext came back with no error raised. Any chunk after the first that carried more than the 8 byte tag length was affected. Grain-128AEAD is the only engine that uses this operator, and one shot decryption, the encryption path and every other AEAD engine were unaffected. The second segment is now written at the advanced offset, matching the equivalent step of the general decryption path (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2447\"\u003e#2447\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe AEAD stream cipher data operator, which Grain-128AEAD alone uses, wrote its output without first checking that the caller's buffer was long enough, so a short output buffer surfaced as an ArrayIndexOutOfBoundsException from inside the engine rather than as the OutputLengthException the general path reports for every other AEAD engine. Both directions of processBytes(), and processByte(), now check before anything is written or buffered, and only when the call releases output, as the general path does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 9709 content-encryption AlgorithmIdentifier, which carries the real algorithm inside the parameters of an outer id-alg-cek-hkdf-sha256, was unwrapped at only one of the points where a CMS recipient makes a decision about it. Key-size validation was corrected for plain key transport in 1.86, but the same call in the KEK, RSA-KTS and KEM recipients, and in the key-transport recipient's own ORI-KEM branch, still compared the recovered key against the outer identifier, which registers no key size, so setKeySizeValidation(true) silently checked nothing there; the setAllowedContentAlgorithms allow-list and the setMinimumTagSize floor were applied to the outer identifier on every recipient family, including the one already corrected, so neither constrained an RFC 9709 message. The unwrap now happens once for the key-size check and once for the two policy checks, and every recipient polices and validates the content-encryption algorithm the message actually carries. A recipient with no allow-list, no tag floor and no key-size validation configured behaves exactly as before; a caller who listed id-alg-cek-hkdf-sha256 in an allow-list in order to admit RFC 9709 messages must now list the content-encryption algorithms themselves (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2446\"\u003e#2446\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA CMS message whose EncryptedContentInfo named the RFC 9709 key derivation but carried no readable content-encryption AlgorithmIdentifier in its parameters was reported as a NullPointerException, or as an IllegalArgumentException from the ASN.1 decoder, out of methods declared to throw CMSException, RecipientInformation.getContent() among them. The four places that resolve the wrapper - the CEK derivation, the content cipher selection, the key-size check, and the recipient's allowed-algorithm and tag-size checks - now share one resolver, which reports an absent or unreadable inner algorithm as a CMSException.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe two YubiKey OpenPGP smart-card decryptor factories zeroized the user PIN array the KeyPassphraseProvider handed them rather than a copy of it, in a finally block after each private-key operation. Both providers BC ships return the application's own array by reference - DefaultKeyPassphraseProvider hands back the char[] it has cached for the key, and the provider inside OpenPGPApi.editKey returns its argument - so the first card operation destroyed the caller's PIN and the next private-key operation presented an all-zero PIN to the card, which the card refuses at the cost of a PIN retry. The PIN is now fetched as a clone the card operation owns - in OpenPGPSmartCard.requireUserPin, where the smart-card restructuring of this release put the fetch the two factories used to make - and KeyPassphraseProvider.getKeyPassword records that the array it returns stays owned by the provider (github PR \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2444\"\u003e#2444\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CRMF PKIPublicationInfo structure accepted, and could be built with, publication information RFC 4211 sec. 6.3 forbids: pubInfos MUST NOT be present if the action is dontPublish, and the field is SEQUENCE SIZE (1..MAX), so a present one is never empty. Both contradictions are now rejected with an IllegalArgumentException, on parsing and on construction from an array of SinglePubInfo. An absent pubInfos with the pleasePublish action, which is how the RFC spells \u0026quot;don't care\u0026quot;, is unaffected, and no constructor in the library could produce either rejected form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CMS RFC 8418 key agreement schemes (dhSinglePass-stdDH-hkdf-sha256/384/512, used with X25519 and X448) derived the key-encryption key with the user keying material in the entityUInfo of the ECC-CMS-SharedInfo but never as the HKDF salt, where RFC 8418 sec. 2.2 requires both - its recipe is salt = ukm, PRK = HKDF-Extract(salt, K), KEK = HKDF-Expand(PRK, DER(ECC-CMS-SharedInfo), SizeInOctets(KEK)). A message carrying a ukm therefore did not interoperate with a conforming implementation in either direction. The ukm is now passed as the salt as well, on both the generating and the receiving side, for those three schemes. A message with a ukm written by 1.86, the only release with RFC 8418 support, is not readable by this release and vice versa; messages without a ukm, and the X9.63-KDF key agreement schemes, are unaffected. The round-trip test now covers both the ukm and no-ukm cases for all six curve and scheme combinations, and checks the key-encryption key against the RFC's own recipe rather than only against BC itself (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2454\"\u003e#2454\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA JKS store shorter than the SHA-1 checksum it ends with threw an unchecked ArrayIndexOutOfBoundsException out of KeyStore.load, which declares IOException for a store it cannot read: JKSKeyStoreSpi.validateStream subtracted the digest size from the raw store length without checking it, so the digest update clamped its negative length to zero and the System.arraycopy that lifted the stored checksum out failed on a negative source index. The length is now checked against the checksum plus the 12-byte header before the checksum position is used, and a store too short to carry either is reported as an EOFException. The JKS store is reached through the compatibility probe in AdaptingKeyStoreSpi, so any key store type that probes for it was exposed, and the legacy jdk1.1 and jdk1.4 provider copies carry the same fix (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2451\"\u003e#2451\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA custom Argon2BytesGenerator.BlockPool was left to zeroise the blocks it recycled itself, and had no way to know how many blocks to hold: the generator returned each block to the pool with the password-derived data still in it, so only the FixedBlockPool BC ships cleared them, and sizing any other pool meant replicating the internal memory alignment and the block count of the fill step. The generator now clears every block before it goes back, so a pool neither has to clear nor can observe that data, and Argon2BytesGenerator.getBlockCount(memory, lanes) gives the number of blocks a run takes - which the default pool now uses, so it no longer discards and reallocates the four blocks of the fill step on every call. FixedBlockPool drops the two clears it no longer needs, leaving one zeroisation per block per use rather than two, and a generateBytes() that fails part way through now returns and clears the blocks it took, along with its own working buffer, rather than leaving both to the garbage collector (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2452\"\u003e#2452\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe PKCS#12 key stores wrote the MAC key-derivation parameters of a file they had loaded into every file they wrote afterwards, under whatever password the caller stored with. For PKCS12-PBMAC1 that carried the loaded file's PBKDF2 salt, iteration count, key length and PRF, because the parameters were minted only when the store held none and were then assigned back, so the branch ran once per store object rather than once per write - which also meant one store reused a single PBKDF2 salt across every write, including writes under different passwords, with no file loaded at all. The classic store inherited the MAC salt length and digest algorithm the same way, so a file declaring a zero-length MAC salt was re-stored with one, and a file it had loaded under RFC 9579 handed on that file's PBKDF2 salt too, both stores reading PBMAC1. The values were also latched before the MAC was verified and were not cleared by the load(null, null) a caller must issue to recover, so a file that failed the check left them behind for the caller's own file. The PBKDF2 salt and the MAC salt are now generated for every write, the MAC salt at no fewer than 8 octets, nothing is latched until the file has verified, and an AlgorithmIdentifier supplied through a PKCS12StoreParameter is still written as it was given. A loaded file's PRF, key length, digest algorithm and MacData iteration count are still kept, the last as before; the PBKDF2 count is kept where it is at least the count being written with and raised to it otherwise, since the file being re-stored is not the one that count was chosen for - RFC 9579's own test vectors ask for 2048. That count is now org.bouncycastle.pkcs12.pbkdf2_it_count, default 65,536, the write-side counterpart for a PBMAC1 MAC of what org.bouncycastle.pkcs12.store_it_count is for the PBE. Reading is unaffected: a file's MAC is verified with the parameters it carries, whatever they are (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2450\"\u003e#2450\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCipher.SM9 took its data-encapsulation mode for decryption from the ciphertext rather than from the mode the Cipher was configured with. The GM/T 0080-2020 SM9Cipher structure names the mode in an enType field, but GM/T 0044.4 defines the authenticator as C3 = MAC(K2, C2), over the encapsulated message alone, so enType is not covered by it: re-encoding a ciphertext with the other enType leaves C1, C3 and C2 untouched and steers the recipient into the other mode. GM/T 0044.4 takes K1 and K2 from a single KDF output of klen = mlen + K2_len bits in stream mode and K1_len + K2_len bits in SM4 mode, where K1_len = 128, so when C2 is 16 bytes long the two modes make the identical KDF call and derive the same K1 and K2: a one-block SM4 ciphertext relabelled as stream mode passes the MAC check and the recipient returns K1 xor C2 - from which both the SM4 key K1 and the padded plaintext block follow, wherever that output is observable. CipherSpi now decrypts in the configured mode and rejects a ciphertext whose enType disagrees with it, so the mode is symmetric between encryption and decryption. That check compares two values a relabelling attacker can make agree, and so does not by itself protect a recipient whose Cipher is configured for stream mode - the relabelled one-block ciphertext then matches the configuration - so SM9Engine additionally refuses a 16-byte C2, the one C2 length at which the two modes collide, in both modes and both directions: on decryption, and on encryption a 16-byte message in stream mode and a message of fewer than 16 bytes, which pads to one block, in SM4 mode. Refusing the length on decryption protects the recipient that does so, but the message a relabelled ciphertext gives away is the SM4-mode sender's, who cannot tell whether the recipient's implementation refuses it, which is why the SM4 mode no longer produces one; messages of every other length are unchanged in both modes. A stream-mode ciphertext must accordingly be decrypted through a stream-mode Cipher (\u0026quot;SM9/XOR/NoPadding\u0026quot;) rather than the SM4-mode default that Cipher.getInstance(\u0026quot;SM9\u0026quot;) gives; a message of fewer than 16 bytes has to be sent in stream mode, and one of exactly 16 bytes - a 128-bit key, say - in SM4 mode; and a ciphertext made by an earlier version whose C2 is 16 bytes long is no longer decrypted, whichever mode wrote it - a one-block SM4-mode ciphertext, or a stream-mode one carrying a 16-byte message. The SM9 KEM is unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDecrypting an OpenPGP message in two steps - recovering the session key from a SKESK packet and then decrypting the SEIPD v1 body through PGPEncryptedDataList.extractSessionKeyEncryptedData() - stopped detecting a wrong passphrase. 1.86 suppressed the legacy CFB \u0026quot;quick check\u0026quot; on the two repeated prefix bytes for every session-key decryption, to close the Mister-Zuccherato oracle on the path a PKESK session key reaches, but the same class also carries password-derived session keys, where reporting the check is what identifies a wrong passphrase and lets the next passphrase or SKESK packet be tried. A SKESK v4 packet deriving the session key from the S2K output directly (no encrypted session key) yields a well formed session key for any passphrase, so a wrong one no longer failed at all: it surfaced as a parse or integrity failure further down the stream. BouncyCastle's own high-level API decrypts this way, so OpenPGPMessageProcessor took the first wrong passphrase offered for a success and never tried the remaining ones. A new PGPEncryptedDataList.extractSessionKeyEncryptedData(boolean) states whether the session key came from a password: true restores the check and with it the PGPDataValidationException on a wrong passphrase, the existing no-argument method goes on suppressing it, and the high-level API passes true on its passphrase paths alone, so a session key recovered from a public key operation is still never quick checked (github \u003ca href=\"https://redirect.github.com/bcgit/bc-java/issues/2459\"\u003e#2459\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBoth copies of PKIXCertPathReviewer (org.bouncycastle.pkix.jcajce and the legacy org.bouncycastle.x509) took the first date-valid CRL issued by the certificate's issuer as an answer about that certificate, applying neither of the RFC 5280 sec. 6.3.3 rules that decide whether a CRL covers it: the (b)(2)(i) match between a name in the CRL's issuing distribution point and a name in the certificate's distribution point, and the (d) intersection of the revocation reasons the two assert. Only the (b)(2)(ii) to (iv) onlyContains booleans were applied. A CA-signed, in-date CRL with no entries, scoped to another distribution point or to a partition of the revocation reasons, was therefore reported as proof of non-revocation - isValidCertPath() true with an empty error list for a certificate its own CA had revoked for key compromise, where CertPathValidator(\u0026quot;PKIX\u0026quot;) rejects the same chain against the same trust anchor - and it suppressed the distribution point fetch that would otherwise have retrieved the authoritative CRL. Where the reviewer makes the trust decision rather than serving as diagnostics beside a real validation this is a revocation bypass, and SignedMailValidator (bcmail) reaches it with the CRLs carried inside the signed message. Both copies now apply the (b)(2)(i) name match and require a CRL to cover every revocation reason before it can settle the certificate's status, through the public PKIXCRLValidator helpers the validation engine already uses, and keep looking when a candidate does not qualify - falling back, as before, to the distribution point fetch and then to the existing \u0026quot;no valid CRL found\u0026quot; error. A CRL carrying no issuing distribution point, one naming the certificate's own distribution point, and one naming the certificate issuer (the distribution point the engine falls back to) are all still accepted.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRFC3280CertPathUtilities.checkCRL threw java.lang.NullPointerException rather than a CertPathValidatorException when every candidate CRL for a distribution point was skipped instead of rejected, which is what happens when the reasons a CRL covers add nothing to those already checked - the RFC 5280 sec. 6.3.3 (d) case - since the exception it rethrows is only ever recorded in a catch block. Validation failed closed either way, but outside the declared contract of CertPathValidator.validate(); a run with nothing recorded now reports \u0026quot;No valid CRL found.\u0026quot;. All four copies are corrected: pkix, prov, and the prov jdk1.3 and jdk1.4 overlays.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTupleHash prefixed an element of 2^28 bytes or more with a length computed in int arithmetic: org.bouncycastle.crypto.digests.XofUtils built the encode_string prefix of NIST SP 800-185 sec. 2.3.3 as left_encode(len * 8) with len an int, so the bit length wrapped before it reached the long parameter it was passed to. A single 256 MiB update wrapped it negative, and left_encode sizes its output by shifting its argument right eight bits at a time, which never reaches zero from a negative value, so the call did not return; at 512 MiB the length wrapped to zero and the element carried the prefix of an empty one, letting two different tuples absorb the same byte string - the ambiguity the tuple encoding of sec. 5.3 exists to prevent. The multiply is now widened, as the other left_encode and right_encode call sites in CSHAKEDigest, KMAC, TupleHash and ParallelHash already were, and left_encode and right_encode refuse a negative length rather than spinning on one, so a negative output length handed to the three-argument doFinal of TupleHash, ParallelHash or KMAC reports IllegalArgumentException instead of not returning. An element below 2^28 bytes is unaffected, the two arithmetics agreeing exactly there.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eKeyAgreement.init() reported an initialisation it could not carry out as an unchecked exception for the unified and VKO agreements, where the JCA declares InvalidKeyException and InvalidAlgorithmParameterException. The ECCDHU and X25519U/X448U services took a plain UserKeyingMaterialSpec, or no spec at all, and carried it into the agreement, throwing ClassCastException from the cast that follows; the DHU and DH MQV services accepted the initialisation and then threw NullPointerException from doPhase, where the absent spec is read back; and the ECGOST3410 and ECGOST3410-2012 VKO services put a null where the UKM belongs, although RFC 7836 sec. 4.3 makes the UKM optional with the value 1. Each of them now reports a parameter error as ECMQV already did, and the VKO agreements apply the RFC 7836 default, so an agreement initialised without a UserKeyingMaterialSpec derives the key a UKM of 1 gives rather than failing. The user keying material itself was not being dropped anywhere: every key agreement service carrying a key derivation function was checked for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RFC 5990 RSA-KTS CMS recipients (JceKTSKeyTransEnvelopedRecipient and JceKTSKeyTransAuthenticatedRecipient, through JceKTSKeyUnwrapper) took the keyLength carried in the message's RsaKemParameters as the number of octets for the key encapsulation mechanism to derive, and only compared it with the key-wrapping algorithm once the derivation had been done. EnvelopedData is not integrity protected and the recipient reaches this before anything about the message has been verified, so the declared length decided how much the key derivation function was asked to produce, and a large enough one also overflowed the bit count it was converted into. RFC 5990 sec. 4 fixes the length of the derived key as the key length of the data encapsulation mechanism's key-wrapping algorithm, so the recipient now derives that length and rejects a keyLength which disagrees with it before deriving anything, reporting it as the CMSException the API declares - the check the RFC 9629 KEMRecipientInfo path already made against its kekLength.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe read-side well-formedness checks on UTCTime and GeneralizedTime bounded the day at 01-31 without regard to the month, so the 30th of February, the 31st of April and the 29th of February in a common year were all accepted and the lenient calendar behind getDate() rolled each into the following month: \u0026quot;180230101423Z\u0026quot; was read back as the 2nd of March 2018, an instant some other encoding already denotes, and a certificate validity or CRL update time could name a day that does not exist. The day is now checked against the length of the month, February following the Gregorian leap rule and a UTCTime's two-digit year resolved through the RFC 5280 sec. 4.1.2.5.1 window, so such a value is rejected on read as OpenSSL rejects it. The JDK's own CertificateFactory accepts and rolls these, so org.bouncycastle.asn1.allow_non_der_time - already the switch for the write-side DER restrictions - also admits the impossible day for a caller that has to read what it accepts; the impossible month and the zero day stay rejected either way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen the provider's CertPathBuilder validated the certification path of an indirect CRL's signer, it did so with the builder defaults rather than the caller's PKIXBuilderParameters: the maximum path length was always 5 and the excluded certificates set was always empty, so a signer the caller had excluded could still vouch for a CRL, a caller's tighter path length limit was not applied to the signer's path, and a caller's looser one (or no limit at all) could leave a longer but otherwise valid signer path rejected. Both settings now carry through to the CRL signer's path build.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe provider's CertPathBuilder applied PKIXBuilderParameters.setMaxPathLength() one certificate too leniently, building a path with one intermediate certificate more than the limit (so a limit of 0 admitted a target and one intermediate, and the default of 5 admitted six), and counted self-issued certificates against it. The limit now counts the non-self-issued intermediate certificates, as PKIXBuilderParameters defines it, so a path which only built because of the extra certificate, one with six intermediates under the default limit for example, now needs the limit raised.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSTU 7624 (Kalyna) GCM mode and MAC, KGCMBlockCipher and KGMac, accepted an operation with both the associated text and the data empty, which DSTU 7624:2014 sec. 12.1 excludes. Its tag is then E_K(0), which is the GHASH key itself: Kalyna GCM does not mask the tag with a nonce-derived block as NIST GCM does, so a caller who authenticated an empty message disclosed the authentication key, and anyone holding it can construct a different message with the same tag as any other message seen under that key. The decrypting side accepted E_K(0) as the tag of an empty message in the same way. Both directions now reject the case, encryption and KGMac with a DataLengthException and decryption with an InvalidCipherTextException; either one of the associated text and the data may still be empty. The Mac.DSTU7624GMAC services were affected through KGMac.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/bcgit/bc-java/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-compose` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-svg` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-svg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-svg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.coil-kt.coil3:coil-svg` from 3.5.0 to 3.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt.coil3:coil-svg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.6.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#363---september-18-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#362---september-4-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#361---september-1-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e3.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#360---august-26-2026\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt.coil3:coil-svg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.6.3] - September 18, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix builds using Android Gradle Plugin 9.4.0 and R8 failing due to invalid characters in Kotlin module name metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.2] - September 4, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eDeDupeConcurrentRequestStrategy\u003c/code\u003e hanging requests for a key if a waiting request is cancelled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM linkage error when using Compose Multiplatform 1.13. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.1] - September 1, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix JS builds failing when ES modules are enabled. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.6.0] - August 26, 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add support for loading \u003ccode\u003eblob:\u003c/code\u003e URLs (object URLs) on JS/WASM. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3504\"\u003e#3504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Add \u003ccode\u003eImageRequest.Builder.allowPartialImage\u003c/code\u003e and \u003ccode\u003eImageLoader.Builder.allowPartialImage\u003c/code\u003e to configure whether \u003ccode\u003eStaticImageDecoder\u003c/code\u003e on Android accepts partial images. This is enabled by default, which is the same behavior in previous Coil releases. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAsyncImage\u003c/code\u003e crashing when measured with inverted constraints. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3470\"\u003e#3470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Compose \u003ccode\u003efilterQuality\u003c/code\u003e not being applied to drawable-backed images, including GIFs. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a JS/WASM image decoder memory leak. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix images failing to render with \u003ccode\u003eGenericViewTarget\u003c/code\u003e in R8 9.0+ optimized builds. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3518\"\u003e#3518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eRuntime.maxMemory()\u003c/code\u003e to determine the maximum memory cache size on JVM instead of assuming 512 MB of available memory. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3458\"\u003e#3458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBundle ProGuard rules with the non-Android JVM artifact. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/3476\"\u003e#3476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the Android compile SDK to 37.\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.4.10.\u003c/li\u003e\n\u003cli\u003eUpdate Compose to 1.12.0.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.18.1.\u003c/li\u003e\n\u003cli\u003eUpdate Skiko to 0.150.1.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ekotlinx-io-okio\u003c/code\u003e to 0.9.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/29cae3b4212ebea927b15da5bf2ad79fbb6f5c99\"\u003e\u003ccode\u003e29cae3b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/0f371ca498af0e62c84789c1dcc0ffed67aad0c3\"\u003e\u003ccode\u003e0f371ca\u003c/code\u003e\u003c/a\u003e Remove invalid characters from Kotlin module name metadata. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3587\"\u003e#3587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/779ff1bf27afa9a208faf12e239c8fd78246d057\"\u003e\u003ccode\u003e779ff1b\u003c/code\u003e\u003c/a\u003e Prepare version 3.6.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/b6818d3fc2f950964483402b0cf42f817e21f268\"\u003e\u003ccode\u003eb6818d3\u003c/code\u003e\u003c/a\u003e Fix deduplicated request cancellation handling (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/79ad5764f45d2b56662c23d3dc42c31b4fec7e77\"\u003e\u003ccode\u003e79ad576\u003c/code\u003e\u003c/a\u003e Fix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4b14a54836ec4ed2097d3cc8100a7ae8c86fe6d2\"\u003e\u003ccode\u003e4b14a54\u003c/code\u003e\u003c/a\u003e Use InternalSkikoApi awaitSkiko directly in web worker decoding (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3568\"\u003e#3568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/37e267bfeaa299da7d50ef45fc413632c4353ca7\"\u003e\u003ccode\u003e37e267b\u003c/code\u003e\u003c/a\u003e Migrate to AGP's new DSL. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3567\"\u003e#3567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/4f56bce4e296f0fe736d721bd6f1ca974e1a895d\"\u003e\u003ccode\u003e4f56bce\u003c/code\u003e\u003c/a\u003e Replace use of deprecated Gradle API. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/64f486b0f0ac46a8d63df9c7d6c5964944070a96\"\u003e\u003ccode\u003e64f486b\u003c/code\u003e\u003c/a\u003e Update lint to v32.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3564\"\u003e#3564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coil-kt/coil/commit/827faea37e478267a7d10ba488a38869f5c7130a\"\u003e\u003ccode\u003e827faea\u003c/code\u003e\u003c/a\u003e Update dependency com.android.tools.build:gradle to v9.4.0 (\u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coil-kt/coil/compare/3.5.0...3.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.kotest:kotest-assertions-core-jvm` from 6.2.4 to 6.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kotest/kotest/releases\"\u003eio.kotest:kotest-assertions-core-jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.2.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eskill version update PR upon release by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6213\"\u003ekotest/kotest#6213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse a singleton strategy for getConfigurationFactory of Kotest legacy producers + ensure the same config is reused for gradle producers by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6216\"\u003ekotest/kotest#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ewithEdtSafeAnalysis\u003c/code\u003e to improve safe analysis for spec and style… by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6215\"\u003ekotest/kotest#6215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake the \u003ccode\u003eshouldBeSingleton\u003c/code\u003e block overloads infix by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6223\"\u003ekotest/kotest#6223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound the short/byte/uShort/uByte shrinkers by the generator range by \u003ca href=\"https://github.com/sksamuel\"\u003e\u003ccode\u003e@​sksamuel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6224\"\u003ekotest/kotest#6224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlex/make default extension registry thread safe by \u003ca href=\"https://github.com/AlexCue987\"\u003e\u003ccode\u003e@​AlexCue987\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6199\"\u003ekotest/kotest#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd back jsoup assertions by \u003ca href=\"https://github.com/alfonsoristorato\"\u003e\u003ccode\u003e@​alfonsoristorato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6226\"\u003ekotest/kotest#6226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Android StackWalker compatibility by \u003ca href=\"https://github.com/cfcromn\"\u003e\u003ccode\u003e@​cfcromn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/kotest/kotest/pull/6222\"\u003ekotest/kotest#6222\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kotest/kotest/compare/6.2.4...v6.2.5\"\u003ehttps://github.com/kotest/kotest/compare/6.2.4...v6.2.5\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/41df99d60c7093cfe4f48638fe2bf4b2d7f8b1c5\"\u003e\u003ccode\u003e41df99d\u003c/code\u003e\u003c/a\u003e Fix Android StackWalker compatibility (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6222\"\u003e#6222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/8655ca73f2682055af0db3b81cbede05d10f050f\"\u003e\u003ccode\u003e8655ca7\u003c/code\u003e\u003c/a\u003e add back jsoup assertions (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6226\"\u003e#6226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/e2271eb187aec4ce4a581fea777825c68a9d60f1\"\u003e\u003ccode\u003ee2271eb\u003c/code\u003e\u003c/a\u003e Alex/make default extension registry thread safe (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6199\"\u003e#6199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/fdca60984121899038daac2f7b5537ce46b8630c\"\u003e\u003ccode\u003efdca609\u003c/code\u003e\u003c/a\u003e Bound the short/byte/uShort/uByte shrinkers by the generator range (\u003ca href=\"https://redirect.github.com/kotest/kotest/issues/6224\"\u003e#6224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kotest/kotest/commit/56301a629b268e6960d6a9cda05a3024badb8d7a\"\u003e\u003ccode\u003e56301a6\u003c/code\u003e\u003c/a\u003e Make the \u003ccode\u003eshouldBeSingleton\u003c/code\u003e block o...\n\n_Description has been truncated_","html_url":"https://github.com/devops2626/openclaw/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/devops2626%2Fopenclaw/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"}},{"old_version":"8.5.2","new_version":"8.13.2","update_type":"minor","path":null,"pr_created_at":"2026-09-28T07:13:57.000Z","version_change":"8.5.2 → 8.13.2","issue":{"uuid":"5610780822","node_id":"PR_kwDOS341Ks8AAAABFckLtQ","number":266,"state":"closed","title":"build(deps): Bump the gradle-minor-patch group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T00:20:31.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T07:13:57.000Z","updated_at":"2026-10-01T00:20:39.000Z","time_to_close":234394,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"gradle-minor-patch","update_count":4,"packages":[{"name":"com.android.application","old_version":"8.5.2","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.20","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.9.1","new_version":"2.12.0"},{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 4 updates in the / directory: com.android.application, [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin), androidx.work:work-runtime-ktx and [gradle-wrapper](https://github.com/gradle/gradle).\n\nUpdates `com.android.application` from 8.5.2 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.0.20 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.work:work-runtime-ktx` from 2.9.1 to 2.12.0\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/j-raghavan/inkread/pull/266","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-raghavan%2Finkread/issues/266","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/266/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":null,"pr_created_at":"2026-09-28T04:35:50.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5609386130","node_id":"PR_kwDORqy2Rc8AAAABFbdCEg","number":983,"state":"closed","title":"ci: bump the gradle-minor-patch group across 1 directory with 34 updates","user":"dependabot[bot]","labels":["deps","kmp","size/size:s","dependabot"],"assignees":["tajemniktv"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-02T04:15:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T04:35:50.000Z","updated_at":"2026-10-02T04:15:26.000Z","time_to_close":344374,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"ci: bump","group_name":"gradle-minor-patch","update_count":34,"packages":[{"name":"gradle-wrapper","old_version":"9.7.1","new_version":"9.8.0","repository_url":"https://github.com/gradle/gradle"},{"name":"org.jetbrains.kotlin:kotlin-test","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test-junit","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test-junit","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"androidx.core:core-ktx","old_version":"1.19.0","new_version":"1.19.1"},{"name":"org.jetbrains.compose.ui:ui-tooling","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.runtime:runtime","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.foundation:foundation","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.components:components-resources","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.runtime:runtime","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.foundation:foundation","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.material3:material3","old_version":"1.12.0-alpha03","new_version":"1.13.0-alpha01","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.components:components-resources","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.compose.ui:ui-tooling-preview","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"ch.qos.logback:logback-classic","old_version":"1.6.3","new_version":"1.6.4","repository_url":"https://github.com/qos-ch/logback"},{"name":"uk.uuid.slf4j:slf4j-android","old_version":"2.0.17-0","new_version":"2.0.19-0","repository_url":"https://github.com/nomis/slf4j-android"},{"name":"io.ktor:ktor-server-core-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-netty-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-auth","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-core","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-cio","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-darwin","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor.plugin","old_version":"3.5.2","new_version":"3.6.0"},{"name":"io.ktor:ktor-server-netty-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-auth","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host-jvm","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-core","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-cio","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-darwin","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.5.2","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"com.github.skydoves:compose-stability-runtime","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"},{"name":"com.github.skydoves.compose.stability.analyzer","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.kotlin.multiplatform.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"com.android.kotlin.multiplatform.library","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.compose","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.jvm","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"io.ktor.plugin","old_version":"3.5.2","new_version":"3.6.0"},{"name":"org.jetbrains.kotlin.multiplatform","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.github.skydoves.compose.stability.analyzer","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/skydoves/compose-stability-analyzer"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 34 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.7.1` | `9.8.0` |\n| [org.jetbrains.kotlin:kotlin-test](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin:kotlin-test-junit](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin:kotlin-test-junit](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| androidx.core:core-ktx | `1.19.0` | `1.19.1` |\n| [org.jetbrains.compose.ui:ui-tooling](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.runtime:runtime](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.foundation:foundation](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.components:components-resources](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.runtime:runtime](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.foundation:foundation](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.material3:material3](https://github.com/JetBrains/compose-multiplatform) | `1.12.0-alpha03` | `1.13.0-alpha01` |\n| [org.jetbrains.compose.ui:ui](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.components:components-resources](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.compose.ui:ui-tooling-preview](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.6.3` | `1.6.4` |\n| [uk.uuid.slf4j:slf4j-android](https://github.com/nomis/slf4j-android) | `2.0.17-0` | `2.0.19-0` |\n| [io.ktor:ktor-server-core-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-auth](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-test-host-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-core](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-cio](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-darwin](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| io.ktor.plugin | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-auth](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-server-test-host-jvm](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-core](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-cio](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-darwin](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.5.2` | `3.6.0` |\n| [com.github.skydoves:compose-stability-runtime](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n| [com.github.skydoves.compose.stability.analyzer](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| com.android.kotlin.multiplatform.library | `9.4.0` | `9.4.1` |\n| com.android.kotlin.multiplatform.library | `9.4.0` | `9.4.1` |\n| [org.jetbrains.compose](https://github.com/JetBrains/compose-multiplatform) | `1.12.0` | `1.12.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| io.ktor.plugin | `3.5.2` | `3.6.0` |\n| [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.github.skydoves.compose.stability.analyzer](https://github.com/skydoves/compose-stability-analyzer) | `0.13.0` | `0.15.0` |\n\n\nUpdates `gradle-wrapper` from 9.7.1 to 9.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.8.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 27 support\u003c/li\u003e\n\u003cli\u003eMaven mirror settings reuse\u003c/li\u003e\n\u003cli\u003eLinked problem locations in build output\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.8.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/Hashim1999164\"\u003eHashim Khan\u003c/a\u003e,\n\u003ca href=\"https://github.com/jkrannich\"\u003eJulian Krannich\u003c/a\u003e,\n\u003ca href=\"https://github.com/youdie006\"\u003eKBS\u003c/a\u003e,\n\u003ca href=\"https://github.com/itsCodeTide\"\u003eLabh R Jethe\u003c/a\u003e,\n\u003ca href=\"https://github.com/doddi\"\u003eMark Dodgson\u003c/a\u003e,\n\u003ca href=\"https://github.com/kroune\"\u003eMaxim\u003c/a\u003e,\n\u003ca href=\"https://github.com/Develop-KIM\"\u003emonkey\u003c/a\u003e,\n\u003ca href=\"https://github.com/nataphon-ktsystems\"\u003enataphon-ktsystems\u003c/a\u003e,\n\u003ca href=\"https://github.com/paulk-asert\"\u003ePaul King\u003c/a\u003e,\n\u003ca href=\"https://github.com/qiu-tiandev\"\u003eQiu Tian\u003c/a\u003e,\n\u003ca href=\"https://github.com/sandeshgorde\"\u003erg_sandesh\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/seanxuu\"\u003eSean\u003c/a\u003e,\n\u003ca href=\"https://github.com/Goooler\"\u003eZongle Wang\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.8.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.8.0 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.8.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.8.0 RC3\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.8.0 RC3.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a927be5e08efe79e0b87ada06c762dde6bb9f8b8\"\u003e\u003ccode\u003ea927be5\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39273\"\u003e#39273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/eaee500e6a2fff583b9d2b81039fc15ad887462d\"\u003e\u003ccode\u003eeaee500\u003c/code\u003e\u003c/a\u003e Add the Develocity plugin back to the Android smoke tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/189b672308d1e997fae46412673d04683d76b35a\"\u003e\u003ccode\u003e189b672\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39257\"\u003e#39257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/36b181477307fc6db0e16582f11daaeb7e34fc8e\"\u003e\u003ccode\u003e36b1814\u003c/code\u003e\u003c/a\u003e Add back mavenCentral to doc snippets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/2740c2d9cd0a9ab42813be77241fdc264217b2ba\"\u003e\u003ccode\u003e2740c2d\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39264\"\u003e#39264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/209938316e373c847aa1a251ec14eeded3da468e\"\u003e\u003ccode\u003e2099383\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.8.0-rc-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/c80202fbd1cc457d7f45f31fc488391c4a2e7984\"\u003e\u003ccode\u003ec80202f\u003c/code\u003e\u003c/a\u003e Route everything still hitting Maven Central through the mirror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3f6a53434a2cf4f33486af2ae5eabd1fc830352d\"\u003e\u003ccode\u003e3f6a534\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39253\"\u003e#39253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/9efc9eddac43f0795194e407c0ab2177a1d23cf9\"\u003e\u003ccode\u003e9efc9ed\u003c/code\u003e\u003c/a\u003e Fix when a best practice was introduced\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/459e1433c60e4a604dd39ffe2c49e3606f70acda\"\u003e\u003ccode\u003e459e143\u003c/code\u003e\u003c/a\u003e Route integration test dependencies through the repository mirror (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/39239\"\u003e#39239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.7.1...v9.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-test` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-test-junit` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-test-junit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-test-junit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.jvm` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.multiplatform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca ...\n\n_Description has been truncated_","html_url":"https://github.com/tajemniktv/TajsOS/pull/983","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tajemniktv%2FTajsOS/issues/983","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/983/packages"}},{"old_version":"9.2.1","new_version":"9.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-26T12:26:09.000Z","version_change":"9.2.1 → 9.4.1","issue":{"uuid":"5593958322","node_id":"PR_kwDOTVtvC88AAAABFPu04A","number":31,"state":"closed","title":"build(deps): bump the maven group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T12:14:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-26T12:26:09.000Z","updated_at":"2026-10-03T12:14:26.000Z","time_to_close":604097,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"maven","update_count":13,"packages":[{"name":"gradle-wrapper","old_version":"9.6.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.09.00"},{"name":"org.commonmark:commonmark","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-tables","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-gfm-strikethrough","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-autolink","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"org.commonmark:commonmark-ext-task-list-items","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/commonmark/commonmark-java"},{"name":"com.squareup.okhttp3:okhttp-bom","old_version":"5.4.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"com.materialkolor:material-kolor","old_version":"5.0.0-alpha07","new_version":"5.0.1","repository_url":"https://github.com/jordond/materialkolor"},{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.0","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the maven group with 13 updates in the /manager directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.7.1` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.09.00` |\n| [org.commonmark:commonmark](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-tables](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-gfm-strikethrough](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-autolink](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [org.commonmark:commonmark-ext-task-list-items](https://github.com/commonmark/commonmark-java) | `0.29.0` | `0.30.0` |\n| [com.squareup.okhttp3:okhttp-bom](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |\n| [com.materialkolor:material-kolor](https://github.com/jordond/materialkolor) | `5.0.0-alpha07` | `5.0.1` |\n| com.android.application | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |\n\n\nUpdates `gradle-wrapper` from 9.6.1 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.6.1...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.09.00\n\nUpdates `org.commonmark:commonmark` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-tables` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-tables's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-tables's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-autolink` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-autolink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-autolink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-task-list-items` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-task-list-items's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-task-list-items's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-tables` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-tables's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-tables's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/89d1bd3fa1524e8217ed61db5e8116c82434470f\"\u003e\u003ccode\u003e89d1bd3\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing with lots of \u003ccode\u003e\u0026lt;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.29.0...commonmark-parent-0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/releases\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecommonmark-java 0.30.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/HEAD/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md\"\u003eorg.commonmark:commonmark-ext-gfm-strikethrough's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.30.0] - 2026-08-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew option \u003ccode\u003elineSeparator\u003c/code\u003e for \u003ccode\u003eMarkdownRenderer.Builder\u003c/code\u003e to change the default line\nseparator from \u003ccode\u003e\\n\u003c/code\u003e (e.g. to \u003ccode\u003e\\r\\n\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Support extracting the raw YAML content so that you can\ndo the YAML parsing using a library (instead of the limited built-in parsing) (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTables extension: Limit max number of parsed table cells by default (1 million cells),\nsee option \u003ccode\u003emaxCells\u003c/code\u003e in \u003ccode\u003eTablesExtension.Builder\u003c/code\u003e. Parsing will throw an error if the\nlimit would be exceeded, to protect against malicious input.\u003c/li\u003e\n\u003cli\u003eThe default for \u003ccode\u003emaxOpenBlockParsers\u003c/code\u003e for \u003ccode\u003eParser.Builder\u003c/code\u003e is now 100; configure the\noption to remove the limit.\u003c/li\u003e\n\u003cli\u003eLimit how deeply inline nodes may nest by default (100), see option \u003ccode\u003emaxInlineNesting\u003c/code\u003e in\n\u003ccode\u003eParser.Builder\u003c/code\u003e; configure the option to remove the limit. This covers emphasis-like\ndelimiters (e.g. \u003ccode\u003e*\u003c/code\u003e or the ins extension's \u003ccode\u003e+\u003c/code\u003e) as well as images, which can otherwise\nnest arbitrarily deep for a small amount of input. Anything over the limit is treated as\nplain text instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix quadratic runtime on various pathological inputs (where inline syntax to start a\nnode is used repeatedly but never finished):\n\u003cul\u003e\n\u003cli\u003eInline HTML like \u003ccode\u003e\u0026quot;x \u0026lt;!--\u0026quot;.repeat(100_000)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/commonmark/commonmark-java/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutolink starts like \u003ccode\u003e\u0026quot;\u0026lt;\u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEmphasis like \u003ccode\u003e\u0026quot;a**b\u0026quot; + \u0026quot;c* \u0026quot;.repeat(100_000)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBackticks runs of different lengths\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow errors when parsing pathological inputs with repeated syntax:\n\u003cul\u003e\n\u003cli\u003eHTML block attributes\u003c/li\u003e\n\u003cli\u003eAutolink email addresses\u003c/li\u003e\n\u003cli\u003eDeeply nested emphasis\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix stack overflow error when rendering/visiting deeply nested inline nodes, by capping nesting\ndepth during parsing (see \u003ccode\u003emaxInlineNesting\u003c/code\u003e above). This can happen with emphasis, e.g.\n\u003ccode\u003e\u0026quot;*\u0026quot;.repeat(n) + \u0026quot;x\u0026quot; + \u0026quot;*\u0026quot;.repeat(n)\u003c/code\u003e or \u003ccode\u003e\u0026quot;*a \u0026quot;.repeat(n) + \u0026quot; b*\u0026quot;.repeat(n)\u003c/code\u003e, as well as with\nimages, e.g. \u003ccode\u003e\u0026quot;![\u0026quot;.repeat(https://github.com/commonmark/commonmark-java/blob/main/n) + \u0026quot;x\u0026quot; + \u0026quot;](u)\u0026quot;.repeat(n)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYAML front matter extension: Fix inefficient string concatenation for literal-block values (\u003ccode\u003e|\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/64037cf982f2b12a4a2fa1c5a75c6d3f4ab979bf\"\u003e\u003ccode\u003e64037cf\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release commonmark-parent-0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/bd3e06669fd168874721267e7e5f5bd1d3433466\"\u003e\u003ccode\u003ebd3e066\u003c/code\u003e\u003c/a\u003e Fix Javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/4aaf754cc90b4a5a62647a8fc621185c934f8bbf\"\u003e\u003ccode\u003e4aaf754\u003c/code\u003e\u003c/a\u003e mvn versions:set -DnewVersion=0.30.0-SNAPSHOT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/42b4fb7adfe288ef13e9e27ab20aff7e91b0ab9d\"\u003e\u003ccode\u003e42b4fb7\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for version 0.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/b76e09d7a8362abb5f04e1d6b91dbd6da279a6fc\"\u003e\u003ccode\u003eb76e09d\u003c/code\u003e\u003c/a\u003e Limit how deep inline nodes may nest by default (100)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/49f65cb5cbec93cff713179990307145198e7061\"\u003e\u003ccode\u003e49f65cb\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing deeply nested emphasis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/610f84b83e68c381e8f784ae4d044c80e1948b67\"\u003e\u003ccode\u003e610f84b\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological autolink email addresses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/9f1d73897a56cbd74c39347af351a473e70297e1\"\u003e\u003ccode\u003e9f1d738\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError when parsing pathological HTML block attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/commit/e13297e849995fdd582a85841067bff1d9c35ee5\"\u003e\u003ccode\u003ee13297e\u003c/code\u003e\u003c/a\u003e Fix quadratic runtime when parsing pathological backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commonmark/commonmark-java/comm...\n\n_Description has been truncated_","html_url":"https://github.com/yoyicue/xpad2-ksu-lateload/pull/31","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyicue%2Fxpad2-ksu-lateload/issues/31","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/31/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":null,"pr_created_at":"2026-09-24T07:16:35.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5564666301","node_id":"PR_kwDOUKe7G88AAAABE4ru4w","number":22,"state":"closed","title":"build(deps): bump the gradle group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T07:22:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-24T07:16:35.000Z","updated_at":"2026-10-01T07:23:00.000Z","time_to_close":605182,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"gradle","update_count":7,"packages":[{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.3.11","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"},{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.room:room-runtime","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.8.4","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.8.4","new_version":"2.8.5"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.11` | `2.3.12` |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.room:room-runtime | `2.8.4` | `2.8.5` |\n| androidx.room:room-ktx | `2.8.4` | `2.8.5` |\n| androidx.room:room-compiler | `2.8.4` | `2.8.5` |\n\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.3.11 to 2.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eMigrating Processors to Support Backing Fields\u003c/h3\u003e\n\u003cp\u003eThis release introduces support for explicit backing fields (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2873\"\u003e#2873\u003c/a\u003e), which may now be returned by \u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e. To prevent breaking existing processors, new language features require an explicit opt-in.\u003c/p\u003e\n\u003cp\u003eMore generally, the KSP API now explicitly models backing fields for properties. The following is an exhaustive list of functions in KSP API where processor may observe the change after opting in:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e: The function now returns a \u003ccode\u003eKSBackingField\u003c/code\u003e if the given annotation targeted a field. Previously, if a field were targeted, the function would return a \u003ccode\u003eKSProperty\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResolver.effectiveJavaModifiers\u003c/code\u003e: The function returns fewer modifiers for a \u003ccode\u003eKSPropertyDeclaration\u003c/code\u003e if it has a backing field, since most of the JVM-specific annotations apply to the backing field. If you are interested in the JVM modifiers, you should call the function with the \u003ccode\u003eKSBackingField\u003c/code\u003e obtained from the property instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, KSP now models Java fields as properties that always have backing fields. Some of the modifiers now apply to the backing field instead.\u003c/p\u003e\n\u003cp\u003eProcessors adapting to new features must opt in via both of the following steps simultaneously (failing to do both may lead to undefined behavior):\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe processor should call the \u003ccode\u003eregisterProcessorForNewFeatures\u003c/code\u003e function in \u003ccode\u003eSymbolProcessorEnvironment\u003c/code\u003e immediately when created (and only once). Example: \u003ca href=\"https://github.com/google/ksp/blob/958be42cfd07943f901727d12ab7fec6540d543f/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AbstractTestProcessor.kt#L30\"\u003eAbstractTestProcessor.kt#L30\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAll implementations of \u003ccode\u003eKSVisitor\u003c/code\u003e should move to \u003ccode\u003eKSVisitorNext\u003c/code\u003e. If their processor code does not directly implement the interface but instead \u003cstrong\u003eextends\u003c/strong\u003e one of the KSP-provided visitors (such as \u003ccode\u003eKSTopDownVisitor\u003c/code\u003e), they should instead extend \u003ccode\u003eKSTopDownVisitor(enableNewFeatures = true)\u003c/code\u003e and override \u003ccode\u003evisitBackingField\u003c/code\u003e depending on their code and needs.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eLet us know if you run into unexpected behavior!\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Resolver.getDeclarationsFromPackage returning incomplete declarations from KLibs in Kotlin Multiplatform (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2396\"\u003e#2396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP CLI process hanging indefinitely when a processor throws an unhandled exception (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix implicit task dependency error between KSP and Android Lint in Android KMP (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NullPointerException by registering PluginProblemReporter as an application service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3140\"\u003e#3140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not mark companion objects as JAVA_STATIC in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3125\"\u003e#3125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JAVA_STATIC modifier resolution for \u003ca href=\"https://github.com/JvmStatic\"\u003e\u003ccode\u003e@​JvmStatic\u003c/code\u003e\u003c/a\u003e members in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3124\"\u003e#3124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate minimum supported Android Gradle Plugin (AGP) version to 8.12.0 (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3149\"\u003e#3149\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/budindepunk\"\u003e\u003ccode\u003e@​budindepunk\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ehttps://github.com/google/ksp/compare/2.3.11...2.3.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a3c38590913b863cc6b73b41d54ff8afa625f642\"\u003e\u003ccode\u003ea3c3859\u003c/code\u003e\u003c/a\u003e Format Resolver file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a614317b071a434139689d8fc0f5c1377b4f0d44\"\u003e\u003ccode\u003ea614317\u003c/code\u003e\u003c/a\u003e Fix grammatical errors in Resolver doc comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c19f255fd96877bbc5b1b18c227c2a3d56883a24\"\u003e\u003ccode\u003ec19f255\u003c/code\u003e\u003c/a\u003e Merge equal EXPECT NEXT and EXPECT CURRENT in javaBackingFieldUsedInKotlin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d3df886048fc6512a06649371b2c1917863160cf\"\u003e\u003ccode\u003ed3df886\u003c/code\u003e\u003c/a\u003e Add test for getting default annotation values in KMP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/3bcac2082b36d3be96ea37070fa007d26233af88\"\u003e\u003ccode\u003e3bcac20\u003c/code\u003e\u003c/a\u003e Mark testJavaBackingFieldUsedInKotlin as fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/e74bb5f56328808f1ad37ba62e66ec3a8e72976e\"\u003e\u003ccode\u003ee74bb5f\u003c/code\u003e\u003c/a\u003e Update expected test output in libOrigins\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c9b1d406ed5bebb34411c4036fecbf0b014b013a\"\u003e\u003ccode\u003ec9b1d40\u003c/code\u003e\u003c/a\u003e Use KSSyntheticJavaBackingFieldImpl in KSPropertyDeclarationImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/afefe15219f9ef70363390236eca8e012c12f6d2\"\u003e\u003ccode\u003eafefe15\u003c/code\u003e\u003c/a\u003e Add KSSyntheticJavaBackingFieldImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/2da07c146f61caa0428c97df1152466a7a2aa7d5\"\u003e\u003ccode\u003e2da07c1\u003c/code\u003e\u003c/a\u003e Add test for missing synthetic Java fields\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/70335307edb9381edd707e5c0eabedf22300c3ab\"\u003e\u003ccode\u003e7033530\u003c/code\u003e\u003c/a\u003e Fix visibility modifiers for Kotlin-based backing fields\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.room:room-runtime` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.8.4 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.8.4 to 2.8.5\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/kinjo-ryura/handball-recorder-android/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kinjo-ryura%2Fhandball-recorder-android/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"9.3.2","new_version":"9.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-24T05:44:32.000Z","version_change":"9.3.2 → 9.4.1","issue":{"uuid":"5563711582","node_id":"PR_kwDOTvqVP88AAAABE39X4g","number":174,"state":"open","title":"chore(deps): Bump the gradle-deps group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-24T05:44:32.000Z","updated_at":"2026-09-24T09:10:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"gradle-deps","update_count":9,"packages":[{"name":"com.google.firebase:firebase-bom","old_version":"34.18.0","new_version":"34.19.0"},{"name":"org.robolectric:robolectric","old_version":"4.16.1","new_version":"4.17","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.2.0","new_version":"1.2.1"},{"name":"androidx.benchmark:benchmark-macro-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"androidx.benchmark:benchmark-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"androidx.benchmark:benchmark-junit4","old_version":"1.3.4","new_version":"1.5.0"},{"name":"com.android.application","old_version":"9.3.2","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.2","new_version":"9.4.1"},{"name":"com.android.test","old_version":"9.3.2","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.diffplug.spotless","old_version":"8.10.1","new_version":"8.10.2"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-deps group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.google.firebase:firebase-bom | `34.18.0` | `34.19.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.16.1` | `4.17` |\n| com.google.android.libraries.identity.googleid:googleid | `1.2.0` | `1.2.1` |\n| androidx.benchmark:benchmark-macro-junit4 | `1.3.4` | `1.5.0` |\n| androidx.benchmark:benchmark-junit4 | `1.3.4` | `1.5.0` |\n| androidx.benchmark:benchmark-junit4 | `1.3.4` | `1.5.0` |\n| com.android.application | `9.3.2` | `9.4.1` |\n| com.android.test | `9.3.2` | `9.4.1` |\n| com.android.test | `9.3.2` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| com.diffplug.spotless | `8.10.1` | `8.10.2` |\n\n\nUpdates `com.google.firebase:firebase-bom` from 34.18.0 to 34.19.0\n\nUpdates `org.robolectric:robolectric` from 4.16.1 to 4.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.17 supports SDK 37 and contains many other features and enhancements.\u003c/p\u003e\n\u003cp\u003ePlease note you may need to add jvmFlags configuration when using JDKs \u0026gt;= 17 at \u003ca href=\"https://robolectric.org/getting-started/\"\u003ehttps://robolectric.org/getting-started/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cp\u003eAndroidVersions has been removed in favor of using android.os.Build constants\nShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T), in order to correctly reflect type enforcement in the framework\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable httpclient tests in Github CI by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10553\"\u003erobolectric/robolectric#10553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse Java 21 for CodeQL by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10554\"\u003erobolectric/robolectric#10554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.48.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10561\"\u003erobolectric/robolectric#10561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.12 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10557\"\u003erobolectric/robolectric#10557\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eAndroidVersions\u003c/code\u003e Javadoc by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10556\"\u003erobolectric/robolectric#10556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake Scheduler#size as unsupported on SDKs \u0026gt; Baklava. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10564\"\u003erobolectric/robolectric#10564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate shadows/httpclient to use prebuilt legacy http client for tests by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10562\"\u003erobolectric/robolectric#10562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for getDeviceOwnerComponentOnAnyUser. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10565\"\u003erobolectric/robolectric#10565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10567\"\u003erobolectric/robolectric#10567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UiModeManager contrast handling in in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10568\"\u003erobolectric/robolectric#10568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake all static fields emitted by Reflector volatile. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10569\"\u003erobolectric/robolectric#10569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate listener logic of getProfileProxy to match actual behavior. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10570\"\u003erobolectric/robolectric#10570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate mockito monorepo to v5.19.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10560\"\u003erobolectric/robolectric#10560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate kotlin monorepo to v2.2.10 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10558\"\u003erobolectric/robolectric#10558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ShadowPausedLooper#poll when sync barrier is blocking the queue. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10571\"\u003erobolectric/robolectric#10571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eShadowTelephonyManager\u003c/code\u003e to support \u003ccode\u003eupdateAvailalbeNetworks\u003c/code\u003e by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10574\"\u003erobolectric/robolectric#10574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android V (SDK 35) to build id 13954326 by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10575\"\u003erobolectric/robolectric#10575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix UserManager.isMainUser on in-development SDK. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10576\"\u003erobolectric/robolectric#10576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds robolectric support for AccessibilityWindowInfo.get/setRegionInScreen(). by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10577\"\u003erobolectric/robolectric#10577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused dependencies by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10566\"\u003erobolectric/robolectric#10566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for mouse wheel scroll events to the simulator by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10578\"\u003erobolectric/robolectric#10578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Javadoc of {get,peek}NextStartedService to better reflect the actual implementation by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10585\"\u003erobolectric/robolectric#10585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a script to generate a legacy http client bundle by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10555\"\u003erobolectric/robolectric#10555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SurroundingTextCallback to ShadowAccessibilityInputConnection. by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10591\"\u003erobolectric/robolectric#10591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds setInformationElements() to WifiScanResultBuilder by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10593\"\u003erobolectric/robolectric#10593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd isWallpaperBackupEligible and getWallpaperFile with cropping by \u003ca href=\"https://github.com/copybara-service\"\u003e\u003ccode\u003e@​copybara-service\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10594\"\u003erobolectric/robolectric#10594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMention Baklava support in the Readme by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10588\"\u003erobolectric/robolectric#10588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AccessibilityWindowInfoBuilderTest by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10595\"\u003erobolectric/robolectric#10595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused method in \u003ccode\u003eAndroidVersionInitTools\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10563\"\u003erobolectric/robolectric#10563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate roborazzi to v1.50.0 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10582\"\u003erobolectric/robolectric#10582\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub Actions to v5 (major) by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10583\"\u003erobolectric/robolectric#10583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Android Gradle Plugin by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10580\"\u003erobolectric/robolectric#10580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.13 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10596\"\u003erobolectric/robolectric#10596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10559\"\u003erobolectric/robolectric#10559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate a workflow to automate the sync of \u003ccode\u003egoogle\u003c/code\u003e into \u003ccode\u003emaster\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10339\"\u003erobolectric/robolectric#10339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump toolchains in devcontainer's Dockerfile by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10597\"\u003erobolectric/robolectric#10597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Robolectric icon for IDE by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10598\"\u003erobolectric/robolectric#10598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare File? as type for toolsJar explicitly by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10599\"\u003erobolectric/robolectric#10599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable parallel for aggregateDocs task temporarily by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10600\"\u003erobolectric/robolectric#10600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/0706415db828e1bdcf4f0c820784fa760d0185a2\"\u003e\u003ccode\u003e0706415\u003c/code\u003e\u003c/a\u003e Bump version to 4.17.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f3c17bd2aeb66035ec3ece695f94ebc81588b79c\"\u003e\u003ccode\u003ef3c17bd\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/04b84f6f3778743e27b4c82a5da488ddf2046d41\"\u003e\u003ccode\u003e04b84f6\u003c/code\u003e\u003c/a\u003e \u0026quot;fixed ResTable_package.SIZEOF value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/f4ee543bf78a429be44ab914b045736ddfda58dc\"\u003e\u003ccode\u003ef4ee543\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/gemini-code-assist\"\u003e\u003ccode\u003e@​gemini-code-assist\u003c/code\u003e\u003c/a\u003e[bot]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/fb99bfbcbcb9ca9c7fe3b3937df1afb0ac23c74d\"\u003e\u003ccode\u003efb99bfb\u003c/code\u003e\u003c/a\u003e Expose BouncyCastle BoM as api dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/a453192a93423d5c4f93f520609aed69d60572a1\"\u003e\u003ccode\u003ea453192\u003c/code\u003e\u003c/a\u003e Fix Javadoc for \u003ccode\u003eVersionCalculator\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/6f268925237080530b7cdf9ff7a001cc138c1043\"\u003e\u003ccode\u003e6f26892\u003c/code\u003e\u003c/a\u003e Bump version to 4.17-beta-3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ceffe96a63b3565ac8337c334b770ef76db7a2f2\"\u003e\u003ccode\u003eceffe96\u003c/code\u003e\u003c/a\u003e Only adjust frameinfo timestamp values (including vsync).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/ea5879f7e3fc9d354833d73acd73f089388f42b9\"\u003e\u003ccode\u003eea5879f\u003c/code\u003e\u003c/a\u003e Add opt-in fix for stale screenshots on SDK 37.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/8bea42181c6a1ecdd60ab50e502157ab4aed3f6d\"\u003e\u003ccode\u003e8bea421\u003c/code\u003e\u003c/a\u003e Fix jank log spam on SDK 37+ by translating FrameInfo timestamps.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16.1...robolectric-4.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.2.0 to 1.2.1\n\nUpdates `androidx.benchmark:benchmark-macro-junit4` from 1.3.4 to 1.5.0\n\nUpdates `androidx.benchmark:benchmark-junit4` from 1.3.4 to 1.5.0\n\nUpdates `androidx.benchmark:benchmark-junit4` from 1.3.4 to 1.5.0\n\nUpdates `com.android.application` from 9.3.2 to 9.4.1\n\nUpdates `com.android.test` from 9.3.2 to 9.4.1\n\nUpdates `com.android.test` from 9.3.2 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.diffplug.spotless` from 8.10.1 to 8.10.2\n","html_url":"https://github.com/sempermechanics/semperdic-app/pull/174","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sempermechanics%2Fsemperdic-app/issues/174","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/174/packages"}},{"old_version":"8.7.3","new_version":"9.4.1","update_type":"major","path":null,"pr_created_at":"2026-09-24T01:11:54.000Z","version_change":"8.7.3 → 9.4.1","issue":{"uuid":"5561565124","node_id":"PR_kwDORxQT9c8AAAABE2Ufrw","number":19,"state":"closed","title":"Bump the gradle-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-30T11:09:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-24T01:11:54.000Z","updated_at":"2026-09-30T11:09:10.000Z","time_to_close":554234,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies","update_count":20,"packages":[{"name":"gradle-wrapper","old_version":"8.9","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.compose:compose-bom","old_version":"2024.10.01","new_version":"2026.09.00"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"com.google.dagger:hilt-android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.8.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-android","old_version":"3.0.1","new_version":"3.6.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"com.revenuecat.purchases:purchases","old_version":"8.10.7","new_version":"10.22.1","repository_url":"https://github.com/RevenueCat/purchases-android"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.5"},{"name":"com.android.application","old_version":"8.7.3","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.52","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies group with 20 updates in the /movemark-android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.9` | `9.7.1` |\n| androidx.compose:compose-bom | `2024.10.01` | `2026.09.00` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.8.0` |\n| [io.ktor:ktor-client-android](https://github.com/ktorio/ktor) | `3.0.1` | `3.6.0` |\n| [com.revenuecat.purchases:purchases](https://github.com/RevenueCat/purchases-android) | `8.10.7` | `10.22.1` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.5` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.5` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.5` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.5` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.5` |\n| com.android.application | `8.7.3` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.20` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.52` | `2.60.1` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.12` |\n\n\nUpdates `gradle-wrapper` from 8.9 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.9.0...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.compose:compose-bom` from 2024.10.01 to 2026.09.00\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.52 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.52...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `io.github.jan-tennert.supabase:bom` from 3.0.3 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase-community/supabase-kt/releases\"\u003eio.github.jan-tennert.supabase:bom's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch3\u003eCore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(sample): move \u0026quot;Forgot password?\u0026quot; button out of overlapping Box in… by \u003ca href=\"https://github.com/MohammedThalha2002\"\u003e\u003ccode\u003e@​MohammedThalha2002\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/supabase-...\n\n_Description has been truncated_","html_url":"https://github.com/surenss861/movemark-ios/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/surenss861%2Fmovemark-ios/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"9.2.1","new_version":"9.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-23T23:10:09.000Z","version_change":"9.2.1 → 9.4.1","issue":{"uuid":"5560661992","node_id":"PR_kwDOQkhzqs8AAAABE1nYBA","number":79,"state":"closed","title":"chore(deps): bump the dependencies group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-27T23:04:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-23T23:10:09.000Z","updated_at":"2026-09-27T23:04:41.000Z","time_to_close":345270,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":14,"packages":[{"name":"com.android.application","old_version":"9.2.1","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.3.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.devtools.ksp","old_version":"2.3.8","new_version":"2.3.12","repository_url":"https://github.com/google/ksp"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.3.21","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.squareup.okhttp3:okhttp","old_version":"5.3.2","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"com.google.dagger:hilt-android","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.59.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.3.0","new_version":"1.4.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.05.00","new_version":"2026.09.00"},{"name":"io.github.rosemoe:editor","old_version":"0.24.5","new_version":"0.24.6","repository_url":"https://github.com/Rosemoe/sora-editor"},{"name":"io.mockk:mockk","old_version":"1.14.9","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"gradle-wrapper","old_version":"9.5.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `9.2.1` | `9.4.1` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.3.21` | `2.4.20` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.8` | `2.3.12` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.3.21` | `2.4.20` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `5.3.2` | `5.5.0` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.59.2` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.3.0` | `1.4.0` |\n| androidx.compose:compose-bom | `2026.05.00` | `2026.09.00` |\n| [io.github.rosemoe:editor](https://github.com/Rosemoe/sora-editor) | `0.24.5` | `0.24.6` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.14.9` | `1.14.11` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.5.1` | `9.7.1` |\n\n\nUpdates `com.android.application` from 9.2.1 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.3.21 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.3.8 to 2.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eMigrating Processors to Support Backing Fields\u003c/h3\u003e\n\u003cp\u003eThis release introduces support for explicit backing fields (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2873\"\u003e#2873\u003c/a\u003e), which may now be returned by \u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e. To prevent breaking existing processors, new language features require an explicit opt-in.\u003c/p\u003e\n\u003cp\u003eMore generally, the KSP API now explicitly models backing fields for properties. The following is an exhaustive list of functions in KSP API where processor may observe the change after opting in:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResolver.getSymbolsWithAnnotation\u003c/code\u003e: The function now returns a \u003ccode\u003eKSBackingField\u003c/code\u003e if the given annotation targeted a field. Previously, if a field were targeted, the function would return a \u003ccode\u003eKSProperty\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResolver.effectiveJavaModifiers\u003c/code\u003e: The function returns fewer modifiers for a \u003ccode\u003eKSPropertyDeclaration\u003c/code\u003e if it has a backing field, since most of the JVM-specific annotations apply to the backing field. If you are interested in the JVM modifiers, you should call the function with the \u003ccode\u003eKSBackingField\u003c/code\u003e obtained from the property instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, KSP now models Java fields as properties that always have backing fields. Some of the modifiers now apply to the backing field instead.\u003c/p\u003e\n\u003cp\u003eProcessors adapting to new features must opt in via both of the following steps simultaneously (failing to do both may lead to undefined behavior):\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe processor should call the \u003ccode\u003eregisterProcessorForNewFeatures\u003c/code\u003e function in \u003ccode\u003eSymbolProcessorEnvironment\u003c/code\u003e immediately when created (and only once). Example: \u003ca href=\"https://github.com/google/ksp/blob/958be42cfd07943f901727d12ab7fec6540d543f/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AbstractTestProcessor.kt#L30\"\u003eAbstractTestProcessor.kt#L30\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAll implementations of \u003ccode\u003eKSVisitor\u003c/code\u003e should move to \u003ccode\u003eKSVisitorNext\u003c/code\u003e. If their processor code does not directly implement the interface but instead \u003cstrong\u003eextends\u003c/strong\u003e one of the KSP-provided visitors (such as \u003ccode\u003eKSTopDownVisitor\u003c/code\u003e), they should instead extend \u003ccode\u003eKSTopDownVisitor(enableNewFeatures = true)\u003c/code\u003e and override \u003ccode\u003evisitBackingField\u003c/code\u003e depending on their code and needs.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eLet us know if you run into unexpected behavior!\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Resolver.getDeclarationsFromPackage returning incomplete declarations from KLibs in Kotlin Multiplatform (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2396\"\u003e#2396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP CLI process hanging indefinitely when a processor throws an unhandled exception (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix implicit task dependency error between KSP and Android Lint in Android KMP (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix NullPointerException by registering PluginProblemReporter as an application service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3140\"\u003e#3140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not mark companion objects as JAVA_STATIC in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3125\"\u003e#3125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JAVA_STATIC modifier resolution for \u003ca href=\"https://github.com/JvmStatic\"\u003e\u003ccode\u003e@​JvmStatic\u003c/code\u003e\u003c/a\u003e members in Resolver.effectiveJavaModifiers (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3124\"\u003e#3124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate minimum supported Android Gradle Plugin (AGP) version to 8.12.0 (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3149\"\u003e#3149\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/budindepunk\"\u003e\u003ccode\u003e@​budindepunk\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.11...2.3.12\"\u003ehttps://github.com/google/ksp/compare/2.3.11...2.3.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a3c38590913b863cc6b73b41d54ff8afa625f642\"\u003e\u003ccode\u003ea3c3859\u003c/code\u003e\u003c/a\u003e Format Resolver file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/a614317b071a434139689d8fc0f5c1377b4f0d44\"\u003e\u003ccode\u003ea614317\u003c/code\u003e\u003c/a\u003e Fix grammatical errors in Resolver doc comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c19f255fd96877bbc5b1b18c227c2a3d56883a24\"\u003e\u003ccode\u003ec19f255\u003c/code\u003e\u003c/a\u003e Merge equal EXPECT NEXT and EXPECT CURRENT in javaBackingFieldUsedInKotlin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d3df886048fc6512a06649371b2c1917863160cf\"\u003e\u003ccode\u003ed3df886\u003c/code\u003e\u003c/a\u003e Add test for getting default annotation values in KMP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/3bcac2082b36d3be96ea37070fa007d26233af88\"\u003e\u003ccode\u003e3bcac20\u003c/code\u003e\u003c/a\u003e Mark testJavaBackingFieldUsedInKotlin as fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/e74bb5f56328808f1ad37ba62e66ec3a8e72976e\"\u003e\u003ccode\u003ee74bb5f\u003c/code\u003e\u003c/a\u003e Update expected test output in libOrigins\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c9b1d406ed5bebb34411c4036fecbf0b014b013a\"\u003e\u003ccode\u003ec9b1d40\u003c/code\u003e\u003c/a\u003e Use KSSyntheticJavaBackingFieldImpl in KSPropertyDeclarationImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/afefe15219f9ef70363390236eca8e012c12f6d2\"\u003e\u003ccode\u003eafefe15\u003c/code\u003e\u003c/a\u003e Add KSSyntheticJavaBackingFieldImpl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/2da07c146f61caa0428c97df1152466a7a2aa7d5\"\u003e\u003ccode\u003e2da07c1\u003c/code\u003e\u003c/a\u003e Add test for missing synthetic Java fields\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/70335307edb9381edd707e5c0eabedf22300c3ab\"\u003e\u003ccode\u003e7033530\u003c/code\u003e\u003c/a\u003e Fix visibility modifiers for Kotlin-based backing fields\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.3.21 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:okhttp` from 5.3.2 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-5.3.2...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.appcompat:appcompat` from 1.7.1 to 1.8.0\n\nUpdates `com.google.dagger:hilt-android` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.59.2 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.59.2...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.3.0 to 1.4.0\n\nUpdates `androidx.compose:compose-bom` from 2026.05.00 to 2026.09.00\n\nUpdates `io.github.rosemoe:editor` from 0.24.5 to 0.24.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Rosemoe/sora-editor/releases\"\u003eio.github.rosemoe:editor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.6\u003c/h2\u003e\n\u003ch2\u003eEditor Core\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eimprove algorithm of collecting sticky lines\u003c/li\u003e\n\u003cli\u003eadd min width for minimap region\u003c/li\u003e\n\u003cli\u003eadd inlay hint setter\u003c/li\u003e\n\u003cli\u003eenhance emoji text deletion on low API devices\u003c/li\u003e\n\u003cli\u003efix cursor anchor position for IME under wordwrap mode (\u003ca href=\"https://redirect.github.com/Xed-Editor/Xed-Editor/issues/1331\"\u003eXed-Editor/Xed-Editor#1331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate no completion checking logic (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCtrl+Space\u003c/code\u003e to trigger completion (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEditor LSP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix NPE in signature text generation (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/829\"\u003e#829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix possible dead loop in Markdown text parsing (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/845\"\u003e#845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenhance document color support and inlay hints (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/830\"\u003e#830\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenhance LSP completion overlap, character index bounds (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e by \u003ca href=\"https://github.com/KonerDev\"\u003e\u003ccode\u003e@​KonerDev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTextMate\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd documentation for \u003ccode\u003eTextMateLanguage\u003c/code\u003e and remove deprecated constructors\u003c/li\u003e\n\u003cli\u003einitialize color scheme on theme creation (\u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/806\"\u003e#806\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTreeSitter\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd cancellation token for variable analysis to reduce delay in large files\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eAs android support libraries are moving minSdk to 23, this will be the last release that supports API 21. From next release, we will raise the minSdk to 23.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/87055c459e346cac6c619b3350f0bfba076228cc\"\u003e\u003ccode\u003e87055c4\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.24.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/0b081c65b3f22483f16b83fde0e5475eba9fe88b\"\u003e\u003ccode\u003e0b081c6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/834\"\u003e#834\u003c/a\u003e from Rosemoe/renovate/androidxannotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/5af34ae09f32b4b34aacd3d6df701151d2a16a16\"\u003e\u003ccode\u003e5af34ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/838\"\u003e#838\u003c/a\u003e from Rosemoe/renovate/gradle-9.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/82e11f86730644ebfc350041d040c6b0929620d8\"\u003e\u003ccode\u003e82e11f8\u003c/code\u003e\u003c/a\u003e feat(editor): add \u003ccode\u003eCtrl+Space\u003c/code\u003e keybinding for trigger completion (close \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/ed812efcedfb6b8e122007e8b010771949f084ee\"\u003e\u003ccode\u003eed812ef\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/main'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/656ccfb853def425dec8c64e2944f875efdd9d47\"\u003e\u003ccode\u003e656ccfb\u003c/code\u003e\u003c/a\u003e fix(lsp): fix markdown parsing of lists with leading spaces and possible dead...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/2b3861c0fc531b9fb1e0507c32cc8b73155718e7\"\u003e\u003ccode\u003e2b3861c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Rosemoe/sora-editor/issues/850\"\u003e#850\u003c/a\u003e from KonerDev/fix/lsp-completion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/4a7710f2067919a764041d80fac7fd7b55bde51b\"\u003e\u003ccode\u003e4a7710f\u003c/code\u003e\u003c/a\u003e fix: LSP completion overlap, character index bounds and no completion checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/49400e7cd4d73694673751d26bfc34b1000580d9\"\u003e\u003ccode\u003e49400e7\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency androidx.annotation:annotation to v1.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rosemoe/sora-editor/commit/134adc3de20cbcad91019375e57d859c9778fa85\"\u003e\u003ccode\u003e134adc3\u003c/code\u003e\u003c/a\u003e chore(deps): update gradle to v9.5.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Rosemoe/sora-editor/compare/0.24.5...0.24.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.mockk:mockk` from 1.14.9 to 1.14.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockk/mockk/releases\"\u003eio.mockk:mockk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.14.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: added SameInstanceMatcher to handle an issue with equals method when using EqMatcher along with a mock to an object by \u003ca href=\"https://github.com/DOssaA\"\u003e\u003ccode\u003e@​DOssaA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1508\"\u003emockk/mockk#1508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd scoped confirmVerified overloads for callables (KFunction and KProperty) by \u003ca href=\"https://github.com/DOssaA\"\u003e\u003ccode\u003e@​DOssaA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1513\"\u003emockk/mockk#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support MockKAnnotation.useDependencyOrder for JUnit 5 by \u003ca href=\"https://github.com/ilia1243\"\u003e\u003ccode\u003e@​ilia1243\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mockk/mockk/pull/1515\"\u003emockk/mockk#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow updating settings from code by \u003ca href=\"https://github.com/Yentis\"\u003e\u003ccode\u003e@​Yentis\u003c/code\u003e\u003c/a\u003e in \u003ca hr...\n\n_Description has been truncated_","html_url":"https://github.com/KonaBess-Next/KonaBess-Next/pull/79","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonaBess-Next%2FKonaBess-Next/issues/79","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/79/packages"}},{"old_version":"8.13.0","new_version":"9.4.1","update_type":"major","path":"/android","pr_created_at":"2026-09-23T05:06:20.000Z","version_change":"8.13.0 → 9.4.1","issue":{"uuid":"5549050208","node_id":"PR_kwDOUmrVyc8AAAABEsZtrQ","number":13,"state":"closed","title":"Bump com.android.application from 8.13.0 to 9.4.1 in /android","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-23T12:05:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-23T05:06:20.000Z","updated_at":"2026-09-23T12:05:19.000Z","time_to_close":25129,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.4.1","repository_url":null}],"path":"/android","ecosystem":"maven"},"body":"Bumps com.android.application from 8.13.0 to 9.4.1.\n","html_url":"https://github.com/pboachie/zrotext/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pboachie%2Fzrotext/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":null,"pr_created_at":"2026-09-22T22:29:02.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5546057888","node_id":"PR_kwDOUSKWW88AAAABEqG5IA","number":7,"state":"closed","title":"build(deps): bump the maven group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-29T22:16:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-22T22:29:02.000Z","updated_at":"2026-09-29T22:16:15.000Z","time_to_close":604031,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"maven","update_count":8,"packages":[{"name":"androidx.compose:compose-bom","old_version":"2026.08.00","new_version":"2026.09.00"},{"name":"androidx.compose.material3:material3","old_version":"1.5.0-alpha27","new_version":"1.5.0-alpha28"},{"name":"com.google.protobuf:protobuf-kotlin-lite","old_version":"4.36.1","new_version":"4.36.2"},{"name":"com.google.protobuf:protoc","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"com.google.protobuf:protoc","old_version":"4.36.1","new_version":"4.36.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":null,"ecosystem":"maven"},"body":"Bumps the maven group with 8 updates in the /manager directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.compose:compose-bom | `2026.08.00` | `2026.09.00` |\n| androidx.compose.material3:material3 | `1.5.0-alpha27` | `1.5.0-alpha28` |\n| com.google.protobuf:protobuf-kotlin-lite | `4.36.1` | `4.36.2` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.36.1` | `4.36.2` |\n| com.android.application | `9.4.0` | `9.4.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.10` | `2.4.20` |\n\n\nUpdates `androidx.compose:compose-bom` from 2026.08.00 to 2026.09.00\n\nUpdates `androidx.compose.material3:material3` from 1.5.0-alpha27 to 1.5.0-alpha28\n\nUpdates `com.google.protobuf:protobuf-kotlin-lite` from 4.36.1 to 4.36.2\n\nUpdates `com.google.protobuf:protoc` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.protobuf:protoc` from 4.36.1 to 4.36.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/protocolbuffers/protobuf/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.serialization's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.serialization's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/l...\n\n_Description has been truncated_","html_url":"https://github.com/dikafarabian/KowSU/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikafarabian%2FKowSU/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"9.4.0","new_version":"9.4.1","update_type":"patch","path":"/native-android-app","pr_created_at":"2026-09-22T03:57:09.000Z","version_change":"9.4.0 → 9.4.1","issue":{"uuid":"5535103395","node_id":"PR_kwDOO88c0s8AAAABEhSshA","number":979,"state":"open","title":"Bump the gradle-minor-patch group in /native-android-app with 2 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-22T03:57:09.000Z","updated_at":"2026-09-22T03:57:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-minor-patch","update_count":2,"packages":[{"name":"com.android.application","old_version":"9.4.0","new_version":"9.4.1"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.4.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/native-android-app","ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group in /native-android-app with 2 updates: com.android.application and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\nUpdates `com.android.application` from 9.4.0 to 9.4.1\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.4.10 to 2.4.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.20\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.20\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86546\"\u003e\u003ccode\u003eKT-86546\u003c/code\u003e\u003c/a\u003e Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85418\"\u003e\u003ccode\u003eKT-85418\u003c/code\u003e\u003c/a\u003e Implement an API for accessing deserialized file annotations in Analysis API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-74448\"\u003e\u003ccode\u003eKT-74448\u003c/code\u003e\u003c/a\u003e K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85856\"\u003e\u003ccode\u003eKT-85856\u003c/code\u003e\u003c/a\u003e containingSymbol of constructor property differs for local and non-local classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-65417\"\u003e\u003ccode\u003eKT-65417\u003c/code\u003e\u003c/a\u003e K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Code Compilation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-76457\"\u003e\u003ccode\u003eKT-76457\u003c/code\u003e\u003c/a\u003e K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. FIR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70552\"\u003e\u003ccode\u003eKT-70552\u003c/code\u003e\u003c/a\u003e No expects for actual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69727\"\u003e\u003ccode\u003eKT-69727\u003c/code\u003e\u003c/a\u003e K2 IDE. Wrong error in the editor on calling \u003ccode\u003eclone\u003c/code\u003e function of actual enum instance in non-jvm platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-69726\"\u003e\u003ccode\u003eKT-69726\u003c/code\u003e\u003c/a\u003e FP errors on declaring \u003ccode\u003efun clone()\u003c/code\u003e in actual enum in not-jvm source-set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86014\"\u003e\u003ccode\u003eKT-86014\u003c/code\u003e\u003c/a\u003e Types are broken after remove parameter through change signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86363\"\u003e\u003ccode\u003eKT-86363\u003c/code\u003e\u003c/a\u003e KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86147\"\u003e\u003ccode\u003eKT-86147\u003c/code\u003e\u003c/a\u003e Drop \u003ccode\u003ekotlin.parallel.resolve.under.global.lock\u003c/code\u003e registry key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85543\"\u003e\u003ccode\u003eKT-85543\u003c/code\u003e\u003c/a\u003e Avoid lazy resolve for the contracts phase if no constracts might be resolved\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84914\"\u003e\u003ccode\u003eKT-84914\u003c/code\u003e\u003c/a\u003e Do not publish analysis-api-test-framework\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86986\"\u003e\u003ccode\u003eKT-86986\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ekotlin-compiler-common-for-ide\u003c/code\u003e bundles unrelated Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86186\"\u003e\u003ccode\u003eKT-86186\u003c/code\u003e\u003c/a\u003e Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85360\"\u003e\u003ccode\u003eKT-85360\u003c/code\u003e\u003c/a\u003e Drop kotlin-compiler-testdata-for-ide artifact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85585\"\u003e\u003ccode\u003eKT-85585\u003c/code\u003e\u003c/a\u003e Simplify the dependencies graph for the Analysis API modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85381\"\u003e\u003ccode\u003eKT-85381\u003c/code\u003e\u003c/a\u003e Remove tests for the FE10 implementation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAnalysis API. Light Classes\u003c/h3\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84645\"\u003e\u003ccode\u003eKT-84645\u003c/code\u003e\u003c/a\u003e Support resolving to companion block members \u0026amp; extensions from Java (light classes)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-80775\"\u003e\u003ccode\u003eKT-80775\u003c/code\u003e\u003c/a\u003e Support PsiClass#getRecordComponents in light classes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-57537\"\u003e\u003ccode\u003eKT-57537\u003c/code\u003e\u003c/a\u003e SLC: propagate default parameter value from (\u003ccode\u003e@JvmOverloads\u003c/code\u003e) \u003ccode\u003eexpect\u003c/code\u003e declarations to \u003ccode\u003eactual\u003c/code\u003e declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85040\"\u003e\u003ccode\u003eKT-85040\u003c/code\u003e\u003c/a\u003e [Analysis API] Improve Java / Kotlin interop in KMP projects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87301\"\u003e\u003ccode\u003eKT-87301\u003c/code\u003e\u003c/a\u003e SymbolLightAccessorMethod#isValid returns false for delegated properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87171\"\u003e\u003ccode\u003eKT-87171\u003c/code\u003e\u003c/a\u003e SLC: non-mapped Kotlin collection supertype is dropped from supertype list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87250\"\u003e\u003ccode\u003eKT-87250\u003c/code\u003e\u003c/a\u003e JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-70428\"\u003e\u003ccode\u003eKT-70428\u003c/code\u003e\u003c/a\u003e AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-63568\"\u003e\u003ccode\u003eKT-63568\u003c/code\u003e\u003c/a\u003e Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-36740\"\u003e\u003ccode\u003eKT-36740\u003c/code\u003e\u003c/a\u003e MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/890ac1d94fdb80eb85f0eeb5be5e4352df987b2f\"\u003e\u003ccode\u003e890ac1d\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.20-RC3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8860aed4ae4541301f24147d6785c764fa2bef89\"\u003e\u003ccode\u003e8860aed\u003c/code\u003e\u003c/a\u003e 🍒 [FIR] Fix suspend conversion when expected type is nullable (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7769\"\u003e#7769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ab5bcd94281c167d5b55887b78bd04ee13abdf35\"\u003e\u003ccode\u003eab5bcd9\u003c/code\u003e\u003c/a\u003e Edit ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9464edc097f4490b304f8a6d43ded010f6c8746e\"\u003e\u003ccode\u003e9464edc\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.20-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0261e43b78e4db832fb347bb5a055eeba293d742\"\u003e\u003ccode\u003e0261e43\u003c/code\u003e\u003c/a\u003e Cherry-pick \u0026quot;Fix \u003ccode\u003easBodyAndResultVar\u003c/code\u003e call in `visitInlinedLambdaInComposable...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0763513670c55c40532e4ed84ac7c1e01bf6a772\"\u003e\u003ccode\u003e0763513\u003c/code\u003e\u003c/a\u003e [box-tests] Workaround for klib compatibility tests (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7626\"\u003e#7626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/045aec6647e3f4e82d91d51d255c77d51f980c7c\"\u003e\u003ccode\u003e045aec6\u003c/code\u003e\u003c/a\u003e [Wasm] Append scripts from webpack.config.d in the end of the file (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7615\"\u003e#7615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/cd7173bf0b61eb5a831d6425fbb7f05dea19b312\"\u003e\u003ccode\u003ecd7173b\u003c/code\u003e\u003c/a\u003e 🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance survives...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/d36a2ffbccc4247c4d9fd18f62f369cca9b0054b\"\u003e\u003ccode\u003ed36a2ff\u003c/code\u003e\u003c/a\u003e CastsOptimizationPass: break aliases cycles (\u003ca href=\"https://redirect.github.com/JetBrains/kotlin/issues/7578\"\u003e#7578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/8664983b34dca6193996f745d441f8edf6da0031\"\u003e\u003ccode\u003e8664983\u003c/code\u003e\u003c/a\u003e [CLI] Restore custom IC search scope creation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/teetee971/SentinelQuantumVanguardAiPro/pull/979","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/teetee971%2FSentinelQuantumVanguardAiPro/issues/979","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/979/packages"}},{"old_version":"9.5.0-alpha05","new_version":"9.5.0-alpha06","update_type":null,"path":null,"pr_created_at":"2026-09-21T22:52:59.000Z","version_change":"9.5.0-alpha05 → 9.5.0-alpha06","issue":{"uuid":"5533319128","node_id":"PR_kwDOE1xTLs8AAAABEf5OGg","number":721,"state":"closed","title":"Bump com.android.application from 9.5.0-alpha05 to 9.5.0-alpha06","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-28T22:53:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-21T22:52:59.000Z","updated_at":"2026-09-28T22:53:10.000Z","time_to_close":604809,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"com.android.application","old_version":"9.5.0-alpha05","new_version":"9.5.0-alpha06","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps com.android.application from 9.5.0-alpha05 to 9.5.0-alpha06.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.application\u0026package-manager=gradle\u0026previous-version=9.5.0-alpha05\u0026new-version=9.5.0-alpha06)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/fmonniot/resync/pull/721","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmonniot%2Fresync/issues/721","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/721/packages"}}]}