[{"data":1,"prerenderedAt":277},["ShallowReactive",2],{"blog-post-blog_de-kotlin-2-3-20-tooling-release-build-performance":3},{"id":4,"title":5,"body":6,"cover":262,"date":263,"description":264,"draft":265,"extension":266,"meta":267,"navigation":175,"path":268,"seo":269,"stem":270,"tags":271,"__hash__":276},"blog_de\u002Fde\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance.md","Kotlin 2.3.20: Tooling-Release mit Fokus auf Compiler und Build-Stabilität",{"type":7,"value":8,"toc":257},"minimark",[9,18,23,26,51,58,65,69,72,113,116,242,246,253],[10,11,12,13,17],"p",{},"Tooling-Releases sind für Kotlin-Teams oft wichtiger als einzelne Language-Features, weil sie direkt Build-Zeiten, IDE-Integrationen und Release-Pipelines beeinflussen. Mitte März 2026 wurde ",[14,15,16],"strong",{},"Kotlin 2.3.20"," als Update mit Schwerpunkt auf Compiler- und Standardbibliotheks-Fixes veröffentlicht.",[19,20,22],"h2",{"id":21},"was-im-release-enthalten-ist","Was im Release enthalten ist",[10,24,25],{},"Das Release adressiert mehrere Stellen, die in CI und lokalen Builds sichtbar werden:",[27,28,29,33,45,48],"ul",{},[30,31,32],"li",{},"Performance-Optimierung: In der IR-Pipeline wird redundante Initialisierung vermieden",[30,34,35,36,39,40,44],{},"Stabilitätsfix: Behebung einer ",[14,37,38],{},"Race Condition"," in ",[41,42,43],"code",{},"Duration.parse"," der Standardbibliothek",[30,46,47],{},"Tooling-Fokus: Änderungen, die vor allem Build- und IDE-Workflows betreffen",[30,49,50],{},"Reduzierte Build-Varianz, wenn mehrere Module parallel kompiliert und gecacht werden",[10,52,53,54,57],{},"Gerade in Multi-Module-Projekten wirken sich solche Fixes direkt auf ",[14,55,56],{},"Incremental Compilation"," und Wiederholbarkeit von CI-Läufen aus.",[10,59,60],{},[61,62],"img",{"alt":63,"src":64},"Diagramm: Kotlin Tooling im Build","\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-diagram.svg",[19,66,68],{"id":67},"upgrade-in-gradle-und-ci","Upgrade in Gradle und CI",[10,70,71],{},"Ein Kotlin-Upgrade hat in der Praxis mehrere Berührungspunkte:",[27,73,74,85,92,99,106],{},[30,75,76,77,80,81,84],{},"Update des ",[14,78,79],{},"Kotlin Gradle Plugins"," (und ggf. Kotlin DSL in ",[41,82,83],{},"build.gradle.kts",")",[30,86,87,88,91],{},"Konsistenz zwischen ",[14,89,90],{},"lokaler Toolchain"," und CI-Images",[30,93,94,95,98],{},"Review von Compiler-Flags, insbesondere wenn Warnings als ",[14,96,97],{},"Gate"," genutzt werden",[30,100,101,102,105],{},"Abgleich von Build-Plugins (z. B. ",[14,103,104],{},"KSP",", Dokka, Static Analysis) auf Kompatibilität zur neuen Kotlin-Version",[30,107,108,109,112],{},"Stabilitätsprüfung von Gradle-Features wie ",[14,110,111],{},"Configuration Cache"," und Daemon-Settings",[10,114,115],{},"Beispiel für ein zentrales Version-Pinning:",[117,118,123],"pre",{"className":119,"code":120,"language":121,"meta":122,"style":122},"language-kotlin shiki shiki-themes github-light github-dark","\u002F\u002F build.gradle.kts\nplugins {\n  kotlin(\"jvm\") version \"2.3.20\"\n}\n\ntasks.withType\u003Corg.jetbrains.kotlin.gradle.tasks.KotlinCompile> {\n  compilerOptions.freeCompilerArgs.add(\"-Xjsr305=strict\")\n}\n","kotlin","",[41,124,125,134,145,164,170,177,220,237],{"__ignoreMap":122},[126,127,130],"span",{"class":128,"line":129},"line",1,[126,131,133],{"class":132},"sJ8bj","\u002F\u002F build.gradle.kts\n",[126,135,137,141],{"class":128,"line":136},2,[126,138,140],{"class":139},"sScJk","plugins",[126,142,144],{"class":143},"sVt8B"," {\n",[126,146,148,151,154,158,161],{"class":128,"line":147},3,[126,149,150],{"class":139},"  kotlin",[126,152,153],{"class":143},"(",[126,155,157],{"class":156},"sZZnC","\"jvm\"",[126,159,160],{"class":143},") version ",[126,162,163],{"class":156},"\"2.3.20\"\n",[126,165,167],{"class":128,"line":166},4,[126,168,169],{"class":143},"}\n",[126,171,173],{"class":128,"line":172},5,[126,174,176],{"emptyLinePlaceholder":175},true,"\n",[126,178,180,183,186,189,192,195,198,200,202,204,207,209,212,214,217],{"class":128,"line":179},6,[126,181,182],{"class":143},"tasks.",[126,184,185],{"class":139},"withType",[126,187,188],{"class":143},"\u003C",[126,190,191],{"class":139},"org",[126,193,194],{"class":143},".",[126,196,197],{"class":139},"jetbrains",[126,199,194],{"class":143},[126,201,121],{"class":139},[126,203,194],{"class":143},[126,205,206],{"class":139},"gradle",[126,208,194],{"class":143},[126,210,211],{"class":139},"tasks",[126,213,194],{"class":143},[126,215,216],{"class":139},"KotlinCompile",[126,218,219],{"class":143},"> {\n",[126,221,223,226,229,231,234],{"class":128,"line":222},7,[126,224,225],{"class":143},"  compilerOptions.freeCompilerArgs.",[126,227,228],{"class":139},"add",[126,230,153],{"class":143},[126,232,233],{"class":156},"\"-Xjsr305=strict\"",[126,235,236],{"class":143},")\n",[126,238,240],{"class":128,"line":239},8,[126,241,169],{"class":143},[19,243,245],{"id":244},"warum-das-wichtig-ist","Warum das wichtig ist",[10,247,248,249,252],{},"In großen Kotlin-Codebases sind Build-Latenz und Reproduzierbarkeit entscheidend für Durchsatz in CI\u002FCD. Tooling-Releases wie 2.3.20 sind deshalb ein direkter Hebel für ",[14,250,251],{},"stabile Pipelines",", geringere Rebuild-Kosten und weniger flakiness durch Runtime- und Stdlib-Randfälle.",[254,255,256],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":122,"searchDepth":136,"depth":136,"links":258},[259,260,261],{"id":21,"depth":136,"text":22},{"id":67,"depth":136,"text":68},{"id":244,"depth":136,"text":245},"\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-cover.jpg","2026-03-22","Kotlin 2.3.20 liefert ein Tooling-Update, verbessert die Performance in der IR-Pipeline und behebt eine Race Condition in der Standardbibliothek.",false,"md",{},"\u002Fde\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",{"title":5,"description":264},"de\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",[272,273,274,275],"Kotlin","JVM","Build Tools","Developer Tools","PDtoNzU8AhDcvYnTDPG_a7fSvlUU255ByaR-mu0tmbM",1775892934260]