2021년 2월 4일
Kotlin 1.4.30 이 출시되었습니다. 이것은 마지막 1.4 버전의 업데이트이므로 1.5.0에서 안정화할 예정인 많은 실험적인 기능이 포함되어 있습니다. 이러한 기능을 시도하고 피드백을 공유해 주시면 감사하겠습니다. 이러한 새로운 업데이트를 테스트하는 것을 즐기시고 의견을 알려주세요.
이 릴리스에서 변경된 내용:
- 언어 기능 및 컴파일러
- 새 JVM 백엔드가 베타로 이동했습니다.
- Value 클래스, JVM 레코드 및 실드 인터페이스 업데이트.
- 빌드 도구
- Kotlin Gradle 플러그인에서 설정 캐시 지원.
- Kotlin/Native
- 컴파일 시간 개선.
- 64비트 watchOS 시뮬레이터 지원.
- Xcode 12.2 SDK 지원.
- Kotlin/JS
- 최상위 프로퍼티에 대한 프로토 타입 지연 초기화.
- 표준 라이브러리
- 텍스트 대소문자 변환을위한 로캘 중립적 API.
- 문자 변환을위한 명확한 API.
언어 기능 및 컴파일러
우리는 이러한 중요한 업데이트 중 두 가지를 별도의 블로그 포스트로 다루기로 결정하여 이러한 기능에 대한 자세한 내용을 제공할 수 있습니다.
컴파일러
새 JVM 백엔드가 베타로 이동했으며 이제 안정된 이진 파일을 생성합니다. 따라서 프로젝트에서 안전하게 사용할 수 있습니다.
업데이트에 대한 자세한 내용, 새 JVM IR 백엔드를 활성화하는 방법 및 안정화하는 데 도움이 될 수 있는 방법은 여기에서 확인할 수 있습니다.
새로운 언어 기능 미리보기
Kotlin 1.5.0에서 출시할 새 언어 기능 중 일부는 인라인 값 클래스, JVM 레코드 및 실드 인터페이스입니다. 이러한 기능에 대한 자세한 내용은 여기에서 확인할 수 있으며 간략한 개요는 다음과 같습니다.
인라인 클래스. 인라인 클래스는 이전에 별도의 언어 기능이었지만 이제 하나의 매개변수를 가진 값 클래스에 대한 특정 JVM 최적화가 되었습니다. 값 클래스는 미래에 다양한 최적화를 지원할 예정인 더 일반적인 개념을 나타내며 현재는 인라인 클래스를 지원하며 프로젝트 Valhalla가 사용 가능해지면 Valhalla 원시 클래스를 지원할 것입니다.
Java 레코드. JVM 생태계의 다른 개선 사항 중 하나는 Java 레코드입니다. 이것은 주로 데이터의 간단한 홀더로 사용되는 Kotlin 데이터 클래스와 유사합니다. Kotlin은 Java와의 상호 운용성이 항상 중요한 고려 사항이었으며 Kotlin 코드는 새로운 Java 레코드를 "이해"하고 Kotlin 속성이 있는 클래스로 본다.
Sealed 인터페이스. 인터페이스도 클래스처럼 실드로 선언할 수 있습니다. 실드 수정자는 인터페이스에도 동일하게 작동하며 실드 인터페이스의 모든 구현은 컴파일 시간에 알려집니다. 실드 인터페이스가 포함된 모듈이 컴파일되면 새로운 구현이 나타나지 않습니다.
따라서 이제 이러한 언어 기능을 시도하고 의견을 공유해 주시기 바랍니다. 이러한 기능에 대한 기대, 이러한 기능을 적용하려는 사용 사례 및 관련 의견이나 아이디어를 알고 싶습니다.
새 언어 기능에 대한 자세한 설명과 시도 방법에 대한 지침은 이 블로그 포스트에서 찾을 수 있습니다.
빌드 도구
Kotlin Gradle 플러그인에서 설정 캐시 지원
Kotlin 1.4.30에서 Kotlin Gradle 플러그인은 Gradle 설정 캐시와 호환됩니다. 이는 빌드 프로세스를 가속화합니다. 예를 들어 Kotlin을 Android에서 사용하는 Square는 1800 개의 모듈을 빌드합니다. 팀은 다음과 같은 숫자를 보고합니다.
- 첫 번째 빌드는 16 분 30 초가 걸렸습니다.
- 두 번째 빌드는 훨씬 짧았으며 5 분 45 초가 걸렸습니다.
구체적으로 Square의 경우 설정 캐시가 빌드당 구성 및 작업 그래프 생성에 1 분 10 초를 절약합니다.
명령을 실행하면 Gradle은 구성 단계를 실행하고 작업 그래프를 계산합니다. Gradle은 결과를 캐시하고 후속 빌드에 재사용하여 시간을 절약합니다.
이 기능을 사용하려면 Gradle 명령을 사용하거나 IntelliJ 기반 IDE를 설정하십시오. 그리고 예상대로 작동하지 않는 경우 YouTrack을 통해 보고하십시오.
이 기능은 아직 멀티 플랫폼에 대해 알파 버전입니다.
Kotlin/Native
컴파일 시간 개선
Kotlin 1.4.30에서 컴파일 시간을 개선했습니다. KMM 네트워킹 및 데이터 저장 샘플 프레임워크를 다시 빌드하는 데 걸리는 시간은 1.4.10에서 9.5초에서 1.4.30에서 4.5초로 감소했습니다.
컴파일러를 계속 최적화할 계획이며 YouTrack의 이슈를 팔로우할 수 있습니다.
64비트 watchOS 시뮬레이터 지원
2018년 10월 Kotlin 1.3.60 릴리스에서는 Apple Watch 시뮬레이터용 Kotlin 앱 빌드 지원을 소개했습니다. 지난 11월에는 Apple Watch 시뮬레이터 아키텍처가 i386에서 x86_64로 변경되어 이 기능을 사용하는 개발자에게 문제가 발생했습니다. 새로운 Kotlin/Native watchosX64 대상을 사용하여 64비트 아키텍처에서 watchOS 시뮬레이터를 실행할 수 있으며 이 기능은 watchOS 7.0 버전부터 작동합니다.
Xcode 12.2 SDK 지원
Kotlin/Native는 이제 Xcode 12.2를 지원합니다. Xcode 12.2 릴리스에 추가된 macOS 프레임워크는 이 Kotlin 업데이트와 함께 사용할 수 있습니다. 예를 들어 MLCompute 프레임워크는 이제 macOS 애플리케이션 개발자를 위해 사용 가능합니다.
Kotlin/JS
최상위 프로퍼티의 지연 초기화 프로토타입
우리는 최상위 프로퍼티의 지연 초기화를 실험적으로 사용할 수 있게 했습니다. 이에 대한 자세한 내용은 "What's new"에서 확인할 수 있습니다.
표준 라이브러리
텍스트 대소문자 변환을위한 로캘 중립적 API
이 릴리스에서는 문자열과 문자의 대소문자를 변경하는 실험적인 로캘 중립적 API를 소개합니다. 현재의 toLowerCase(), toUpperCase(), capitalize(), decapitalize() API 함수는 로캘에 민감하게 작동하며 몇 가지 경우에 명확하지 않고 불편합니다. 다른 플랫폼 로캘 설정의 경우 코드 동작에 영향을 미칩니다. 예를 들어 터키 로캘에서 "kotlin" 문자열을 toUpperCase로 변환하면 "KOTLİN"이 아닌 "KOTLIN"이 결과로 나타납니다. 이제 루트 로캘을 사용하므로 예상대로 작동합니다.
텍스트 처리 함수의 전체 변경 목록은 KEEP에서 확인할 수 있습니다. 이 API는 실험적이므로 피드백을 YouTrack에서 공유해 주시기 바랍니다.
문자 변환에 대한 명확한 API
현재 Char에서 숫자로 변환하는 함수는 UTF-16 코드를 다른 숫자 형식으로 표현한 것을 반환하며 종종 비슷한 문자열에서 숫자로 변환되는 String-to-Int 변환과 혼동됩니다.
이러한 혼란을 피하기 위해 Char 변환을 두 개의 명확한 함수 세트로 나누기로 결정했습니다. Char의 정수 코드를 가져 오고 Char를 구성하는 함수 및 Char를 나타내는 숫자 값으로 Char를 변환하는 함수입니다.
이 기능 또한 실험적이지만 1.5.0 릴리스에서 안정화할 계획입니다. 자세한 내용은 KEEP에서 확인할 수 있습니다.
1.4.30에 대한 모든 업데이트에 대한 자세한 내용은 "What's new"와 "New JVM Backend and Language Features" 블로그 게시물에서 확인하세요.
업데이트 방법
IntelliJ IDEA는 Kotlin 플러그인을 자동으로 1.4.30으로 업데이트하는 것을 제안할 것이며, 수동으로 업데이트하려면 이 지침을 따릅니다. Android Studio Arctic Fox용 Kotlin 플러그인은 나중에 릴리스됩니다.
이전 버전의 Kotlin으로 작성된 기존 프로젝트에서 작업하려면 프로젝트 구성에서 1.4.30 Kotlin 버전을 사용하십시오. 자세한 정보는 Gradle 및 Maven 문서를 참조하십시오.
GitHub 릴리스 페이지에서 명령 줄 컴파일러를 다운로드할 수 있습니다.
릴리스 세부 정보 및 호환 라이브러리 목록은 여기에서 확인할 수 있습니다.
새 릴리스로 문제가 발생하면 Slack에서 도움을 찾을 수 있으며 YouTrack에서 문제를 보고할 수 있습니다.
프로젝트를 Kotlin의 최신 버전으로 업데이트하기 전에 새로운 언어 및 표준 라이브러리 기능을 온라인에서 play.kotl.in에서 시도해 볼 수 있습니다.
외부 기여자
우리는 이 릴리스에 포함된 pull request를 통해 기여한 모든 외부 기여자에게 감사의 인사를 드립니다:
- Jinseong Jeon
- Toshiaki Kameyama
- pyos
- Mads Ager
- Steven Schäfer
- Mark Punzalan
- Ivan Gavrilovic
- Kristoffer Andersen
- Bingran
- Juan Chen
- zhelenskiy
- Kris
- Hung Nguyen
- Victor Turansky
- AJ
- Louis CAD
Kevin Bierhoff - Hollow Man
- Francesco Vasco
- Uzi Landsmann
- Dominik Wuttke
- Derek Bodin
- Ciaran Treanor
- rbares
- Martin Petrov
- Yuya Urano
- KotlinIsland
- Jiaxiang Chen
- Jake Wharton
- Sam Wang
- MikeKulasinski-visa
- Matthew Gharrity
- Mikhail Likholetov
원문
https://blog.jetbrains.com/kotlin/2021/02/kotlin-1-4-30-released/
댓글