Releases

Kotlin 1.5.20 출시!

Read this post in other languages:
English, Русский

Kotlin은 계속해서 동적 호출과 같은 최신 Java 기능을 도입하고 Java의 Lombok 및 JSpecify에 대한 지원을 추가하여 Java와의 상호 운용성을 개선하고 있습니다. 또한 플랫폼 전반에 걸쳐 표준 라이브러리의 일관성을 높이고 Gradle 도구 및 새로운 JS IR 백엔드에 투자하는 노력도 지속적으로 기울이고 있습니다.

Kotlin 1.5.20으로 업데이트하는 방법 보기

이 블로그 게시물에서는 이 릴리스의 새로운 기능을 개괄적으로 소개합니다.

Kotlin 1.5.20으로 자동 업데이트

IntelliJ IDEA 또는 Android Studio를 사용하는 경우, IDE에서 Kotlin의 새 릴리스가 출시되는 즉시 자동으로 업데이트할 수 있는 옵션을 제공합니다. Kotlin 1.5.20 설치에 대해 자세히 알아보세요.

Kotlin/JVM

최신 JVM 기능을 활용하도록 Kotlin은 동적 호출(invokedynamic)의 사용을 확장했습니다. Kotlin 1.5.0에서는 SAM 어댑터 컴파일을 디폴트로 지원하고 문자열 연결 및 람다에 대해 유사한 기능을 실험적으로 유지했습니다. Kotlin 1.5.20에서는 동적 호출에 대한 컴파일 문자열 연결 기능도 디폴트로 제공됩니다. Java와 최상의 상호 운용성을 유지하기 위해 Kotlin 1.5.20은 다음에 대한 실험적 지원을 제공합니다.
  • 동일한 모듈 내에서 Java의 Lombok 생성 메서드 호출. 실험 단계인 Lombok 컴파일러 플러그인을 사용하면 혼합된 Kotlin/Java 소스에서 Java의 Lombok 생성 선언을 사용할 수 있습니다. Lombok 어노테이션은 Java 소스에서만 작동하며 Kotlin 코드에서 사용하는 경우 무시됩니다. 지원되는 어노테이션에는 @With, @Data, @Getter, @Setter, @NoArgsConstructor, @RequiredArgsConstructor@AllArgsConstructor가 포함됩니다.
  • Java nullness 어노테이션의 표준 통합 세트를 포함하는 JSpecify 프로젝트. 이를 통해 Java와 상호 운용될 때 Kotlin이 null 안전성을 더 용이하게 유지하도록 더 상세한 null 값 가능성 정보를 제공할 수 있습니다. 선언, 패키지 또는 모듈 범위에 대한 기본 null 값 가능성을 설정하고 매개변수 null 값 가능성 등을 지정할 수 있습니다. JSpecify 프로젝트는 현재 활발히 개발 중입니다. API 및 구현은 언제든지 크게 변경될 수 있습니다.
다음은 Kotlin이 JSpecify 어노테이션을 처리하는 방식을 보여주는 예입니다.

Kotlin/Native

Kotlin/Native 컴파일러는 이제 Kotlin 코드에서 Objective-C 프레임워크로 문서 주석(KDoc)을 내보낼 수 있습니다. 이렇게 하면 이러한 주석이 프레임워크의 소비자에게 표시됩니다. 이 지원은 Swift에서도 작동하며 실험 단계에 있습니다. 또 다른 개선 사항은 하나의 배열 내에서 Array.copyInto() 연산에 관한 것입니다. 이 경우에 메모리 관리를 최적화한 덕분에 이제 이 연산이 최대 20배 더 빠르게 작동합니다(복사되는 개체 수에 따라 다름).

Kotlin/JS

Kotlin 1.5.0에서 이미 새로운 안정적 JVM IR 백엔드를 제공하므로 새로운 Kotlin IR 백엔드에서 유일하게 빠진 부분은 안정적 JS뿐입니다. Kotlin/JS IR 백엔드안정적으로 만들기 위한 작업을 계속하고 있으며 여러분의 의견이 큰 도움이 됩니다. 새 JS 백엔드로 쉽게 마이그레이션하려면 새 마이그레이션 가이드를 확인해 주세요. 이 가이드에서는 Kotlin/JS 코드가 새로운 IR 컴파일러와 작동하도록 하기 위해 변경해야 할 사항을 설명합니다. 문제가 발생하면 이슈 트래커인 YouTrack에 보고해 주세요.

Gradle

Kotlin 1.5.20은 몇 가지 도구 개선 사항을 제공합니다.
  • Kotlin 작업의 병렬 실행이 이제 Gradle 병렬 실행 메커니즘에 의해 완전히 제어됩니다. kotlin.parallel.tasks.in.project 프로퍼티는 더 이상 사용되지 않습니다.
  • kapt에서 어노테이션 처리기의 클래스 로더에 대한 캐싱을 험적으로 구현하여 특정한 경우에 kapt의 연속적인 Gradle 실행 속도를 높였습니다.

표준 라이브러리

Kotlin 1.5.20에서는 표준 라이브러리 Char 기능이 모든 플랫폼에서 계속 유사하게 작동합니다.
  • isLowerCase()/isUpperCase()는 이제 글자뿐만 아니라 모든 문자를 검사하여 모든 플랫폼에서 동일한 결과를 제공합니다.
  • digitToInt()는 이제 Kotlin/JVM, Kotlin/Native 및 Kotlin/JS와 같은 모든 플랫폼에서 모든 유니코드 숫자 문자를 지원합니다. 이전에는 Kotlin/JVM에 대해서만 완전한 지원을 제공했습니다.
최신 Kotlin 기능에 대한 최신 정보를 받아보세요! 게시물 오른쪽에 있는 양식에서 이메일 주소를 입력하고 Kotlin 업데이트를 계속 받아 보세요.

Kotlin 1.5.20 설치 방법

이미 IntelliJ IDEA 또는 Android Studio를 사용하고 있는 경우 IDE에서 자동으로 Kotlin을 1.5.20으로 업데이트할 것을 제안합니다. 또한 이 지침을 따라 직접 업데이트할 수도 있습니다. 다음 IDE의 최신 버전을 언제든지 다운로드하여 광범위한 Kotlin 지원을 받을 수 있습니다.
  • 다양한 플랫폼용 Kotlin 애플리케이션 개발을 도와주는 IntelliJ IDEA
  • Android 및 크로스 플랫폼 모바일 애플리케이션 개발을 도와주는 Android Studio
또한 kotlinx 라이브러리를 호환되는 버전으로 업데이트하고 기존 프로젝트의 빌드 스크립트에 Kotlin 버전 1.5.20을 지정했는지 확인하세요. 명령줄 컴파일러가 필요한 경우, Github 릴리스 페이지에서 다운로드하세요.

문제가 발생하면

추가 리소스 읽기 및 시청하기

외부 기여자 👏👏👏

이 릴리스에 포함된 풀 리퀘스트를 제공해 주신 모든 외부 기여자께도 감사의 마음을 전합니다. Alexey Stepanov, Jinseong Jeon, Tianyu Geng, Mark Punzalan, pyos, Mike Sinkovsky, Aleksey Kladov, Mads Sig Ager, Steven Schäfer, Ting-Yuan Huang, Victor Turansky, scaventz, Stefan M, Carlos Ballesteros Velasco, StefMa, Mattia Iavarone, Florian Kistner, Julius Kunze, Sergey Rubanov, Matthew Gharrity, enbandari, Campbell Jones, Br0mm, Kevin Galligan, yantimirov-timur, Ben Asher, Julia, Jared Woolston, Federico Tomassetti, Jens Klingenberg, Nicola Corti, vldf, Dominic Fischer, Martin Petrov, Renee Vandervelde, Robert Hencke, Rodrigo B. de Oliveira, Jeffrey McNally-Dawes, Scott Pierce, Sebsatian Keller, James Wald, Hyojae Kim, hungvietnguyen, Him188, Henrik Tunedal, AJ Alt, Giuseppe Barbieri, Francis Lavoie, Dico Karssiens, Dave Leeds, Thiago Henrique Hüpner, Thomas Vos, Daniel, Collin Monahan, Toshiaki Kameyama, Tristan Greeno, Vanessa Pyne, Charlie Jiang, Cedric Champeau, Boris Pristupa, Bingran, youta ogino, Aydar Mukhametzyanov, Ying Li, Zac Sweers, zadorotskas, ebukreev, kdnakt, 0xflotus, Abhishek Sudhakaran, Marcin Aman, Marcin Kraszewski, Matt Chowning, luca992, Lucas Diego, Louis CAD, Michael Blackman, Michael Hoisie, Lidonis Calhau, LanderlYoung, Kyle Kauffman, Miquel Beltran, Mohit Jayanti Gurumukhani, Muhammad Hakim Asy’ari, Márton Braun, Nekoyue, Nick Apperley, toxicbakery, KotlinIsland, Kjell Winblad, Kevin Waldock, Nils Kunze, Noah, Nwokocha wisdom maduabuchi, Paul Idstein, Keegan Witt, Jonas Seibert, Jiaming Lu

Kotlin 1.5.20으로 업데이트하기

게시물 원문 작성자

Discover more