Releases

Kotlin 1.5.30이 출시되었습니다!

Read this post in other languages:

Kotlin 1.5.30은 Kotlin 1.6.0으로 넘어가기 전의 마지막 추가 릴리스이므로 Kotlin 1.6.0에서 출시할 예정인 많은 실험적인 언어 기능과 표준 라이브러리 기능을 포함하고 있습니다. 사용해 보고 의견을 알려주세요. 여러분의 생각이 정말 좋은 결과로 이어질 수도 있으니까요! 이러한 실험적 기능에는 sealed when 구문, 옵트인 요구 사항에 대한 변경, 어노테이션 클래스의 인스턴스화, DurationRegex stdlib API의 개선 등이 포함되어 있습니다.

Kotlin 1.5.30을 사용하면 Apple 실리콘에 대한 기본 지원, Kotlin/JS IR 백엔드의 베타 승격, 멀티플랫폼 애플리케이션의 공유된 네이티브 코드에서 사용자 지정 cinterop 라이브러리를 사용할 수 있는 기능, Kotlin Gradle 플러그인에서 제공하는 Java 툴체인 지원 등 다양한 이점을 누릴 수 있습니다.

Kotlin 1.5.30으로 업데이트

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

  • Sealed when 구문, 상위 타입으로서 suspend 함수 지원, 옵트인 요구 사항에 대한 변경을 포함한 언어 개선.
  • 공유 기본 코드에서 사용자 지정 cinterop 라이브러리를 사용하고 출력 형식으로 XCFrameworks를 지원하는 기능을 포함한 멀티플랫폼 개선.
  • 어노테이션 클래스의 인스턴스화 및 null 값 가능성을 표시하는 어노테이션 지원의 구성 개선을 포함한 Kotlin/JVM 개선 사항.
  • Apple 실리콘에 대한 기본 지원 및 CocoaPods Gradle 플러그인에 대한 Kotlin DSL 개선 등의 Kotlin/Native 개선 사항.
  • JS IR 백엔드의 베타 승격 및 새 백엔드에 대한 디버그 경험 개선을 포함한 Kotlin/JS IR 개선 사항.
  • Java 툴체인 지원 및 Kotlin 데몬의 JVM 인수를 명시적으로 설정하는 더 간편한 방법 등의 Gradle 개선 사항.
  • DurationRegex API에 대한 표준 라이브러리 개선 사항.

 

Kotlin 1.5.30으로 자동 업데이트

IntelliJ IDEA 또는 Android Studio를 사용하는 경우, 새로운 Kotlin 릴리스가 출시되는 즉시 자동으로 업데이트할 수 있는 옵션이 제공됩니다.

Kotlin 1.5.30 설치에 대해 자세히 알아보세요.

참고: IntelliJ IDEA의 최신 버전인 2021.2는 Kotlin 1.5.30을 지원하지 않습니다. 이미 업그레이드한 경우 JetBrains Toolbox App을 사용하여 간편하게 IntelliJ IDEA 2021.1을 설치하고 해당 버전에서 Kotlin 1.5.30을 사용하거나 Kotlin 1.5.31 버그 수정 릴리스가 나올 때까지 기다려 주세요.

언어

Kotlin 로드맵에는 sealed when 구문에 대한 지원 추가, 옵트인 어노테이션 릴리스, 타입 추론 개선, 빌더 추론 안정화가 포함됩니다. 

Kotlin 1.5.30에서는 1.6.0으로 출시될 예정인 이러한 기능의 테스트 버전을 제공하여 로드맵에서 한 걸음 더 나아갔습니다.

Sealed when 구문

Sealed whenYouTrack에서 280개 이상의 표를 얻을 만큼 오랫동안 기다려온 기능입니다. 1.5.30에서 이 기능을 활성화하면 when 구문 중 하나가 완전하지 않은 경우 Kotlin 컴파일러에서 경고합니다. 이렇게 하면 자체 함수를 도입할 필요 없이 코드를 더 안전하게 만들 수 있습니다.

이 기능을 사용해 보고 이 YouTrack 티켓에 피드백을 남겨주세요. 

상위 타입으로서 suspend 함수 지원

Kotlin 1.5.30은 일부 제한이 있지만 suspend 함수 유형을 상위 인터페이스로 사용하는 기능을 테스트 버전으로 제공합니다. 이 부분은 Kotlin 코루틴 디자인에서 누락된 부분 중 하나입니다.

이 기능을 활성화하여 사용해 보고 이 YouTrack 티켓에 여러분의 피드백을 남겨주세요.

옵트인 요구 사항의 변경

옵트인 어노테이션 릴리스를 위한 추가적인 준비 단계로 Kotlin 1.5.30은 다음과 같이 작동합니다.

  • 다양한 대상에서 옵트인 요구 사항 어노테이션을 사용하고 선언하기 위한 새로운 규칙을 제시합니다. 
  • 실험적 API를 암시적으로 사용하는 경우에도 옵트인이 필요합니다. 예를 들어 함수의 반환 유형이 실험적 API 요소로 표시된 경우, 선언이 옵트인을 명시적으로 요구하는 것으로 표시되지 않은 경우에도 함수를 사용하려면 옵트인해야 합니다.

변경된 사항을 체험해보고 이 YouTrack 티켓에 의견을 남겨주세요. 

옵트인 요구 사항에 대해서도 자세히 알아보세요. 

재귀적 제네릭 타입에 대한 타입 추론 개선 

재귀적 제네릭 타입에 대한 타입 추론을 사용하면 Kotlin 1.5.30 컴파일러가 재귀적 제네릭인 경우에 해당 타입 매개변수의 상위 바운드에만 기초하여 타입 인수를 추론할 수 있습니다. 그러면 빌더 API를 만들기 위해 Java에서 자주 사용되는 재귀적 제네릭 타입으로 다양한 패턴을 생성할 수 있게 됩니다.

빌더 추론 제한 제거 

빌더 추론 제한 제거 사용을 설정하면 Kotlin 1.5.30이 빌더 추론 제한을 제거합니다. 빌더 추론이 추론할 수 있는 타입 정보를 지정할 수 있을 뿐만 아니라 여기에 get 함수를 사용할 수도 있습니다. 예를 들어, 명시적으로 지정된 타입 인수 없이 buildList()의 람다 인수 내에서 get()을 호출할 수 있습니다.

Kotlin Multiplatform

Kotlin 1.5.30에는 Kotlin Multiplatform에 대해 다음과 같은 개선 사항이 포함되어 있습니다.

  • 공유 기본 코드에서 사용자 지정 cinterop 라이브러리를 사용하는 기능을 통해 Kotlin/Native와 함께 제공되는 플랫폼 종속 라이브러리를 더욱 폭넓게 공유할 수 있습니다. 
  • 모든 Kotlin Multiplatform 프로젝트의 출력 형식으로 XCFrameworks 지원. XCFrameworks는 단일 번들에서 모든 대상 플랫폼 및 아키텍처에 대한 로직을 수집하는 도움을 주며, 애플리케이션을 App Store에 게시하기 전에 불필요한 아키텍처를 제거할 필요가 없습니다.
  • Android 아티팩트에 대한 새로운 기본 게시 설정. 이 설정은 기본적으로 모든 빌드 유형(예: 디버그 또는 릴리스)과 호환됩니다.  1.5.30 이전에는 Android용 멀티플랫폼 라이브러리를 게시할 때 maven-publish Gradle 플러그인에 의해 생성된 메타데이터에 모든 게시된 Android 변형의 빌드 유형 속성이 포함되었습니다. 이로 인해 라이브러리 소비자가 사용하는 동일한 빌드 유형과만 호환되었습니다. 

Kotlin/JVM

Kotlin 1.5.30에서 Kotlin/JVM은 다음과 같이 업데이트됩니다.

Kotlin/Native

Kotlin 1.5.30은 Kotlin/Native에 대해 다음과 같은 개선 사항을 제공합니다.

  • Apple Silicon에 대한 기본 지원. 이제 Rosetta 변환 환경을 사용하지 않고도 Intel 기반 Mac에서 지원되는 모든 대상에 대해 Apple Silicon 하드웨어에서 애플리케이션을 빌드할 수 있습니다. 1.5.30에 macosArm64, iosSimulatorArm64, watchosSimulatorArm64tvosSimulatorArm64 대상이 새롭게 도입되었고, 이를 통해 Apple Silicon에서 기본적으로 Kotlin 코드를 실행할 수 있습니다. 
  • CocoaPods Gradle 플러그인용 Kotlin DSL 개선. Kotlin 1.5.30은 Apple 대상에 대한 프레임워크 정의와 동일한 새로운 DSL 형식을 프레임워크에 제공하여 CocoaPods 구성을 개선합니다. 정적 또는 동적 유형인지 정의하고, 종속성 및 Bitcode 임베딩의 명시적 내보내기를 활성화하고, 다른 옵션도 구성할 수 있습니다.
  • Swift 5.5 async/await와의 실험적 상호 운용성. Swift 5.5 상호 운용성의 현재 상황에 대해 자세히 알아보고 YouTrack 이슈에 의견을 남겨주세요.
  • MinGW(Windows)에 대한 가져오기 라이브러리가 없는 DLL 연결 지원 중단. 성능이 더 우수하고 기타 개선 사항을 포함한 LLD 링커로 전환한 결과로 이러한 지원 중단이 이루어졌습니다. 이 YouTrack 이슈에서 LLD 링커로의 전환에 대한 의견 또는 우려 사항을 자유롭게 공유해 주세요.
  • 객체 및 컴패니언 객체에 대한 Swift/Objective-C 매핑 개선. 이제 .shared.companion 프로퍼티를 사용하여 기본 iOS 개발자는 보다 직관적인 방식으로 객체 및 컴패니언 객체에 액세스할 수 있습니다. 

Kotlin/JS

Kotlin 1.5.30은 Kotlin/JS에 대해 다음과 같은 개선 사항을 제공합니다.

Gradle

Kotlin 1.5.30은 Kotlin Gradle 플러그인 사용자 환경을 개선하기 위해 다음 기능을 도입했습니다.

  • Java 툴체인 지원. Gradle 6.7에는 프로젝트 컴파일에 사용할 JDK를 쉽게 선택할 수 있는 Java 툴체인 지원이 도입되었습니다. 빌드 스크립트에서 필요한 버전을 선언하기만 하면 Gradle이 나머지 작업을 수행하여 호스트 시스템에서 해당 버전을 찾거나 아직 없는 경우 다운로드하여 설치합니다. Kotlin Gradle 플러그인은 Kotlin/JVM 컴파일 작업을 위한 Java 툴체인을 지원합니다. Gradle 버전 6.1-6.6의 경우 UsesKotlinJavaToolchain 인터페이스를 사용하여 JDK 홈을 설정합니다.
  • Kotlin 데몬 JVM 인수를 명시적으로 지정하는 더 쉬운 방법. Kotlin 데몬에 대해 아무 지정도 하지 않으면 Gradle 데몬에서 인수를 상속합니다. 이제 특정 작업과 Kotlin 확장에 대한 인수를 build.gradle.kts 또는 gradle.properties에서 한 줄로 지정할 수도 있습니다.

build.gradle.kts

gradle.properties

표준 라이브러리

Kotlin 1.5.30에서는 표준 라이브러리의 DurationRegex API가 개선되었습니다.

Duration API 개선 사항

라이브러리 로드맵에 나타낸 바와 같이 Kotlin 1.6.0에서 Duration API를 안정화할 예정입니다. 즉, 이 API를 사용해 보고 변경이 필요한 부분에 대한 의견을 공유할 수 있는 기회가 이번이 마지막입니다. 이 KEEP에 의견을 남겨주시면 감사하겠습니다.

Kotlin 1.5.30은 API 개선 사항에 대한 테스트 버전을 제공합니다. Duration.toString()의 출력이 이제 더 읽기 쉬워졌습니다. 예를 들어, Duration.minutes(920).toString()은 이전의 920m 대신 15h 20m을 생성합니다.

음수 기간 앞에 이제 빼기 기호(-)가 붙으며 여러 요소로 구성된 경우 괄호로 묶입니다(-12m-(1h 30m)).

이 릴리스에서는 String에서 Duration 구문을 분석하기 위한 새로운 기능의 테스트 버전도 제공합니다.

  • parse()는 Duration의 toString() 형식 문자열이나 ISO 8601 기간을 나타내는 문자열(예: toIsoString() 출력)로부터 Duration 객체의 구문을 분석합니다.
  • parseIsoString()은 ISO 8601 기간을 나타내는 문자열로부터 Duration 객체의 구문을 분석합니다.
  • *OrNull()은 두 함수 모두에 대응합니다.

Regex API 개선 사항

Kotlin 1.5.30은 정규 표현식을 위한 새로운 실험적 기능을 제공합니다.

  • matchesAt()는 정규식이 문자열의 지정된 위치에 일치 요소를 가지고 있는지 여부를 확인합니다.
  • matchAt()는 일치 항목이 발견되면 이를 반환합니다.
  • splitToSequence()split()의 지연 대응함수입니다. 주어진 정규식의 일치 항목을 중심으로 문자열을 분할하지만 결과를 Sequence로 반환합니다. CharSequence에도 유사한 함수가 추가되었습니다.

Kotlin 1.5.30 설치 방법

이미 IntelliJ IDEA 또는 Android Studio를 사용하고 있는 경우 IDE에서 자동으로 Kotlin을 1.5.30으로 업데이트할 것을 제안합니다. 또한 이 지침을 따라 직접 업데이트할 수도 있습니다. 

다음 IDE의 최신 버전을 다운로드하여 광범위한 Kotlin 지원을 받을 수 있습니다.

  • IntelliJ IDEA – 다양한 플랫폼을 위한 Kotlin 애플리케이션 개발 지원
  • Android Studio –  Android 및 크로스 플랫폼 모바일 애플리케이션 개발 지원

또한 kotlinx 라이브러리를 호환되는 버전으로 업데이트하고 기존 프로젝트의 빌드 스크립트에 Kotlin 버전 1.5.30을 지정했는지 확인하세요.

명령줄 컴파일러가 필요한 경우, Github 릴리스 페이지에서 다운로드하세요.

문제가 발생한 경우,

최신 Kotlin 기능에 대한 최신 정보를 받아보세요! 이 게시물의 오른쪽에 있는 양식을 작성하시면 Kotlin 업데이트를 받아보실 수 있습니다.

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

외부 기여자 👏👏👏

이 릴리스에 포함된 풀 리퀘스트를 제공해 주신 모든 외부 기여자께도 감사의 마음을 전합니다.

Jinseong Jeon, pyos, Tianyu Geng, Mark Punzalan, Mads Ager, Ivan Gavrilovic, Steven Schäfer, Vladimir Ivanov, Hung Nguyen, Matthew Gharrity, Jiaxiang Chen, Ivan Kochurkin, Iaroslav Postovalov, Toshiaki Kameyama, Udi Cohen, Xin Wang, bracadabra

게시물 원문 작성자

Jessie Cho

Ekaterina Volodko

image description

Discover more