본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.1.50 is out

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

2017년 9월 22일

 

코틀린 1.1.50의 릴리스를 발표하게 되어 기쁩니다. 이 릴리스는 코틀린 1.1의 버그 수정 및 도구 업데이트입니다. 이 업데이트는 다음과 같은 사항을 포함하고 있습니다:

  • 새로운 버전 지정 체계를 도입합니다: 1.1.5-x 대신에 1.1.5x를 사용합니다.
  • JSR-305 어노테이션에 대한 지원을 개선합니다(JSR-305 클래스가 클래스패스에 없는 경우에도 nullability 문제를 경고로 보고하고, 체크는 동작합니다).
  • 생성된 바이트코드 성능을 개선합니다.
  • 기본적으로 primitive 배열을 TypedArray로 변환하도록 합니다, 죽은 코드 제거 도구에 소스맵 지원을 추가하고, JS 백엔드의 다른 개선 사항을 적용합니다.
  • 컴파일러와 IDE에서 많은 버그를 수정합니다.
  • IntelliJ 플러그인에서 새로운 검사, 성능 개선 및 버그 수정을 도입합니다.
  • Kotlin 직렬화 플러그인 미리보기를 위한 확장 지점을 지원합니다.

 

이 업데이트는 2016.3부터 2017.3까지의 모든 IntelliJ IDEA 버전 및 Android Studio 2.3 및 3.0과 호환됩니다.

 

본 릴리스의 모든 변경 사항은 변경 로그에서 확인하실 수 있습니다.

본 릴리스에 포함된 외부 기여자인 Andrius Semionovas, Dimach, Kirill Rakhman, Toshiaki Kameyama, scache, André Oriani, Daniil Vodopian, Nagesh Susarla 및 Knize에게 감사의 말씀을 전합니다.


버전 지정 체계 변경


본 릴리스부터는 1.1.5, 1.1.5-1, 1.1.5-2 등의 버전 대신에 1.1.50, 1.1.51, 1.1.52와 같은 버전을 사용합니다.

릴리스의 JS 아티팩트를 NPM에 동일한 버전 번호로 게시하고자 합니다. 여기서 문제는 빼기 기호 뒤의 숫자를 핫픽스 번호로 사용하는 반면, NPM은 빼기 기호가 있는 버전을 사전 릴리스로 간주합니다. 이로 인해 NPM은 Kotlin 1.1.5를 1.1.5-1보다 최신 버전으로 간주하지만, 실제로는 그 반대가 사실입니다. 버전 지정 체계를 변경하여 이 문제를 해결합니다.


JSR-305 어노테이션 지원 개선


Kotlin 1.1.4에서는 옵트인 기능으로 @ParametersAreNonnullByDefault와 같은 기본적인 널성 어노테이션의 초기 실험적 지원을 도입했습니다. Kotlin 1.1.50에서는 이러한 어노테이션을 통해 감지된 널성 문제가 기본적으로 경고로 보고됩니다. 이를 오류로 변환하려면 커맨드 라인 매개변수 -Xjsr305=strict을 추가하세요. 경고를 비활성화하려면 -Xjsr305=ignore를 사용하세요. (참고로, Kotlin 1.1.4에서 기본적인 널성 어노테이션을 활성화하기 위해 사용되던 -Xjsr305-annotations=enable 커맨드 라인 매개변수는 이제 더 이상 사용되지 않습니다.)

또한 이 릴리스부터는 Kotlin은 라이브러리의 종속성에서 JSR-305 어노테이션과 관련된 .jar 파일을 가지고 있을 필요가 없습니다. 이를 통해 해당 라이브러리에 대한 널성 정보를 읽기 위해 JSR-305 어노테이션을 가진 .jar 파일이 종속성으로 필요하지 않습니다.

컴파일러의 엄격 모드 JSR-305 지원은 실험적인 기능입니다.

 

JavaScript 백엔드 개선


Kotlin 1.1.50은 JavaScript 백엔드에 여러 가지 변경 사항을 도입했습니다. 이로 인해 JavaScript 백엔드에 대한 이진 전방 호환성이 깨집니다. 따라서 Kotlin/JS 1.1.50으로 컴파일된 라이브러리를 사용하려면 컴파일러를 1.1.50 또는 그 이상의 버전으로 업데이트해야 합니다. 여전히 이전 버전의 Kotlin 컴파일러로 컴파일된 라이브러리는 사용할 수 있습니다.


인라인 함수 개선


인라인 함수가 JS로 변환될 때 인라인된 함수 본문에서 완전한 자격 이름을 사용하지 않도록 변경되어, 결과 JS 파일의 크기가 줄어듭니다.


기본적으로 TypedArray로 변환되도록 설정된 TypedArrays


이제 기본적으로 primitive 배열은 TypedArray로 변환됩니다. 이 기능은 컴파일러에 -Xtypedarrays=false를 전달하여 비활성화할 수 있습니다. 이 변경 사항은 이진 전방 호환성에 영향을 미칩니다. 이전 컴파일러를 사용하여 새 라이브러리를 사용하는 것은 권장하지 않습니다.

새로운 배열 표현 방식은 Kotlin에서 JS 코드를 호출하는 것에도 영향을 미칠 수 있습니다. 일반 Array가 아닌 일반 배열이 필요한 JS 함수를 호출하려면 TypedArray를 일반 Array로 변환하는 toTypedArray 확장 함수를 사용하세요. toIntArray와 같은 함수는 일반 기본 유형의 배열을 TypedArray로 변환하는 데 사용될 수 있습니다.

val intArray: IntArray = intArrayOf(1, 2, 3) // Int32Array.of(1, 2, 3)
val arrayOfInts: Array<Int> = intArray.toTypedArray() // arrayOfInts는 [1, 2, 3]
val otherIntArray: IntArray = arrayOfInts.toIntArray() // otherIntArray는 Int32Array


이 변경 사항은 또한 런타임에서 Array와 IntArray 등을 구별할 수 있게 합니다.

 

val intArray: Any = intArrayOf(1, 2, 3) // Int32Array.of(1, 2, 3)
intArray is IntArray && intArray !is Array<*> // true

val arrayOfInts: Any = arrayOf(1, 2, 3) // [1, 2, 3]
arrayOfInts !is IntArray && arrayOfInts is Array<*> // true


DCE에서 소스맵 지원


Kotlin 1.1.50은 죽은 코드 제거 도구를 개선하여 그 출력을 디버깅하기 쉽게 만듭니다. 이 도구는 기존의 소스맵을 감지하고 코드와 함께 변환합니다. 자세한 내용은 JS 디버깅을 위한 튜토리얼을 참조하세요.


IntelliJ IDEA 플러그인 개선


새로운 릴리스에서 IntelliJ IDEA 플러그인에 많은 개선 사항이 포함되어 있습니다:

  • 성능 개선 사항
  • 가져오기 별칭의 코드 완성 지원
  • Gradle Kotlin DSL에 대한 더 나은 지원
  • 프로젝트에 구성된 서식 및 네이밍 규칙과 코드가 일치하는지 검증하는 검사 지원
  • 많은 다른 새로운 검사 및 퀵픽스

 

업데이트 방법


플러그인을 업데이트하려면 Tools | Kotlin | Configure Kotlin Plugin Updates로 이동한 다음 "Check for updates now" 버튼을 누르세요. 또한, Maven과 Gradle 빌드 스크립트에서 컴파일러와 표준 라이브러리 버전도 업데이트하는 것을 잊지 마세요.
새 릴리스에서 문제가 발생하는 경우 포럼이나 Slack(여기에서 초대 받기)에서 도움을 요청하거나 문제 추적기에 문제를 보고하시기 바랍니다.

코틀린을 사용해 보세요!

 

원문

 

https://blog.jetbrains.com/kotlin/2017/09/kotlin-1-1-50-is-out/

반응형

댓글