본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.2.30 is out

by 노력남자 2023. 9. 5.
반응형

2018년 3월 1일

 

Kotlin 1.2.30의 출시를 기쁜 마음으로 알려드립니다. 이 버전은 Kotlin 1.2의 버그 수정 및 툴링 업데이트입니다. 이 업데이트에는 다음과 같은 기능들이 포함되어 있습니다:

  • suspend 람다 표현식을 모방하는 표준 라이브러리에 새로운 선언 추가
  • kotlin.test에서 TestNG 지원 추가
  • 멀티플랫폼 프로젝트에서 Android 모듈 지원 추가
  • kapt에서 애노테이션 처리 오류 보고와 원본 Kotlin 선언으로의 적절한 링크를 제공하기 위한 새로운 기능 도입
  • IntelliJ 플러그인에서 많은 새로운 검사와 의도를 추가하고 성능을 향상시킴
  • 컴파일러와 IntelliJ 플러그인에서 버그 수정

 

이 업데이트는 IntelliJ IDEA 버전 2017.1부터 2017.3 및 2018.1 EAP, 그리고 Android Studio 3.0 및 Android Studio 3.1 (베타)와 호환됩니다.

이번 릴리스에 기여한 외부 기여자들에게 감사의 말씀을 전합니다: Toshiaki Kameyama, Kenji Tomita, Yoshinori Isogai, Kirill Rakhman, Vsevolod Tolstopyatov, Adam McNeilly, Chris Povirk, Cuihtlauac Alvarado, Emmanuel Duchastenier, Jake Wharton, Joscha Alisch, Rodrigo B. de Oliveira, Valeriy Zhirnov.

이번 릴리스의 모든 변경 내용은 changelog에서 확인하실 수 있습니다.


라이브러리의 변경 사항


이번 릴리스에는 다음과 같은 서명을 가진 Kotlin 표준 라이브러리에 새로운 함수가 추가되었습니다:

 

public inline fun <R> suspend(
    noinline block: suspend () -> R
): suspend () -> R = block

 

이 함수의 목적은 함수 리터럴을 억제 함수 타입의 값으로 래핑하여 억제 함수로 사용할 수 있도록 하는 것입니다. 예제:

 

suspend {
    val result = deferredResult.await()
    renderResult()
}.startCoroutine(completion)

 

이 함수를 추가하는 것은 미래의 Kotlin 버전에서 람다 표현식에 suspend 수정자를 점진적으로 도입하기 위한 예비 단계입니다. 함수 참조를 취하거나 레이블 표기 return@suspend를 사용하는 것과 같은 경우에는 수정자일 경우 유효하지 않은 사용법이기 때문에 금지되며, 수정자와 충돌하는 외부 suspend-named 함수 호출은 이제 사용하지 않도록 설정되었습니다.

또 다른 주목할만한 변경 사항은 kotlin.test에서 TestNG 프레임워크 지원을 추가한 것입니다 - 이는 기여자 Valeriy Zhirnov의 노고 덕분입니다! 새로운 아티팩트 kotlin-test-testng은 TestNG 위에 Asserter의 구현을 제공하며 kotlin-test-annotations-common의 테스트 주석을 TestNG 테스트 주석으로 매핑합니다.


Android 플랫폼 모듈 지원


실험적인 멀티플랫폼 프로젝트 기능의 업데이트는 Android 플랫폼 모듈 지원을 도입합니다. 이러한 모듈은 Gradle 빌드 스크립트에서 해당 플러그인을 적용하고 공통 모듈에서 공유 코드를 사용할 수 있습니다:

 

apply plugin: 'com.android.application'
apply plugin: 'kotlin-platform-android'
// ...

dependencies {
    expectedBy project(":multiplatform-app")
    // ...
}


간단한 프로젝트 레이아웃 예제는 Kotlin 저장소의 multiplatformAndroidProject에서 찾아볼 수 있습니다.


Kapt 진단 위치


Kotlin 1.2.30에서는 Kotlin 애노테이션 처리 도구인 kapt가 주석 처리 중 발생한 오류를 보고할 때 생성된 Java 스텁 대신 원본 Kotlin 코드의 위치로의 링크를 제공할 수 있습니다. 이 기능은 Gradle 빌드 스크립트 (build.gradle)에 다음 라인을 추가하여 활성화할 수 있습니다:

 

kapt {
    mapDiagnosticLocations = true
}


이렇게 하면 애노테이션 프로세서에서 오류 보고 시 Kotlin 파일의 원본 위치가 오류 보고서에 포함됩니다. 예를 들어:

 

e: src/main/kotlin/Foo.kt:47: error: @Provides methods must not be private

 

기존 kapt의 폐지


원래의 kapt는 1년 전에 폐지되었으며, 1.2.30에서는 이제 폐지 경고를 오류로 변경했습니다. 새로운 kapt (또는 kapt3)로의 마이그레이션 과정은 매우 간단하며, build.gradle 파일에서 kotlin-kapt 플러그인을 적용하면 됩니다:

 

apply plugin: "kotlin-kapt"


새 kapt로 문제가 발생하는 경우에는 알려주시기 바랍니다.


IntelliJ IDEA 플러그인 개선 사항


이번 릴리스에서는 IntelliJ IDEA Kotlin 플러그인에서 성능 향상, 버그 수정 및 새로운 검사와 의도를 포함한 다양한 개선 사항이 있습니다.


스코핑 함수 호출을 변환하는 의도


Kotlin 1.2.30은 스코핑 함수 let 및 run 호출을 서로 또는 apply로 변환하고, 반대로도 변환하는 새로운 의도를 추가했습니다:

 


IDE에서 패키지로 Kotlin 코드 붙여넣기

 

IntelliJ 플러그인은 이제 프로젝트 뷰의 패키지 항목에 Kotlin 코드를 붙여넣어 새로운 Kotlin 파일을 생성할 수 있습니다:

 

 

IDE 플러그인의 기타 변경 사항

 

  • 혼합된 Kotlin 및 Java 코드베이스에 대한 데이터 플로우 분석 ('데이터 플로우 분석 ...') 지원
  • Kotlin/JS 프로젝트에서 메인 함수로부터 Node CLI 애플리케이션의 실행 구성을 생성하는 옵션
  • Rename/Move 리팩토링에서 변경으로 인해 가능한 충돌에 대한 경고와 같은 개선 사항

 

컴파일러의 변경 사항


Kotlin 1.2.30 업데이트는 Kotlin 컴파일러의 알려진 여러 문제를 수정하고 성능을 향상시키는 내용을 포함하고 있습니다.

컴파일러는 이제 억제 함수 내에서 만든 꼬리 호출을 다른 Unit 반환 억제 함수로 최적화하여 더 효율적인 컴파일된 코드를 생성할 수 있게 되었습니다.


업데이트 방법


플러그인을 업데이트하려면 Tools | Kotlin | Configure Kotlin Plugin Updates를 사용하고 "Check for updates now" 버튼을 누르십시오. 또한, Maven 및 Gradle 빌드 스크립트에서 컴파일러와 표준 라이브러리 버전을 업데이트하는 것을 잊지 마십시오.
이전 릴리스에서 문제가 발생하는 경우, 포럼에서 도움을 요청하거나 Slack (여기에서 초대장 받기), 또는 이슈 트래커에서 문제를 보고하실 수 있습니다.

코틀린을 즐겨보세요!

 

원문

 

https://blog.jetbrains.com/kotlin/2018/03/kotlin-1-2-30-is-out/

반응형

댓글