Kotlin 2.3 호환성 가이드
언어의 현대성 유지 및 _편안한 업데이트_는 Kotlin 언어 설계의 핵심 원칙 중 일부입니다. 전자는 언어의 발전을 방해하는 구조를 제거해야 함을 의미하며, 후자는 이러한 제거 과정을 사전에 충분히 전달하여 코드 마이그레이션이 가능한 한 원활하게 이루어지도록 해야 함을 의미합니다.
대부분의 언어 변경 사항은 이미 업데이트 변경 로그나 컴파일러 경고와 같은 다른 채널을 통해 공지되었지만, 이 문서는 이를 모두 요약하여 Kotlin 2.2에서 Kotlin 2.3으로의 마이그레이션을 위한 완전한 참조를 제공합니다. 또한 이 문서에는 도구 관련 변경 사항에 대한 정보도 포함되어 있습니다.
기본 용어
이 문서에서는 다음과 같은 몇 가지 호환성 유형을 소개합니다:
- 소스(source): 소스 호환성 위반 변경은 이전에 문제없이(오류나 경고 없이) 컴파일되던 코드가 더 이상 컴파일되지 않게 되는 것을 의미합니다.
- 바이너리(binary): 두 바이너리 아티팩트를 서로 교체했을 때 로딩이나 링크 오류가 발생하지 않는 경우를 바이너리 호환이 된다고 합니다.
- 동작(behavioral): 변경을 적용하기 전과 후에 동일한 프로그램이 서로 다른 동작을 보이는 경우를 동작 호환성 위반이라고 합니다.
이러한 정의는 순수 Kotlin에 대해서만 정의된 것임을 유념하십시오. 다른 언어 관점(예: Java)에서의 Kotlin 코드 호환성은 이 문서의 범위를 벗어납니다.
언어(Language)
-language-version 1.8 및 1.9 지원 중단
컴포넌트: 컴파일러
호환성 위반 유형: 소스
요약: Kotlin 2.3부터 컴파일러는 더 이상
-language-version=1.8을 지원하지 않습니다. JVM 이외의 플랫폼에 대한-language-version=1.9지원도 제거됩니다.지원 중단 주기:
- 2.2.0:
-language-version에 1.8 및 1.9 버전을 사용할 때 경고 보고- 2.3.0: 모든 플랫폼에서 1.8 버전에 대해, JVM 이외의 플랫폼에서 1.9 버전에 대해
-language-version사용 시 경고를 오류로 격상
타입 별칭(typealias)이 있는 추론된 타입에 대해 상한 제약 위반 오류 보고
이슈: KTLC-287
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: 이전에는 컴파일러가 추론된 타입에 대한 상한 제약 위반(upper-bound violation constraints) 오류를 보고하지 않았습니다. Kotlin 2.3.0에서 이 문제가 수정되어 모든 타입 파라미터에 대해 일관되게 오류가 보고됩니다.
지원 중단 주기:
- 2.2.20: 암시적 타입 인자의 제약 위반에 대해 지원 중단 경고 보고
- 2.3.0: 암시적 타입 인자에 대한
UPPER_BOUND_VIOLATED경고를 오류로 격상
inline 및 crossinline 람다에 @JvmSerializableLambda 어노테이션 사용 금지
이슈: KTLC-9
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: 더 이상
inline또는crossinline람다에@JvmSerializableLambda어노테이션을 적용할 수 없습니다. 이러한 람다는 직렬화할 수 없으므로@JvmSerializableLambda를 적용해도 아무런 효과가 없었습니다.지원 중단 주기:
- 2.1.20:
inline및crossinline람다에@JvmSerializableLambda가 적용된 경우 경고 보고- 2.3.0: 경고를 오류로 격상. 이 변경 사항은 점진적(progressive) 모드에서 활성화할 수 있습니다.
제네릭 시그니처가 일치하지 않는 경우 Kotlin 인터페이스를 Java 클래스에 위임하는 것을 금지
이슈: KTLC-267
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 제네릭 인터페이스 메서드를 비제네릭 오버라이드로 구현하는 Java 클래스에 위임하는 것을 금지합니다. 이전에는 이러한 동작을 허용하여 런타임에 타입 불일치 및
ClassCastException이 발생했습니다. 이 변경으로 인해 오류 보고 시점이 런타임에서 컴파일 타임으로 이동합니다.지원 중단 주기:
- 2.1.20: 경고 보고
- 2.3.0: 경고를 오류로 격상
명시적 반환 타입이 없는 식 본문 함수에서 return 사용 지원 중단
이슈: KTLC-288
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: Kotlin은 이제 함수의 반환 타입이 명시적으로 선언되지 않은 경우 식 본문(expression bodies) 내부에서
return을 사용하는 것을 지원 중단합니다.지원 중단 주기:
- 2.3.0: 경고 보고
- 2.4.0: 경고를 오류로 격상
타입 별칭을 통해 도입된 널 허용(nullable) 상위 타입으로부터의 상속 금지
이슈: KTLC-279
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: Kotlin은 이제 널 허용 타입 별칭으로부터 상속을 시도할 때 오류를 보고하며, 이는 이미 직접적인 널 허용 상위 타입을 처리하는 방식과 일치합니다.
지원 중단 주기:
- 2.2.0: 경고 보고
- 2.3.0: 경고를 오류로 격상
최상위 람다 및 호출 인자에 대한 제네릭 시그니처 생성 통합
이슈: KTLC-277
컴포넌트: 리플렉션(Reflection)
호환성 위반 유형: 동작
요약: Kotlin 2.3.0은 최상위 람다에 대해 호출 인자로 전달되는 람다와 동일한 타입 검사 로직을 사용하여, 두 경우 모두에서 일관된 제네릭 시그니처 생성을 보장합니다.
지원 중단 주기:
- 2.3.0: 새로운 동작 도입. 점진적 모드에서는 적용되지 않음.
실체화된(reified) 타입 파라미터가 교차 타입(intersection types)으로 추론되는 것을 금지
이슈: KTLC-13
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 실체화된 타입 파라미터가 교차 타입으로 추론되는 상황을 금지합니다. 이는 잘못된 런타임 동작으로 이어질 수 있기 때문입니다.
지원 중단 주기:
- 2.1.0: 실체화된 타입 파라미터가 교차 타입으로 추론될 때 경고 보고
- 2.3.0: 경고를 오류로 격상
타입 파라미터 제약을 통한 낮은 가시성 타입 노출 금지
이슈: KTLC-275
컴포넌트: 핵심 언어
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 함수나 선언 자체보다 더 제한적인 가시성을 가진 타입을 노출하는 타입 파라미터 제약(bounds) 사용을 금지하며, 함수의 규칙을 이미 클래스에 적용된 규칙과 일치시킵니다.
지원 중단 주기:
- 2.1.0: 문제가 되는 타입 파라미터 제약에 대해 경고 보고
- 2.3.0: 경고를 오류로 격상
표준 라이브러리(Standard library)
Char-to-number 변환 지원 중단 및 명시적인 digit 및 code API 도입
이슈: KTLC-321
컴포넌트: kotlin-stdlib
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 숫자 타입에 대한
Char.toX()및X.toChar()변환을 지원 중단하고, 문자의 코드(code) 및 숫자(digit) 값에 액세스하기 위한 새로운 명시적 API를 도입합니다.지원 중단 주기:
- 1.4.30: 새로운 함수를 실험적(Experimental)으로 도입
- 1.5.0: 새로운 함수를 안정(Stable) 상태로 승격. 기존 함수에 대해 대체 제안과 함께 경고 보고
- 2.3.0: 경고를 오류로 격상
Number.toChar() 함수 지원 중단
이슈: KT-56822
컴포넌트: kotlin-stdlib
호환성 위반 유형: 소스
요약:
Number.toChar()함수가 지원 중단되었습니다. 대신toInt().toChar()또는Char생성자를 사용하십시오.지원 중단 주기:
- 1.9.0:
Number.toChar()함수 사용 시 경고 보고- 2.3.0: 경고를 오류로 격상
String.subSequence(start, end) 함수 지원 중단
이슈: KTLC-282
컴포넌트: kotlin-stdlib
호환성 위반 유형: 소스
요약:
String.subSequence(start, end)함수가 지원 중단되었습니다. 대신String.subSequence(startIndex, endIndex)함수를 사용하십시오.지원 중단 주기:
- 1.0:
String.subSequence(start, end)사용 시 경고 보고- 2.3.0: 경고를 오류로 격상
kotlin.io.createTempDirectory() 및 kotlin.io.createTempFile() 함수 지원 중단
이슈: KTLC-281
컴포넌트: kotlin-stdlib
호환성 위반 유형: 소스
요약:
kotlin.io.createTempDirectory()및kotlin.io.createTempFile()함수가 지원 중단되었습니다. 대신kotlin.io.path.createTempDirectory()및kotlin.io.path.createTempFile()함수를 사용하십시오.지원 중단 주기:
- 1.4.20:
kotlin.io.createTempDirectory()및kotlin.io.createTempFile()함수 사용 시 경고 보고- 2.3.0: 경고를 오류로 격상
InputStream.readBytes(Int) 함수 숨김(Hide)
이슈: KTLC-280
컴포넌트: kotlin-stdlib
호환성 위반 유형: 소스
요약: 오랫동안 지원 중단되었던
InputStream.readBytes(estimatedSize: Int = DEFAULT_BUFFER_SIZE): ByteArray함수가 이제 숨겨집니다.지원 중단 주기:
- 1.3.0: 경고 보고
- 1.5.0: 경고를 오류로 격상
- 2.3.0: 함수 숨김
Kotlin/Native 스택 트레이스 출력을 다른 플랫폼과 통일
이슈: KT-81431
컴포넌트: Kotlin/Native
호환성 위반 유형: 동작
요약: 예외 스택 트레이스를 포맷할 때, 동일한 예외 원인(cause)이 이미 출력된 경우 추가적인 원인은 출력되지 않습니다.
지원 중단 주기:
- 2.3.20: Kotlin/Native 예외 스택 트레이스 포맷을 다른 Kotlin 플랫폼과 통일
Iterable<T>.intersect() 및 Iterable<T>.subtract() 동작 수정
이슈: KTLC-268
컴포넌트: kotlin-stdlib
호환성 위반 유형: 동작
요약:
Iterable<T>.intersect()및Iterable<T>.subtract()함수는 이제 각 수신자 요소를 결과 집합에 추가하기 전에 멤버십 테스트를 수행합니다. 결과 집합은Any::equals를 사용하여 요소를 비교하므로, 인자 컬렉션이 참조 동등성(예:IdentityHashMap.keys)을 사용하더라도 올바른 결과를 보장합니다.지원 중단 주기:
- 2.3.0: 새로운 동작 활성화
도구(Tools)
kotlin-dsl 및 kotlin("jvm") 플러그인 사용 시 지원되지 않는 KGP 버전 경고
이슈: KT-79851
컴포넌트: Gradle
호환성 위반 유형: 동작
요약: Kotlin 2.3에서 Gradle 프로젝트에
kotlin-dsl및kotlin("jvm")플러그인을 모두 사용하는 경우, 지원되지 않는 Kotlin Gradle 플러그인(KGP) 버전에 대한 Gradle 경고가 표시될 수 있습니다.마이그레이션 단계:
일반적으로 동일한 Gradle 프로젝트에서
kotlin-dsl과kotlin("jvm")플러그인을 모두 사용하는 것은 권장되지 않습니다. 이 설정은 지원되지 않습니다.컨벤션 플러그인, 사전 컴파일된 스크립트 플러그인 또는 기타 게시되지 않은 빌드 로직의 경우 세 가지 옵션이 있습니다:
kotlin("jvm")플러그인을 명시적으로 적용하지 마십시오. 대신kotlin-dsl플러그인이 자동으로 호환되는 KGP 버전을 제공하도록 하십시오.
kotlin("jvm")플러그인을 명시적으로 적용하려면embeddedKotlinVersion상수를 사용하여 내장된 Kotlin 버전을 지정하십시오.내장된 Kotlin 및 언어 버전을 업그레이드하려면 Gradle 버전을 업데이트하십시오. Gradle의 Kotlin 호환성 노트에서 호환되는 Gradle 버전을 확인할 수 있습니다.
kotlin-dsl플러그인을 사용하지 마십시오. 특정 Gradle 버전에 묶이지 않은 바이너리 플러그인의 경우 이 방법이 더 적절할 수 있습니다.최후의 수단으로 프로젝트에서 언어 버전을 2.1 이상으로 설정하여
kotlin-dsl플러그인의 충돌하는 동작을 재정의할 수 있습니다. 그러나 이 방법은 권장하지 않습니다.마이그레이션 중에 어려움이 발생하면 Slack의 #gradle 채널에서 지원을 요청하십시오.
지원 중단 주기:
- 2.3.0:
kotlin-dsl플러그인이 컴파일러의 호환되지 않는 언어 또는 API 버전과 함께 사용되는 경우를 감지하는 진단(diagnostic) 도입
AGP 버전 9.0.0 이상에서 kotlin-android 플러그인 지원 중단
이슈: KT-81199
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0에서 Android Gradle 플러그인(AGP) 버전 9.0.0 이상을 사용할 때
org.jetbrains.kotlin.android플러그인은 지원 중단됩니다. AGP 9.0.0부터 AGP가 Kotlin에 대한 내장 지원을 제공하므로kotlin-android플러그인은 더 이상 필요하지 않습니다.지원 중단 주기:
- 2.3.0:
kotlin-android플러그인이 AGP 버전 9.0.0 이상에서 사용되고,android.builtInKotlin및android.newDsl=falseGradle 속성이 모두false로 설정된 경우 경고 보고
testApi 구성 지원 중단
이슈: KT-63285
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은
testApi구성을 지원 중단합니다. 이 구성은 테스트 의존성 및 소스를 다른 모듈에 노출했지만, Gradle은 이러한 동작을 지원하지 않습니다.마이그레이션 옵션:
testApi()의 모든 인스턴스를testImplementation()으로 교체하고, 다른 변형에 대해서도 동일하게 수행하십시오. 예를 들어,kotlin.sourceSets.commonTest.dependencies.api()를kotlin.sourceSets.commonTest.dependencies.implementation()으로 교체하십시오.Kotlin/JVM 프로젝트의 경우 대신 Gradle의 테스트 픽스처(test fixtures)를 사용하는 것이 좋습니다. 멀티플랫폼 프로젝트에서 테스트 픽스처 지원을 원하는 경우 YouTrack에서 사용 사례를 공유해 주십시오.
지원 중단 주기:
- 2.3.0: 경고 보고
createTestExecutionSpec() 함수 지원 중단
이슈: KT-75449
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은
KotlinJsTestFramework인터페이스에서 더 이상 사용되지 않는createTestExecutionSpec()함수를 지원 중단합니다.지원 중단 주기:
- 2.2.20: 경고 보고
- 2.3.0: 경고를 오류로 격상
closureTo(), createResultSet(), 및 KotlinToolingVersionOrNull() 함수 제거
이슈: KT-64273
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 더 이상 사용되지 않는
closureDSL의closureTo(),createResultSet()함수를 제거합니다. 또한KotlinToolingVersionOrNull()함수가 제거됩니다. 대신KotlinToolingVersion()함수를 사용하십시오.지원 중단 주기:
- 1.7.20: 오류 보고
- 2.3.0: 함수 제거
ExtrasProperty API 지원 중단
이슈: KT-74915
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.0.0부터 지원 중단되었던
ExtrasPropertyAPI가 이제 Kotlin 2.3.0에서 내부(internal)로 변경됩니다. 대안으로 Gradle의ExtraPropertiesExtensionAPI를 사용하십시오.지원 중단 주기:
- 2.0.0: 경고 보고
- 2.1.0: 경고를 오류로 격상
- 2.3.0: API를 내부용으로 변경
KotlinCompilation의 HasKotlinDependencies 지원 중단
이슈: KT-67290
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은
KotlinCompilation의HasKotlinDependencies인터페이스를 지원 중단합니다. 의존성 관련 API는 이제 대신KotlinSourceSet인터페이스를 통해 노출됩니다.지원 중단 주기:
- 2.3.0: 경고 보고
npm 및 Yarn 패키지 관리자 내부 함수 및 속성 지원 중단
이슈: KT-81009
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: npm 및 Yarn 패키지 관리자와 관련된 다음 함수 및 속성이 지원 중단됩니다:
CompositeDependency.dependencyName,CompositeDependency.dependencyVersion,CompositeDependency.includedBuildDir.KotlinNpmInstallTask.Companion.NAME.LockCopyTask.Companion.STORE_PACKAGE_LOCK_NAME,LockCopyTask.Companion.RESTORE_PACKAGE_LOCK_NAME,LockCopyTask.Companion.UPGRADE_PACKAGE_LOCK.Npm.npmExec().NpmProject.require(),NpmProject.useTool().PublicPackageJsonTask.jsIrCompilation.YarnBasics.yarnExec().YarnPlugin.Companion.STORE_YARN_LOCK_NAME,YarnPlugin.Companion.RESTORE_YARN_LOCK_NAME,YarnPlugin.Companion.UPGRADE_YARN_LOCK.YarnSetupTask.Companion.NAME.지원 중단 주기:
- 2.2.0 및 2.2.20: 이러한 함수나 속성 사용 시 경고 보고
- 2.3.0: 경고를 오류로 격상
PhantomJS 지원 중단
이슈: KT-76019
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: PhantomJS가 더 이상 유지관리되지 않으므로, Kotlin 2.3.0은
NpmVersionsAPI의karmaPhantomjsLauncher속성을 지원 중단합니다.지원 중단 주기:
- 2.3.0: 경고 보고
테스트 실행 또는 JavaScript 런타임을 설정하는 클래스의 서브클래싱 금지
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 다음 클래스의 서브클래싱을 금지합니다:
KotlinTestKotlinNativeTestKotlinJsTestKotlinJsIrTargetKotlinNodeJsIrKotlinD8IrKotlinKarmaKotlinMochaKotlinWebpackTypeScriptValidationTaskYarnRootExtension이 클래스들은 서브클래싱되도록 설계되지 않았습니다. 서브클래싱에 대한 모든 사용 사례는 이제 Kotlin Gradle 플러그인 DSL에서 제공하는 설정 블록으로 처리되어야 합니다. 이러한 태스크에 대한 기존 API가 테스트 실행 또는 JavaScript 런타임 설정에 대한 요구사항을 충족하지 못하는 경우 YouTrack에 의견을 남겨 주십시오.
지원 중단 주기:
- 2.2.0: 이러한 클래스로부터 서브클래스를 생성하는 코드에 대해 경고 보고
- 2.3.0: 경고를 오류로 격상
ExperimentalWasmDsl 어노테이션 클래스 지원 중단
이슈: KT-81005
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 기능이
kotlin-plugin-annotations모듈로 이동함에 따라ExperimentalWasmDsl어노테이션 클래스가 지원 중단됩니다.지원 중단 주기:
- 2.0.20: 경고 보고
- 2.3.0: 경고를 오류로 격상
ExperimentalDceDsl 어노테이션 클래스 지원 중단
이슈: KT-81008
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
ExperimentalDceDsl어노테이션 클래스가 더 이상 사용되지 않으므로 지원 중단되었습니다.지원 중단 주기:
- 2.2.0: 경고 보고
- 2.3.0: 경고를 오류로 격상
JavaScript 유틸리티 지원 중단
이슈: KT-81010
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 다음 함수 및 속성은 내부적으로만 사용되므로 지원 중단되었습니다:
JsIrBinary.generateTsKotlinJsIrLink.modeNodeJsSetupTask.Companion.NAMEAppendable.appendConfigsFromDir()ByteArray.toHex()FileHasher.calculateDirHash()String.jsQuoted()지원 중단 주기:
- 2.2.0:
KotlinJsIrLink.mode속성 사용 시 경고 보고- 2.2.0:
NodeJsSetupTask.Companion.NAME속성 및 함수 사용 시 경고 보고- 2.2.20:
JsIrBinary.generateTs속성 사용 시 경고 보고- 2.3.0: 경고를 오류로 격상
마이그레이션된 D8 및 Binaryen 속성 지원 중단
이슈: KT-81006
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 다음 속성들은
org.jetbrains.kotlin.gradle.targets.js패키지에서org.jetbrains.kotlin.gradle.targets.wasm패키지로 마이그레이션되었기 때문에 지원 중단됩니다:
binaryen.BinaryenEnvSpecbinaryen.BinaryenExtensionbinaryen.BinaryenPluginbinaryen.BinaryenRootPluginBinaryenSetupTask.Companion.NAMEd8.D8EnvSpecd8.D8PluginD8SetupTask.Companion.NAME지원 중단 주기:
- 2.2.0: 경고 보고
- 2.3.0: 경고를 오류로 격상
NodeJsExec DSL의 create() 함수 지원 중단
이슈: KT-81004
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
NodeJsExecDSL의 컴패니언 객체에 있는create()함수가 지원 중단되었습니다. 대신register()함수를 사용하십시오.지원 중단 주기:
- 2.1.20: 경고 보고
- 2.3.0: 경고를 오류로 격상
kotlinOptions DSL 속성 지원 중단
이슈: KT-76720
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
kotlinOptionsDSL 및 관련KotlinCompile<KotlinOptions>태스크 인터페이스를 통해 컴파일러 옵션을 설정하는 기능은 Kotlin 2.2.0부터 새로운compilerOptionsDSL을 위해 지원 중단되었습니다. Kotlin 2.3.0은kotlinOptions인터페이스의 모든 속성에 대한 지원 중단 주기를 계속합니다. 마이그레이션하려면compilerOptionsDSL을 사용하여 컴파일러 옵션을 설정하십시오. 마이그레이션에 대한 안내는kotlinOptions {}에서compilerOptions {}로 마이그레이션을 참조하십시오.지원 중단 주기:
- 2.0.0:
kotlinOptionsDSL에 대해 경고 보고- 2.2.0: 경고를 오류로 격상하고
kotlinOptions의 모든 속성을 지원 중단- 2.3.0:
kotlinOptions의 모든 속성에 대해 경고를 오류로 격상
kotlinArtifacts API 지원 중단
이슈: KT-77066
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 실험적인
kotlinArtifactsAPI가 지원 중단되었습니다. 최종 네이티브 바이너리를 빌드하려면 Kotlin Gradle 플러그인에서 제공하는 현재 DSL을 사용하십시오. 마이그레이션에 충분하지 않은 경우 이 YouTrack 이슈에 의견을 남겨 주십시오.지원 중단 주기:
- 2.2.0:
kotlinArtifactsAPI 사용 시 경고 보고- 2.3.0: 이 경고를 오류로 격상
kotlin.mpp.resourcesResolutionStrategy Gradle 속성 제거
이슈: KT-74955
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 이전에
kotlin.mpp.resourcesResolutionStrategyGradle 속성은 사용되지 않아 지원 중단되었습니다. Kotlin 2.3.0에서는 이 Gradle 속성이 완전히 제거됩니다.지원 중단 주기:
- 2.2.0: 설정 시점 진단(configuration-time diagnostic) 보고
- 2.3.0: Gradle 속성 제거
이전 모드의 멀티플랫폼 IDE 임포트 지원 중단
이슈: KT-61127
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0 이전에는 멀티플랫폼 IDE 임포트의 여러 모드를 지원했습니다. 이제 이전 모드가 지원 중단되어 하나의 모드만 사용할 수 있습니다. 이전에는
kotlin.mpp.import.enableKgpDependencyResolution=falseGradle 속성을 사용하여 이전 모드를 활성화했습니다. 이제 이 속성을 사용하면 지원 중단 경고가 발생합니다.지원 중단 주기:
- 2.3.0:
kotlin.mpp.import.enableKgpDependencyResolution=falseGradle 속성 사용 시 경고 보고
정밀 컴파일 백업을 비활성화하는 속성 제거
이슈: KT-81038
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 1.9.0은 정밀 컴파일 백업(precise compilation backup)이라는 증분 컴파일을 위한 실험적 최적화를 도입했습니다. 성공적인 테스트 후, 이 최적화는 Kotlin 2.0.0에서 기본적으로 활성화되었습니다. Kotlin 2.3.0은 이 최적화를 거부하는
kotlin.compiler.preciseCompilationResultsBackup및kotlin.compiler.keepIncrementalCompilationCachesInMemoryGradle 속성을 제거합니다.지원 중단 주기:
- 2.1.20: 경고 보고
- 2.3.0: 속성 제거
CInteropProcess의 destinationDir 지원 중단
이슈: KT-74910
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
CInteropProcess태스크의destinationDir속성이 지원 중단되었습니다. 대신CInteropProcess.destinationDirectory.set()함수를 사용하십시오.지원 중단 주기:
- 2.1.0:
destinationDir속성 사용 시 경고 보고- 2.2.0: 이 경고를 오류로 격상
- 2.3.0:
destinationDir속성 숨김
CInteropProcess의 konanVersion 지원 중단
이슈: KT-74911
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
CInteropProcess태스크의konanVersion속성이 지원 중단되었습니다. 대신CInteropProcess.kotlinNativeVersion을 사용하십시오.지원 중단 주기:
- 2.1.0:
konanVersion속성 사용 시 경고 보고- 2.2.0: 이 경고를 오류로 격상
- 2.3.0:
konanVersion속성 숨김
KotlinCompile.classpathSnapshotProperties 속성 제거
이슈: KT-76177
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
kotlin.incremental.useClasspathSnapshotGradle 속성은 Kotlin 2.2.0에서 제거되었습니다. Kotlin 2.3.0에서는 다음 속성들도 제거됩니다:
KotlinCompile.classpathSnapshotProperties.useClasspathSnapshotKotlinCompile.classpathSnapshotProperties.classpath지원 중단 주기:
- 2.0.20:
kotlin.incremental.useClasspathSnapshot속성을 경고와 함께 지원 중단- 2.2.0:
kotlin.incremental.useClasspathSnapshot속성 제거- 2.3.0:
KotlinCompile.classpathSnapshotProperties.useClasspathSnapshot및KotlinCompile.classpathSnapshotProperties.classpath속성 제거
getPluginArtifactForNative() 함수 지원 중단
이슈: KT-78870
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.2.20에서 the
getPluginArtifactForNative()함수가 지원 중단되었습니다. 대신getPluginArtifact()함수를 사용하십시오.지원 중단 주기:
- 2.2.20: 경고 보고
- 2.3.0: 경고를 오류로 격상
모든 생성된 소스를 등록하는 방식 변경
이슈: KT-45161
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.0은 Gradle 프로젝트에서 생성된 소스를 등록할 수 있게 해주는 새로운 실험적(Experimental) API를
KotlinSourceSet인터페이스에 도입합니다. 이전에는kotlin속성을 사용하여 모든 생성된 소스에 액세스할 수 있었습니다. Kotlin 2.3.0부터 플러그인이나 빌드 로직이 모든 생성된 소스에 액세스해야 하는 경우, 대신allKotlinSources속성을 사용하십시오.마이그레이션 조언:
- 생성된 소스를 등록하려면
generatedKotlin속성을 사용하십시오.- 생성되지 않은 소스를 포함한 모든 소스에 액세스하려면
allKotlinSources속성을 사용하십시오.
kotlin.publishJvmEnvironmentAttribute 속성 지원 중단
이슈: KT-83678
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: Kotlin 2.3.20에서
kotlin.publishJvmEnvironmentAttribute속성이 지원 중단됩니다. 이 속성은 멀티플랫폼 라이브러리에 대해org.gradle.jvm.environment속성 게시를 비활성화하는 데 사용되었습니다. Kotlin 2.0.20부터는 기존의 의존성 해결 방식을 보장하기 위해org.gradle.jvm.environment가 기본적으로 게시됩니다.지원 중단 주기:
- 2.3.20: 경고 보고
- 2.4.0: 속성 제거
CleanableStore 인터페이스 및 CleanDataTask 클래스 지원 중단
이슈: KT-78104
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 더 이상 사용되지 않는
CleanableStore인터페이스 및CleanDataTask클래스가 지원 중단되었습니다.지원 중단 주기:
- 2.3.20: 경고 보고
kotlin.kmp.isolated-projects.support Gradle 속성 지원 중단
이슈: KT-79257
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 멀티플랫폼 프로젝트는 기본적으로 격리된 프로젝트(isolated projects)와 호환되며 다른 옵션이 없으므로,
kotlin.kmp.isolated-projects.supportGradle 속성이 지원 중단되었습니다.지원 중단 주기:
- 2.3.20: 경고 보고
kotlin.mpp.enableKotlinToolingMetadataArtifact Gradle 속성 지원 중단
이슈: KT-79924
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: 이제 멀티플랫폼 프로젝트에 대해
kotlin-tooling-metadata.json아티팩트가 항상 생성되므로,kotlin.mpp.enableKotlinToolingMetadataArtifactGradle 속성이 지원 중단되었습니다.지원 중단 주기:
- 2.3.20: 경고 보고
- 2.4.0: 지원 제거
LanguageSettings.enableLanguageFeature DSL 지원 중단
이슈: KT-82323
컴포넌트: Gradle
호환성 위반 유형: 소스
요약:
LanguageSettings.enableLanguageFeatureDSL은 Kotlin 컴파일러 테스트만을 위해 의도된 내부 컴파일러 설정을 노출했습니다. 따라서 이 DSL은 지원 중단됩니다.지원 중단 주기:
- 2.3.20: 경고 보고
"프로세스 외부(out of process)" 컴파일러 실행 전략 지원 중단
이슈: KT-83125
컴포넌트: Gradle
호환성 위반 유형: 소스
요약: "프로세스 외부(out of process)" 컴파일러 실행 전략은 빌드 도구 API(Build tools API)에서 지원되지 않으며 사용 가능한 가장 느린 전략입니다. Kotlin 2.3.20에서 이 전략은 "데몬(daemon)" 및 "프로세스 내부(in process)" 컴파일러 실행 전략을 위해 지원 중단됩니다.
지원 중단 주기:
- 2.3.20: 경고 보고
빌드 도구 제거(Build tool removal)
Ant 지원 제거
이슈: KT-75875
컴포넌트: Ant
요약: Kotlin 2.3.0은 빌드 도구로서의 Ant 지원을 제거합니다. 대신 Gradle 또는 Maven을 사용하십시오.
지원 중단 주기:
- 2.2.0: 경고 보고
- 2.3.0: 지원 제거
