2021년 8월 10일
1.5.30 릴리스가 다가오고, 업데이트된 옵트인 요구 사항, Kotlin/JS IR 백엔드 베타 버전, Gradle 플러그인에서 Java 도구 체인 지원, 표준 라이브러리의 정규식 및 Duration API 개선 등이 포함된 릴리스 후보를 제공하고 있습니다. 이를 시도하고 마주치는 문제를 보고하여 최종 릴리스 준비에 도움을 주세요.
우리는 Kotlin 1.5.30의 첫 번째 기능 세트를 1.5.30-M1 미리보기로 공개했습니다. 이 게시물에서는 Kotlin 1.5.30-RC에서 시도할 수 있는 몇 가지 더 많은 새로운 기능을 간략하게 설명하겠습니다:
- 업데이트된 옵트인 요구 사항 메커니즘, 더 일관되고 오류가 적은 방식으로
- 주석 클래스의 실험적 인스턴스화
- Kotlin/JS IR 백엔드가 베타로 승격되어 이전 버전에서 마이그레이션할 수 있습니다.
- Gradle 플러그인에서 Java 도구 체인 지원
- 정규식 및 Duration API 개선
옵트인 요구 사항
Kotlin의 옵트인 요구 사항 메커니즘이 Experimental 상태로 상당한 시간 동안 사용 가능했으며 Stable로 출시하기 위한 로드맵에 포함되어 있습니다. 1.5.30에서는 옵트인 요구 사항의 동작을 변경하여 더 일관되고 오류가 적은 것으로 만들었습니다:
- 마크된 API의 암묵적 사용에 대한 옵트인이 이제 필요합니다. 예를 들어, 함수의 반환 유형으로 사용되는 경우입니다.
- 옵트인 주석이 지금 더 많은 선언에 대해 금지되었습니다. 이에는 로컬 변수, 값 매개변수, 백킹 필드 및 게터가 포함됩니다.
- 재정의 메서드는 기본 선언에 있는 옵트인 주석만 가질 수 있습니다.
- 옵트인 주석에는 TYPE 및 TYPE_PARAMETER 대상이 없을 수 있습니다.
주석 클래스의 인스턴스화
주석 클래스의 인스턴스를 생성하는 기능은 Kotlin 로드맵에서의 또 다른 개선 사항입니다. 1.5.30-RC에서는 JVM에 대한 이 기능의 옵트인 지원을 추가하고 있습니다.
생성자를 호출하여 주석 인스턴스를 생성하는 것을 허용하려면 컴파일러 옵션 -language-version 1.6을 추가하여 언어 버전 1.6으로 전환하십시오. 이 기능에 대한 자세한 내용은 이 KEEP에서 확인할 수 있습니다.
베타 상태인 JS IR 백엔드
Kotlin/JS 컴파일러의 IR 기반 백엔드는 Kotlin 1.4.0 이후로 Alpha 상태였습니다. 이를 중단하지 않고 계속 작업하여 1.5.30에서 베타 상태가 될 것입니다. 이는 더 이상 중단 변경을 기대하지 않음을 의미하며, 향후 개발은 주로 안정화에 중점을 둘 것입니다.
마이그레이션 방법:
- 마이그레이션 가이드를 읽으세요.
- 일부 마이그레이션을 자동화하는 Kotlin/JS Inspection Pack IDE 플러그인을 설치하세요.
- 마이그레이션 문제를 YouTrack 이슈 트래커에 보고하세요.
Gradle: Kotlin 데몬의 JVM 옵션 및 빌드 스크립트에서의 Java 도구 체인 지원
Gradle 6.7은 Java 도구 체인을 지원하는 Java 버전을 프로젝트 컴파일에 선택하는 간단한 방법을 소개했습니다. 빌드 스크립트에서 필요한 버전을 선언하면 Gradle이 나머지 작업을 수행하며 호스트에서 찾거나 아직 설치되지 않았다면 다운로드 및 설치합니다.
Kotlin 1.5.30-RC는 Kotlin 컴파일 작업에 대한 Java 도구 체인 지원을 가능하게 합니다.
kotlin {
jvmToolchain {
(this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(<MAJOR_JDK_VERSION>)
}
}
Gradle와 관련된 다른 개선 사항으로는 Kotlin Gradle 데몬에 대한 JVM 옵션을 제공하는 새로운 방법이 포함되어 있습니다. 이제 gradle.properties에서 별도의 줄로 지정할 수 있습니다.
gradle.properties에서 지정하는 방법:
kotlin.daemon.jvmargs = "-Xmx486m -Xms256m -XX:+UseG1GC"
또는 build.gradle.kts에서 다음과 같이 지정할 수 있습니다:
kotlin {
kotlinDaemonJvmArgs = listOf("-Xmx486m", "-Xms256m", "-XX:+UseG1GC")
}
정규식 및 Duration API 개선
Kotlin의 정규식 API는 다음과 같은 새로운 실험적 함수를 받고 있습니다:
- matchesAt()는 지정된 위치의 문자열에서 정규식이 일치하는지 확인합니다. 이를 찾으면 일치 항목 자체를 반환하는 matchAt()과 함께 제공됩니다.
val releaseText = "Kotlin 1.5.30 is coming!"
val versionRegex = "\\d[.]\\d[.]\\d+".toRegex()
println(versionRegex.matchesAt(releaseText, 7)) // "true"
println(versionRegex.matchAt(releaseText, 7)?.value) // "1.5.30"
- splitToSequence()는 split()의 지연 형제로 문자열을 주어진 정규식 주위에서 분할하지만 결과를 Sequence로 반환합니다. CharSequence에도 유사한 함수가 추가되었습니다.
val phoneNumber = "+7 (123) 456-78-90"
val regex = "[ ()-]+".toRegex()
val parts = phoneNumber.splitToSequence(regex)
실험적인 Duration API도 1.5.30-RC에서 업데이트되었습니다:
- Duration.toString()의 출력은 더 가독성 있게 변경되었습니다. 예를 들어, Duration.minutes(2415).toString()은 40.3시간이 아니라 1일 16시간 15분을 출력합니다.
- Duration은 또한 문자열로부터 파싱하기 위한 새로운 함수들도 받았습니다:
1. parse() 함수는 Duration 객체를 Duration의 toString() 형식 또는 ISO 8601 기간을 나타내는 문자열에서 파싱합니다 (예: toIsoString()의 출력과 같은 형식).
2. parseIsoString() 함수는 ISO 8601 기간을 나타내는 문자열에서 Duration 객체를 파싱합니다. 이러한 파싱 함수들은 *OrNull() 대응 함수와 함께 제공됩니다.
import kotlin.time.Duration
import kotlin.time.ExperimentalTime
@ExperimentalTime
fun main() {
val isoFormatString = "PT1H30M"
val defaultFormatString = "1d 1h 15m"
println(Duration.parseIsoString(isoFormatString)) // "1시간 30분"
println(Duration.parse(defaultFormatString)) // "1일 1시간 15분"
//println(Duration.parseIsoString(defaultFormatString)) // 예외 발생
println(Duration.parseIsoStringOrNull(defaultFormatString)) // "null"
}
새로운 기능을 시도하고 문제를 보고하십시오.
Kotlin 1.5.30 기능은 모두 릴리스 후보 1.5.30-RC에서 사용 가능합니다(1.5.30-M1 미리보기에서 제시된 것 포함). IntelliJ IDEA 또는 Android Studio에서 다음과 같은 방법 중 하나로 손쉽게 설치할 수 있습니다:
- Early Access Preview 업데이트 채널을 사용하는 경우 IDE가 1.5.30-RC로 자동 업데이트 제안을 할 것입니다.
- Stable 업데이트 채널을 사용하는 경우, IDE에서 Tools | Kotlin | Configure Kotlin Plugin Updates를 선택하여 언제든지 Early Access Preview 채널로 변경할 수 있습니다. 그런 다음 최신 미리보기 릴리스를 설치할 수 있습니다. 자세한 내용은 이 지침을 확인하십시오.
언제든지 Kotlin을 지원하기 위해 최신 버전의 이러한 IDE를 다운로드할 수 있습니다:
- Kotlin 애플리케이션을 개발하기 위한 IntelliJ IDEA(여러 플랫폼 지원).
- Android 및 크로스 플랫폼 모바일 애플리케이션을 개발하기 위한 Android Studio.
참고: IntelliJ IDEA의 최신 버전인 2021.2는 Kotlin 1.5.30 미리보기를 지원하지 않습니다. 이미 이 버전으로 업그레이드했다면 JetBrains Toolbox 앱을 사용하여 이전 버전(2021.1)을 쉽게 설치하고 해당 버전에서 Kotlin 1.5.30-RC를 시도할 수 있습니다.
1.5.30-RC를 설치한 후에는 빌드 스크립트에서 Kotlin 버전을 1.5.30-RC로 변경하십시오.
문제가 발생하면:
- 문제를 당사 이슈 트래커인 YouTrack에 보고하십시오.
- Kotlin Slack의 #eap 채널에서 도움을 찾을 수 있습니다(초대를 받으세요).
- 최신 안정 버전으로 롤백하는 방법을 배우세요. 자세한 내용은 링크를 참조하십시오.
자세히 읽기
- Kotlin 1.5.30의 미리보기: 네이티브 Apple Silicon 지원, CocoaPods Gradle 플러그인을 위한 개선된 Kotlin DSL 등의 내용을 미리 보세요.
- Early Access Preview에 참여하세요.
원문
https://blog.jetbrains.com/kotlin/2021/08/kotlin-1-5-30-rc-released/
댓글