Kotlin 컴포넌트의 안정성
Kotlin 컴포넌트의 안정성 (Stability of Kotlin components)
Kotlin 언어와 도구 모음은 JVM, JS, Native 타깃을 위한 컴파일러, 표준 라이브러리, 여러 부수 도구 등 많은 컴포넌트로 나뉘어 있어요. 그중 상당수는 공식적으로 **Stable(안정)**로 출시되었는데, 이는 편안한 업데이트와 언어 현대화 유지 원칙에 따라 하위 호환성을 유지하는 방식으로 진화한다는 뜻이에요. 다만 모든 컴포넌트가 Stable인 건 아니니까, 안정성 수준이 무엇을 의미하는지 알아두면 도움이 돼요.
본문
Kotlin 언어와 도구 모음은 JVM, JS, Native 타깃을 위한 컴파일러, 표준 라이브러리, 여러 부수 도구 등 많은 컴포넌트로 나뉘어요. 이 중 많은 컴포넌트가 공식적으로 Stable로 출시되었는데, 이는 편안한 업데이트와 언어 현대화 유지 원칙을 따라 하위 호환되는 방식으로 진화했다는 뜻이에요.
피드백 루프(Feedback Loop) 원칙에 따라 우리는 커뮤니티가 써볼 수 있도록 많은 것을 일찍 출시해요. 그래서 아직 Stable로 출시되지 않은 컴포넌트도 꽤 있죠. 어떤 것은 아주 초기 단계이고, 어떤 것은 더 성숙해 있어요. 각 컴포넌트가 얼마나 빨리 진화하고, 채택할 때 사용자가 감수할 위험이 얼마나 되는지에 따라 Experimental(실험적), Alpha, Beta로 표시해요.
안정성 수준 설명
이 안정성 수준들이 무엇을 의미하는지 간단히 정리해 볼게요.
Experimental은 "장난감 프로젝트에서만 써 보세요"라는 뜻이에요.
- 우리가 아이디어와 그 실현 가능성을 테스트하고 있어요. 몇몇 사용자가 써 보고 피드백을 주길 바라요. 범위는 최소이며, 기능은 언제든 바뀌거나 사라질 수 있어요. 안정성이나 호환성을 보장하지 않아요.
Alpha는 "이것이 프로덕션에 맞을지 테스트 중이에요"라는 뜻이에요.
- 이것을 제품으로 만들 의도를 가지고, 최종 형태를 다듬기 위해 사용자 가치와 시장 적합성을 검증하고 있어요. 기능 세트는 아직 불완전하며, 호환되지 않는 변경이 예상돼요. 가설이 성립하지 않으면 기능을 크게 바꾸거나 중단할 수도 있어요.
Beta는 "사용해도 좋고, 마이그레이션 문제를 최소화하도록 최선을 다할게요"라는 뜻이에요.
- 거의 완성 단계이며, 특히 지금 사용자 피드백이 중요해요.
- 그래도 100% 완성은 아니라서 (여러분의 피드백에 기반한 것 포함) 변경이 일어날 수 있어요.
- 최상의 업데이트 경험을 위해 미리 폐기(deprecation) 경고를 눈여겨봐 주세요.
Experimental, Alpha, Beta를 통틀어 사전 안정(pre-stable) 수준이라고 불러요.
Stable은 "가장 보수적인 시나리오에서도 써라"라는 뜻이에요.
- 완성된 상태예요. 엄격한 하위 호환성 규칙에 따라 진화할 거예요.
안정성 수준은 컴포넌트가 Stable로 출시되기까지 얼마나 걸릴지에 대해서는 아무것도 말하지 않아요. 출시 전에 컴포넌트가 얼마나 많이 바뀔지도 마찬가지예요. 단지 컴포넌트가 얼마나 빨리 변하고, 사용자가 업데이트 문제를 겪을 위험이 얼마나 되는지만 알려줘요.
Kotlin 컴포넌트용 GitHub 배지
Kotlin GitHub 조직은 다양한 Kotlin 관련 프로젝트를 호스팅해요. 어떤 것은 풀타임으로 개발하고, 어떤 것은 사이드 프로젝트예요.
각 Kotlin 프로젝트에는 안정성과 지원 상태를 설명하는 GitHub 배지가 두 개 있어요.
- 안정성 상태 — 각 프로젝트가 얼마나 빨리 진화하는지, 채택할 때 사용자가 감수하는 위험이 얼마나 되는지를 보여줘요. 안정성 상태는 Kotlin 언어 기능과 컴포넌트의 안정성 수준과 완전히 일치해요.
- Experimental 상태를 나타내요.
- Alpha 상태를 나타내요.
- Beta 상태를 나타내요.
- Stable 상태를 나타내요.
- 지원 상태 — 프로젝트 유지와 사용자 문제 해결에 대한 우리의 의지를 보여줘요. 지원 수준은 모든 JetBrains 제품에 동일해요. 자세한 내용은 JetBrains 오픈소스 문서를 참고하세요.
하위 컴포넌트의 안정성
안정한 컴포넌트에도 실험적인 하위 컴포넌트가 있을 수 있어요. 예를 들어요.
- 안정한 컴파일러에 실험적인 기능이 있을 수 있어요.
- 안정한 API에 실험적인 클래스나 함수가 포함될 수 있어요.
- 안정한 커맨드라인 도구에 실험적인 옵션이 있을 수 있어요.
어느 하위 컴포넌트가 Stable이 아닌지 정확히 문서화하도록 노력해요. 가능한 곳에서는 사용자에게 경고하고, Stable로 출시되지 않은 기능을 실수로 쓰지 않도록 명시적 동의(opt-in)를 요청해요.
Kotlin 컴포넌트의 현재 안정성
기본적으로 모든 새 컴포넌트는 Experimental 상태예요.
Kotlin 컴파일러
| Component | Status | Status since version | Comments |
|---|---|---|---|
| Kotlin/JVM | Stable | 1.0.0 | |
| Kotlin/Native | Stable | 1.9.0 | |
| Kotlin/JS | Stable | 1.3.0 | |
| Kotlin/Wasm | Beta | 2.2.20 | |
| Analysis API | Stable |
핵심 컴파일러 플러그인
| Component | Status | Status since version | Comments |
|---|---|---|---|
| All-open | Stable | 1.3.0 | |
| No-arg | Stable | 1.3.0 | |
| SAM-with-receiver | Stable | 1.3.0 | |
| kapt | Stable | 1.3.0 | |
| Lombok | Alpha | 2.3.20 | |
| Power-assert | Experimental | 2.0.0 |
Kotlin 라이브러리
| Component | Status | Status since version | Comments |
|---|---|---|---|
| kotlin-stdlib (JVM) | Stable | 1.0.0 | |
| kotlinx-coroutines | Stable | 1.3.0 | |
| kotlinx-serialization | Stable | 1.0.0 | |
| kotlin-metadata-jvm | Stable | 2.0.0 | |
| kotlin-reflect (JVM) | Beta | 1.0.0 | |
| kotlinx-datetime | Alpha | 0.2.0 | |
| kotlinx-io | Alpha | 0.2.0 | |
| kotlinx-collections-immutable | Alpha | 0.3.5 |
Kotlin Multiplatform
| Component | Status | Status since version | Comments |
|---|---|---|---|
| Kotlin Multiplatform | Stable | 1.9.20 | |
| Kotlin Multiplatform plugin for Android Studio | Beta | 0.8.0 | 언어와 별도로 버전 관리됨 |
Kotlin/Native
| Component | Status | Status since version | Comments |
|---|---|---|---|
| Kotlin/Native Runtime | Stable | 1.9.20 | |
| Kotlin/Native interop with C and Objective-C | Beta | 1.3.0 | C 및 Objective-C 라이브러리 임포트의 안정성 |
| klib binaries | Stable | 1.9.20 | cinterop klib는 제외, 아래 참고 |
| cinterop klib binaries | Beta | 1.3.0 | C 및 Objective-C 라이브러리 임포트의 안정성 |
| CocoaPods integration | Stable | 1.9.20 |
서로 다른 타깃에 대한 지원 수준에 대해 더 알아보려면 Kotlin/Native 지원 타깃과 호스트를 참고하세요.
빌드 도구
| Component | Status | Status since version | Comments |
|---|---|---|---|
| Kotlin Gradle plugin | Stable | 1.1.1 | Kotlin Multiplatform Gradle plugin은 Kotlin 1.9.20부터 안정적이에요. |
| Kotlin Maven plugin | Stable | 1.0.0 |
빌드 도구 API (BTA)
| Component | Status | Status since version | Comments |
|---|---|---|---|
| BTA for JVM | Beta | 2.4.20 | |
| BTA for JS | Alpha | 2.4.20 | |
| BTA for Wasm | Alpha | 2.4.20 |
빌드 도구 API는 현재 Kotlin/Native를 지원하지 않아요.
언어 도구
| Component | Status | Status since version | Comments |
|---|---|---|---|
| Scripting syntax and semantics | Alpha | 1.2.0 | |
| Scripting embedding and extension API | Beta | 1.5.0 | |
| Scripting IDE support | Beta | IntelliJ IDEA 2023.1 이상부터 사용 가능 | |
| CLI scripting | Alpha | 1.2.0 |
언어 기능과 설계 제안
언어 기능과 새로운 설계 제안에 대해서는 Kotlin 언어 기능과 제안 문서를 참고하세요.
더 알아보기
- Kotlin 진화 원칙 — 하위 호환성과 편안한 업데이트 원칙
- 언어 기능과 설계 제안 — 언어 기능의 안정성 수준
- Kotlin/Native 지원 타깃과 호스트 — 타깃별 지원 수준