Kotlin 2.4.x 호환성 가이드
Kotlin 2.4.x 호환성 가이드
"언어를 현대적으로 유지하기(Keeping the Language Modern)"와 "편안한 업데이트(Comfortable Updates)"는 코틀린 언어 설계의 근본 원칙 중 하나예요. 전자는 언어 진화를 방해하는 구성을 제거해야 한다는 뜻이고, 후자는 코드 마이그레이션이 최대한 매끄럽도록 그 제거를 사전에 잘 공지해야 한다는 뜻이에요.
대부분의 언어 변경은 업데이트 체인지로그나 컴파일러 경고 같은 다른 채널을 통해 이미 공지됐지만, 이 문서가 그것들을 모두 정리해 Kotlin 2.3에서 Kotlin 2.4로 마이그레이션하기 위한 완전한 참고 자료를 제공할게요. 이 문서에는 도구 관련 변경 사항 정보도 포함돼요.
기본 용어
이 문서에서는 여러 종류의 호환성을 소개해요.
- 소스(source): 소스 비호환 변경은 (오류나 경고 없이) 잘 컴파일되던 코드가 더 이상 컴파일되지 않게 만드는 변경이에요.
- 바이너리(binary): 두 바이너리 산출물을 서로 교체해도 로딩이나 링크 오류가 생기지 않으면 두 바이너리가 바이너리 호환된다고 말해요.
- 동작(behavioral): 같은 프로그램이 변경 전과 후에 서로 다른 동작을 보이면 그 변경은 동작 비호환(behavioral-incompatible)이라고 해요.
이 정의들은 순수한 코틀린에만 적용된다는 점을 기억하세요. 다른 언어(예컨대 자바) 관점에서의 코틀린 코드 호환성은 이 문서의 범위 밖이에요.
언어 (Language)
-language-version=1.9와 K1 컴파일러 지원 제거
- 이슈: KT-80590
- 컴포넌트: Compiler
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4부터 컴파일러는 -language-version=1.9를 더 이상 지원하지 않아요. 그 결과 K1 컴파일러도 더 이상 지원되지 않아요.
폐기 주기(Deprecation cycle):
- 2.2.0: 1.9 버전을
-language-version으로 쓸 때 경고를 보고. - 2.4.0: 경고를 오류로 승격.
Java 타입에 대한 유연한(flexible) 명시적 nullable 타입 인자 금지
- 이슈: KTLC-284
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 이전에는 코틀린에서 Java API를 호출할 때, 컴파일러가 명시적으로 지정된 nullable 타입 인자를 유연한 타입 인자로 취급할 수 있었어요. Kotlin 2.4.0은 nullable 타입 인자에 대해 이 동작을 더 이상 적용하지 않아서, 타입 안전성을 깨거나 런타임에 실패할 수 있는 코드에 대해 컴파일러가 이제 오류를 보고해요.
폐기 주기:
- 2.2.0: 유연한 타입으로 취급되는 명시적 nullable 타입 인자에 대해 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
확실히 비호환 타입에 대한 항상-거짓 is 검사 금지
- 이슈: KTLC-365
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 이제 검사되는 타입이 확실히 비호환이라 항상 거짓이 되는 무의미한 is 검사를 막아요. 이는 비호환 타입이 관련된 다른 연산과 동작을 일관되게 유지해요.
폐기 주기:
- 2.0.0: 확실히 비호환 타입에 대한
is검사에 경고를 보고. - 2.4.0: 경고를 오류로 승격.
인라인 함수에서 낮은 가시성의 타입·선언 노출 금지
- 이슈: KTLC-283
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 이제 인라인 함수가 그 인라인 함수 자체보다 낮은 가시성을 가진 타입과 선언을 노출하는 것을 막아요.
폐기 주기:
- 2.3.0: 인라인 함수에서 낮은 가시성의 타입·선언 노출에 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
애너테이션의 기본 use-site 대상 선택 변경
- 이슈: KTLC-391
- 컴포넌트: Core language
- 비호환 변경 유형: binary
간단 요약: Kotlin 2.4.0은 애너테이션을 매개변수·속성·필드로 전파하는 기본 규칙을 업데이트해요. 이는 재컴파일 후 애너테이션 처리, 리플렉션, 바이너리 메타데이터에 영향을 줄 수 있어요. use-site 대상을 지정하지 않으면 컴파일러는 이제 param과 property가 적용될 때 그것들을 사용하고, property가 적용되지 않을 때만 field를 사용해요.
use-site 대상을 명시적으로 지정할 수 있어요. 예를 들어 @Annotation 대신 @param:Annotation처럼요. 프로젝트 전체에 이전 기본 규칙을 사용하려면 빌드 파일에 -Xannotation-default-target=first-only를 추가하세요.
폐기 주기:
- 2.2.0: 새 기본 규칙이 선택된 use-site 대상을 바꿀 때 경고를 보고.
- 2.4.0: 새 기본 규칙을 활성화.
접근 불가능한 타입에 대한 암시적 참조 금지
- 이슈: KTLC-384
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 간접 의존성에서 접근 불가능한 타입을 암시적으로 참조하는 선언 사용은 이제 오류가 돼요.
마이그레이션하려면 접근 불가능한 타입을 선언하는 모듈에 명시적 의존성을 추가하거나, 중간 API가 그 타입을 노출하지 않도록 업데이트하세요.
폐기 주기:
- 2.3.0: 접근 불가능한 타입에 대한 암시적 참조에 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
Jakarta nullability 애너테이션 강제
- 이슈: KTLC-285
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 이제 jakarta.annotation.Nullable 또는 jakarta.annotation.Nonnull을 사용하는 Java 선언에 대해 코틀린에서 선언된 nullability를 강제해요. 이런 애너테이션으로 nullable로 표시된 Java 선언을 non-null 코틀린 타입에 할당하면 컴파일러가 오류를 보고해요.
폐기 주기:
- 2.2.0: Jakarta nullability 애너테이션이 붙은 Java 선언의 nullability 불일치에 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
호출 가능 참조(callable reference) 한정자에서 잘못 배치된 타입 인자 보고
- 이슈: KTLC-388
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 이제 호출 가능 참조의 왼쪽을 검사해서, 내부 클래스가 한정자의 잘못된 부분에 타입 인자를 담고 있으면 경고를 보고해요.
마이그레이션하려면 각 타입 인자가 그 타입 인자를 선언하는 클래스에 속하도록 참조를 업데이트하세요. 예를 들어 Inner<String, Int>::toString 대신 전체 타입 Outer<Int>.Inner<String>::toString을 작성하세요.
폐기 주기:
- 2.4.0: 호출 가능 참조의 왼쪽에 있는 타입 인자가 한정자의 다른 부분에 속할 때 경고를 보고.
nullable 상한 경계를 가진 reified 타입 매개변수의 클래스 리터럴에 대한 오류 보고
- 이슈: KTLC-370
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 nullable 상한 경계를 가진 reified 타입 매개변수에서 비롯된 타입의 표현식에 ::class를 사용하면 오류를 보고해요. 그런 표현식에 ::class를 쓰려면 명시적 null 검사나 !! 연산자로 값을 먼저 non-null로 만들어 주세요.
폐기 주기:
- 2.3.0: nullable 상한 경계를 가진 reified 타입 매개변수에서 비롯된 타입의 표현식에
::class를 쓸 때 경고를 보고. - 2.4.0: 경고를 오류로 승격.
익명 객체에서 선언 전 초기화 금지
- 이슈: KTLC-290
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 코틀린은 이제 익명 객체의 init 블록에서 속성을 선언하기 전에 그 속성을 초기화하면 오류를 보고해요.
폐기 주기:
- 2.2.20: 익명 객체의
init블록이 속성 선언 전에 속성을 초기화할 때 경고를 보고. - 2.4.0: 경고를 오류로 승격.
비-추상 Java sealed 클래스가 있는 when 표현식에 대한 완전성(exhaustiveness) 강제
- 이슈: KTLC-366
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 코틀린은 이제 완전성을 더 엄격하게 검사해서, 비-추상 Java sealed 클래스와 함께 when 표현식을 사용할 때 else 분기나 sealed 클래스 자체와 일치하는 분기를 요구해요. 이전에는 Java sealed 클래스 자체가 직접 인스턴스화될 수 있는데도 코틀린이 그런 when 표현식을 완전한 것으로 취급할 수 있었어요.
폐기 주기:
- 2.3.0: 비-추상 Java sealed 클래스를 가진 비-완전
when표현식에 경고를 보고. - 2.4.0: 경고를 오류로 승격.
매개변수가 너무 많은 getValue()와 setValue() 함수에서 operator 수정자 금지
- 이슈: KTLC-289
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: getValue() 또는 setValue() 함수에 operator 수정자를 붙이면, 컴파일러는 이제 필요한 수의 값 매개변수를 갖고 있는지 검사해요. getValue() 함수는 정확히 두 개의 값 매개변수, setValue() 함수는 정확히 세 개를 가져야 해요. 마이그레이션하려면 operator 수정자를 제거하거나 함수 시그니처를 바꾸세요.
폐기 주기:
- 2.2.20: 값 매개변수가 너무 많은
operatorgetValue()와setValue()함수에 경고를 보고. - 2.4.0: 경고를 오류로 승격.
제네릭 호출에서 일관되지 않은 타입 인자 금지
- 이슈: KTLC-373
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 제네릭 호출에서 타입 인자를 지정할 때, 어떤 타입 인자가 다른 타입 인자에 의존하는 상한 경계 제약을 위반하면 컴파일러가 이제 오류를 보고해요. 타입 매개변수가 서로 의존한다면 그 제약과 일치하는 타입 인자를 사용하세요. 예를 들어 Container<Alpha, BetaKey>() 대신 Container<Alpha, AlphaKey>()처럼요.
폐기 주기:
- 2.3.0: 제네릭 호출의 명시적 타입 인자가 타입 매개변수 사이의 상한 경계 제약을 위반할 때 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
javaClass 속성에 대한 참조 폐기
- 이슈: KTLC-375
- 컴포넌트: Kotlin/JVM
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0은 ::class.java와의 혼동을 줄이기 위해 javaClass 속성에 대한 속성 참조를 폐기해요. 객체의 런타임 Java 클래스를 얻으려면 .javaClass를, Java 클래스 참조를 얻으려면 ::class.java를 사용하세요.
폐기 주기:
- 2.4.0:
javaClass속성에 대한 속성 참조에 경고를 보고.
opt-in이 필요한 암시적 enum 생성자 호출에 대한 오류 보고
- 이슈: KTLC-359
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 코틀린은 이제 enum 항목이 opt-in이 필요한 enum 주 생성자를 암시적으로 호출할 때 오류를 보고해요. 마이그레이션하려면 enum 클래스나 생성자를 호출하는 각 enum 항목에 @OptIn을 추가하세요.
폐기 주기:
- 2.2.20: enum 항목이 opt-in이 필요한 enum 주 생성자를 암시적으로 호출할 때 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
enum 항목에 inline 수정자 금지
- 이슈: KTLC-361
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 코틀린은 이제 enum 항목에 inline 수정자를 사용하면 오류를 보고해요.
폐기 주기:
- 2.3.0: enum 항목에
inline수정자가 사용될 때 경고를 보고. - 2.4.0: 경고를 오류로 승격.
애너테이션 호출과 매개변수 기본값 밖에서 배열 리터럴 금지
- 이슈: KTLC-369
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 애너테이션 호출과 애너테이션 매개변수의 기본값 밖에서 배열 리터럴을 사용하면 이제 오류가 돼요. 마이그레이션하려면 arrayOf(...)를 사용하세요. 예를 들어 Roles(["admin", "user"]) 대신 Roles(arrayOf("admin", "user"))처럼요.
폐기 주기:
- 2.3.0: 애너테이션 호출과 애너테이션 매개변수 기본값 밖의 배열 리터럴에 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
CLI 컴파일러 모드에서 _root_ide_package_ 금지
- 이슈: KTLC-378
- 컴포넌트: Compiler
- 비호환 변경 유형: source
간단 요약: IDE 전용인 _root_ide_package_ 한정자를 CLI 컴파일러 모드에서 사용하면 이제 오류가 돼요.
폐기 주기:
- 2.3.20: CLI 컴파일러 모드의
_root_ide_package_참조에 경고를 보고. - 2.4.0: 경고를 오류로 승격.
vararg 변환이 있는 함수 참조의 동등성 수정
- 이슈: KTLC-385
- 컴포넌트: Kotlin/JVM
- 비호환 변경 유형: behavioral
간단 요약: Kotlin/JVM은 이제 변환 방식이 다른 함수 참조를 같지 않은 것으로 취급해요. 이전에 Kotlin/JVM은 같은 함수 참조가 또 다른 변환도 사용할 때 동등성 검사에서 vararg 변환을 무시했어요. 그래서 getDefault(::foo) == getDefaultAndVararg(::foo)가 한쪽만 vararg 변환을 사용하는데도 true를 돌려줄 수 있었죠.
폐기 주기:
- 2.4.0: 새 동작 도입.
컴패니언 객체 접근에 대한 opt-in 강제
- 이슈: KTLC-386
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 코틀린은 클래스 이름 참조가 opt-in이 필요한 컴패니언 객체로 해석될 때 opt-in 오류를 보고해요. 예를 들어 C가 opt-in 애너테이션으로 표시된 컴패니언 객체로 해석되면 val p = C에는 opt-in이 필요해요.
폐기 주기:
- 2.3.20: 컴패니언 객체 접근에 opt-in이 필요할 때 경고를 보고.
- 2.4.0:
ERROR수준 opt-in 요구 사항에 대해 경고를 오류로 승격.
중첩된 제네릭 인자를 가진 슈퍼타입에서의 타입 불일치 보고
- 이슈: KTLC-372
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 컴파일러는 중첩된 제네릭 인자를 가진 슈퍼타입이 관련된 타입 불일치를 감지하면 이제 오류를 보고해요. 이전에는 컴파일러가 이 불일치를 놓쳐서 나중에 ClassCastException으로 실패했어요. 마이그레이션하려면 수신자의 제네릭 타입과 일치하는 타입 인자를 사용하거나, 컴파일러가 추론하도록 명시적 타입 인자를 제거하세요.
폐기 주기:
- 2.4.0: 중첩된 제네릭 인자를 가진 슈퍼타입이 관련된 타입 불일치에 오류를 보고.
접근 불가능한 선언을 가진 추론된 타입 금지
- 이슈: KTLC-363
- 컴포넌트: Core language
- 비호환 변경 유형: source
간단 요약: 현재 범위에서 접근할 수 없는 선언을 포함하는 추론된 타입을 사용하면 이제 오류가 돼요.
폐기 주기:
- 2.3.0: 추론된 타입이 현재 범위에서 접근할 수 없는 선언을 포함할 때 경고를 보고.
- 2.4.0: 경고를 오류로 승격.
표준 라이브러리 (Standard library)
kotlin.io.readLine() 함수 폐기
- 이슈: KTLC-394
- 컴포넌트: kotlin-stdlib
- 비호환 변경 유형: source
간단 요약: kotlin.io.readLine() 함수가 폐기됐어요. readLine()!! 대신 readln() 함수를, readLine() 대신 readlnOrNull() 함수를 사용하세요.
폐기 주기:
- 2.4.0:
kotlin.io.readLine()을 쓸 때 경고를 보고.
AbstractCoroutineContextKey 및 관련 API 폐기
- 이슈: KT-84970
- 컴포넌트: kotlin-stdlib
- 비호환 변경 유형: source
간단 요약: AbstractCoroutineContextKey 클래스와 관련 API는 Kotlin 1.3부터 experimental이었고 오류가 나기 쉬운 것으로 드러났어요. 이런 이유로 이 클래스와 관련 getPolymorphicElement(), minusPolymorphicKey() 함수가 폐기돼요.
폐기 주기:
- 2.4.0: 폐기된 API를 쓸 때 경고를 보고.
무한 경계에 대한 Random.nextDouble() 계약 변경
- 이슈: KT-84368
- 컴포넌트: kotlin-stdlib
- 비호환 변경 유형: behavioral
간단 요약: Random.nextDouble(until)의 문서화된 계약은 이제 until 경계가 유한해야 한다고 요구해요. 유한한 경계를 대신 사용하세요.
폐기 주기:
- 2.4.0: 새 동작 활성화.
도구 (Tools)
레거시 Kotlin/JS 컴파일러 타입 선택 API 폐기
- 이슈: KT-64275, KT-84753
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0은 레거시 Kotlin/JS 컴파일러 타입을 선택하는 것과 관련된 폐기된 Gradle API를 제거해요.
추가로 KotlinJsCompilerType enum과 컴파일러 타입 매개변수를 가진 KotlinProjectExtension.js() 오버로드들이 폐기돼요. 마이그레이션하려면 js() 타깃 선언에서 컴파일러 타입 인자를 제거하고 js {} 블록을 대신 사용하세요.
폐기 주기:
- 1.8.0: 레거시 Kotlin/JS 컴파일러 타입 상수를 폐기.
- 2.4.0: 폐기된 레거시 컴파일러 타입 API를 제거하고,
KotlinJsCompilerType이나 컴파일러 타입 매개변수를 가진KotlinProjectExtension.js()오버로드를 쓸 때 경고를 보고.
Kotlin Android 확장에서 sourceSets 폐기
- 이슈: KT-74451
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: KotlinAndroidProjectExtension의 sourceSets 속성이 폐기됐어요. 마이그레이션하려면 Android Gradle 플러그인의 android { sourceSets { ... } } 블록을 통해 소스 집합을 설정하세요.
폐기 주기:
- 2.4.0:
KotlinAndroidProjectExtension에서sourceSets에 접근할 때 경고를 보고.
Kotlin/Native Apple 프레임워크용 consumable 설정 제거
- 이슈: KT-74503, KT-82230
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0은 Kotlin/Native Apple 프레임워크를 나가는 산출물(outgoing artifacts)로 노출하던 생성된 consumable Gradle 설정을 제거해요.
폐기 주기:
- 2.4.0: Kotlin/Native Apple 프레임워크용 consumable 설정 제거.
Kotlin Gradle 플러그인에서 폐기된 태스크·컴파일·DSL API 제거
- 이슈: KT-85509
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0은 다음 폐기된 Kotlin Gradle 플러그인 API를 제거해요.
컴파일 태스크 설정 API:
KotlinJvmCompile.parentKotlinOptionsKotlinJvmCompile.moduleNameKotlinJvmFactory.createKotlinJvmOptions()KotlinCompile및Kotlin2JsCompile태스크의BaseKotlinCompile.moduleName
Kotlin Multiplatform 계층 및 타깃 API:
DeprecatedKotlinTargetHierarchyDslKotlinMultiplatformExtension.targetHierarchyKotlinTargetComponent.sourcesArtifactsKotlinTarget.sourceSetsKotlinHierarchyBuilder.withoutCompilations()KotlinHierarchyBuilder.filterCompilations()KotlinHierarchyBuilder.withWasm()KotlinCompilation.defaultSourceSetName
Kotlin 컴파일 태스크 API:
KotlinCompilation.compileKotlinTaskProviderKotlinCompilation.compileKotlinTask
Kotlin 의존성 핸들러 API:
KotlinDependencyHandler.enforcedPlatform()KotlinDependencyHandler.platform()
기타 폐기된 태스크·확장 API:
KaptExtension.processorsKotlinTest.excludesKotlinTest.fileResolverKotlinTest.execHandleFactoryIncrementalSyncTask.destinationDir
마이그레이션하려면 이 API들의 사용을 제거하고, 폐기 진단이 제안하는 대체 항목을 사용하세요.
폐기 주기:
- 2.4.0: 폐기된 API 제거.
명시적 축소 클래스패스 스냅샷(shrunk classpath snapshot) 설정 폐기
- 이슈: KT-75837
- 컴포넌트: Build tools API
- 비호환 변경 유형: source
간단 요약: ClasspathSnapshotBasedIncrementalCompilationApproachParameters의 shrunkClasspathSnapshot 설정 매개변수가 폐기됐어요. 축소 클래스패스 스냅샷은 내부 증분 컴파일 캐시이므로, 컴파일러가 이제 이를 증분 컴파일러 메타데이터 workingDirectory 아래에서 자동으로 생성하고 관리해요. 마이그레이션하려면 shrunkClasspathSnapshot에 값을 전달하는 대신 자동 관리되는 스냅샷 파일을 사용하세요.
폐기 주기:
- 2.4.0:
shrunkClasspathSnapshot을 쓸 때 경고를 보고.
중복 ABI 검증 Gradle DSL 요소 제거
- 이슈: KT-80685
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0은 ABI 검증 Gradle DSL을 단순화하고 중복 설정 항목을 제거해요. 마이그레이션하려면 abiValidation { legacyDump { ... } } 대신 abiValidation {}에서 직접 리포트 설정을 구성하고, abiValidation { klib { enabled = ... } }를 제거하며, klib.keepUnsupportedTargets 대신 keepLocallyUnsupportedTargets를 사용하세요.
폐기 주기:
- 2.4.0: 중복 ABI 검증 DSL 요소 제거.
더 이상 쓰이지 않는 Compose 컴파일러 Gradle 플러그인 옵션 폐기
- 이슈: KT-85343
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: Kotlin 2.4.0에서 다음 폐기된 Compose 컴파일러 Gradle 플러그인 옵션은 사용 시 오류를 보고해요.
generateFunctionKeyMetaClassesenableIntrinsicRememberenableNonSkippingGroupOptimizationenableStrongSkippingModestabilityConfigurationFileComposeFeatureFlag.StrongSkippingComposeFeatureFlag.IntrinsicRemember
폐기된 기능 옵션 대신 featureFlags를, stabilityConfigurationFile 대신 stabilityConfigurationFiles를 사용하세요.
폐기 주기:
- 2.0.20:
enableIntrinsicRemember,enableNonSkippingGroupOptimization,enableStrongSkippingMode에 경고를 보고. - 2.1.0:
stabilityConfigurationFile에 경고를 보고. - 2.4.0: 경고를 오류로 승격.
더 이상 쓰이지 않는 Kotlin/Native Gradle 태스크 API에 대한 오류 보고
- 이슈: KT-85510
- 컴포넌트: Gradle
- 비호환 변경 유형: source
간단 요약: 다음 폐기된 Kotlin/Native Gradle 태스크 API는 사용 시 오류를 보고해요.
AbstractKotlinNativeCompile 속성:
additionalCompilerOptionslanguageSettingsprogressiveMode
KotlinNativeCompile 속성:
moduleNamekonanDataDirkonanHomelanguageVersionapiVersionenabledLanguageFeaturesoptInAnnotationsInUseadditionalCompilerOptions
CInteropProcess 속성:
outputFilekonanDataDirkonanHomedefFile
KotlinNativeLink 속성:
languageSettingsadditionalCompilerOptionskonanDataDirkonanHome
또한 KotlinNativeLink.compilation 속성이 제거돼요.
폐기 주기:
- 2.4.0: 폐기된 Kotlin/Native Gradle 태스크 API에 오류를 보고하고
KotlinNativeLink.compilation속성을 제거.
컴파일러 인자 값의 대소문자 불일치에 대한 경고 보고
- 이슈: KT-86059
- 컴포넌트: Build tools API
- 비호환 변경 유형: source
간단 요약: 고정된 값 집합을 받는 컴파일러 인자는 이전에 대소문자를 일관되지 않게 처리했어요. 어떤 인자는 아무 대소문자를 받았지만, 어떤 인자는 정확히 일치해야 했죠. Build tools API는 이제 이런 값에 대해 아무 대소문자를 받지만 경고를 보고해요. 예를 들어 Case mismatch for -module-kind: expected 'commonjs', got 'CommonJS'처럼요. 마이그레이션하려면 컴파일러 참조에 인자에 대해 나열된 대소문자를 사용하세요.
폐기 주기:
- 2.4.20: 컴파일러 인자 값의 대소문자가 기대 값과 일치하지 않을 때 경고를 보고.