-
Kotlin 2.4.0 신기능 소개Kotlin🖥 2026. 7. 8. 20:21
What's New in Kotlin 2.4.0
Kotlin 2.4.0은 2026년 6월에 릴리스됐습니다.
가장 큰 흐름: 컨텍스트 파라미터 정식화, UUID API 안정화, 그리고 K1 컴파일러 완전 제거.
🔑 한눈에 보는 핵심
영역 핵심 변경 언어 Context parameters Stable, explicit backing fields Stable, 컬렉션 리터럴(실험적) 표준 라이브러리 kotlin.uuid.UuidStable,isSorted()계열 추가Kotlin/JVM Java 26 바이트코드 지원, 메타데이터에 애노테이션 기본 기록 Kotlin/Native CMS GC 기본 활성화, Swift export Alpha, LLVM 21 Kotlin/Wasm 증분 컴파일 Stable, WebAssembly Component Model(실험적) Kotlin/JS value class → TS 클래스로 export ⚠️ Breaking K1 컴파일러 미지원 ( -language-version=1.9불가)
1. 언어 기능 (Language)
✅ 이제 Stable이 된 기능들
- Context parameters — (context arguments / callable references 제외) 정식 기능으로 승격
- Explicit backing fields — 프로퍼티의 명시적 backing field
@all메타 타깃 — 프로퍼티 애노테이션을 모든 대상에 한 번에 적용- use-site 애노테이션 타깃 기본 규칙 개선
🧪 새로 추가된 실험적 기능
Explicit context arguments — 오버로드된 컨텍스트 파라미터의 모호성 해소
context(defaultEmailSender: EmailSender, defaultSmsSender: SmsSender) fun notifyUser() { sendNotification(emailSender = defaultEmailSender) sendNotification(smsSender = defaultSmsSender) } // 활성화: -Xexplicit-context-argumentsCollection literals — 대괄호 문법으로 컬렉션 생성
val shapes: MutableList<String> = ["triangle", "square", "circle"] val identityMatrix: DoubleMatrix = [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], ] // 활성화: -Xcollection-literalsImproved compile-time constants —
const가 unsigned 타입, 문자열 함수(.lowercase(),.uppercase(),.trim()), enum.name까지 평가// 활성화: -Xintrinsic-const-evaluation@IntroducedAt애노테이션 — 바이너리 호환을 위한 버전 기반 오버로드 자동 생성fun Button( label: String = "", color: Color = DefaultColor, @IntroducedAt("1.1") borderColor: Color = DefaultBorderColor, @IntroducedAt("1.2") borderStyle: Style = DefaultBorderStyle )참고: import 마지막 세그먼트에 대한 deprecation 경고가 더 이상 표시되지 않습니다.
2. 표준 라이브러리 (stdlib)
UUID API 안정화
kotlin.uuid.Uuid가 Stable (V4/V7 생성 함수 제외). UUID 비교, hex-and-dash / plain 텍스트 파싱, 잘못된 값에null반환 지원.정렬 여부 확인 함수 (새로 추가)
numbers.isSorted() users.isSortedBy(User::age) values.isSortedDescending() values.isSortedWith(comparator)Unsigned → BigInteger 변환 (JVM)
unsignedLong.toBigInteger() unsignedInt.toBigInteger()Map fallback 함수
mapForNull.getOrPutIfNull("user") { "default_user" } mapForMissing.getOrPutIfMissing("user") { "default_user" }
3. Kotlin/JVM
- Java 26 지원 — Java 26 바이트코드 생성 가능
- 메타데이터에 애노테이션 기본 기록 — 바이트코드와 함께 메타데이터에도 애노테이션 기록
4. Kotlin/Native
GC
- CMS GC 기본 활성화 — 기존 PMCS를 대체, concurrent marking으로 pause 시간·반응성 개선
- 비활성화:
kotlin.native.binary.gc=pmcs
- 비활성화:
성능 & 호환성
- devirtualization 분석 시 메모리 사용량 약 50% 감소
- Xcode 26.4 지원, LLVM 21 업데이트
- 최소 Apple OS 버전 상향
- iOS/tvOS: 14.0 → 15.0
- macOS: 11.0 → 12.0
- watchOS: 7.0 → 8.0
Swift 상호운용성
- Swift export → Alpha 승격, concurrency 지원 개선
suspend fun hello(): String { delay(1000); return "Hello Swift!" } // Swift: let msg = try await hello() - Flow → Swift AsyncSequence export
fun flowOfStrings(): Flow<String> = flowOf("hello", "any", "world") // Swift: for await element in flowOfStrings().asAsyncSequence() - Swift 패키지 import — Swift 패키지를 Gradle 의존성으로 선언 (iOS 앱)
5. Kotlin/Wasm
- 증분 컴파일 기본 활성화 & Stable
- WebAssembly Component Model 지원(실험적) — 서버리스/FaaS 앱 가능
- Chrome DevTools 디버깅 개선 — 내부 변수에
~접두사로 가시성 향상
6. Kotlin/JS
- value class export — inline value class가 일반 TypeScript 클래스로 export
js()인라이닝에서 ES2015 기능 지원 —const,let, 화살표 함수, spread, 템플릿 문자열fun spreadExample(): dynamic = js(""" const sum = add(...nums); const b = [...a, 4, 5, 6]; """)- 타입 variance 보존 — TS 출력에
in/out유지 @JsNoRuntime애노테이션 — Kotlin 인터페이스를 메타데이터 없이 TS 인터페이스로 직접 매핑- 인터페이스 export 개선 (중첩 클래스·companion object)
7. 빌드 도구
Gradle
- 호환: Gradle 7.6.3 ~ 9.5.0, 최소 AGP 8.5.2
- 플랫폼 간 일관된 모듈 이름:
{group}:{project_name} - Kotlin/JVM 컴파일러 메시지를 Gradle Problems API로 전달
Maven
- JVM 타깃 자동 정렬 — Java 컴파일러 버전에 맞춰 자동 정렬
- Maven Toolchains 지원 —
JAVA_HOME과 독립적으로 JDK 버전 설정
8. 컴파일러 & 플러그인
- 모듈 내 인라인 함수 일관 인라이닝 —
.klib컴파일 시 같은 모듈의 inline 함수 인라이닝 (기본 활성화, 끄기:-Xklib-ir-inliner=disabled) - Partial linkage 항상 활성화 —
-Xpartial-linkagedeprecated (로그 레벨:-Xpartial-linkage-loglevel=INFO|WARNING|ERROR) - kapt —
includeCompileClasspath로 불필요한 애노테이션 프로세서 제외 - Power-assert — 새 런타임 라이브러리(
CallExplanation,@PowerAssert) - Compose 컴파일러 —
StrongSkipping,IntrinsicRemember플래그가DeprecationLevel.ERROR(2.5.0에서 제거 예정)
⚠️ 9. Breaking Changes (중요)
- K1 컴파일러 완전 미지원 —
-language-version=1.9더 이상 사용 불가 - Maven
KotlinScriptMojo를 통한 Kotlin 스크립트 실행 제거
🔭 다음 버전 (2.4.20, 2026년 9월 예정)
2.4.20-Beta1 기준: 코루틴 stack trace 복구, Kotlin/Native klib 기본 증분 컴파일, Kotlin/Wasm의 top-level
require()변경 및 companion object 초기화 순서 개선, Kotlin/JS 브라우저 테스트용 새 DSL.
참고 자료
'Kotlin🖥' 카테고리의 다른 글
Kotlin Collection Sort Null 원소 끝으로 보내기 (0) 2023.03.17 Stream 그게 뭔데.... Flow 그거 어떻게 하는건데? (0) 2022.10.24