본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.1.60 is out

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

2017년 11월 13일

 

우리는 Kotlin 1.1.60의 새로운 버그 수정 및 툴링 업데이트를 발표하여 기쁩니다. 이 업데이트는 다음과 같은 내용을 포함하고 있습니다:

  • Kotlin/JS 증분 컴파일에 대한 실험적인 지원 추가
  • JSR-305 사용자 정의 널성 어노테이션 지원에 새로운 기능 추가
  • 자동 Parcelable 구현 생성기의 많은 버그 수정 및 IDE 지원 제공
  • Gradle 증분 빌드 개선
  • IntelliJ 플러그인에서 새로운 검사, 성능 향상 및 버그 수정 추가

 

이 업데이트는 IntelliJ IDEA 버전 2016.3부터 2017.3까지, 그리고 Android Studio 2.3, 3.0 및 3.1 Canary와 호환됩니다. 이 릴리스의 전체 변경 사항 목록은 변경 로그에서 확인할 수 있습니다.

이 릴리스에 포함된 외부 기여자인 Toshiaki Kameyama, Kirill Rakhman, Paul Merlin, Raluca Sauciuc, Yoshinori Isogai, Andrey Mischenko, Francesco Vasco, Jonathan Leitschuh, Denis Grachev 및 pivotal-vladimir에게 감사의 말씀을 전합니다.


Kotlin/JS 증분 컴파일


Kotlin 1.1.60은 개발 중에 빌드 시간을 크게 단축할 수 있는 Kotlin/JS Gradle 프로젝트의 증분 컴파일에 대한 실험적인 지원을 도입했습니다. 작은 지역 변경의 컴파일은 전체 비증분 재빌드에 비해 분이 아닌 초만 걸릴 수 있습니다.

이 기능은 기본적으로 비활성화되어 있으며, gradle.properties 또는 local.properties에서 kotlin.incremental.js=true를 설정하여 활성화해야 합니다.

이 기능을 시도하시고 문제가 발생하면 Kotlin 이슈 트래커에 보고해 주세요.


JSR-305 지원


JSR-305 널성 어노테이션 지원은 Kotlin 1.1.50에서 타입 퀄리파이어 닉네임 및 기본값으로 확장되었으며, 이 릴리스에서 더욱 개선되고 버그가 수정되었습니다.


모든 타입 사용에 대한 타입 퀄리파이어 기본값


JSR-305 기본 타입 퀄리파이어는 이제 ElementType.TYPE_USE를 지정하여 주석이 달린 범위 내의 모든 타입 사용에 영향을 미칠 수 있습니다. 이는 타입 인자, 타입 매개변수의 상한 경계 및 와일드카드 타입을 포함합니다:

 

@Nonnull(when = When.MAYBE)
@TypeQualifierDefault({ElementType.TYPE_USE})
public @interface NullableApi {
}

@NullableApi
interface Foo<T extends Bar> { // Upper bound T : Bar? in Kotlin
    List<String> baz(List<? extends Qux> qux);
    // in Kotlin: fun baz(qux: List<out Qux?>?): List<String?>?
}


사용자 정의 널성 어노테이션의 마이그레이션 상태


타입 퀄리파이어 닉네임 및 타입 퀄리파이어 기본값 어노테이션을 제공하는 라이브러리 관리자는 이제 어노테이션 유형에 @UnderMigration을 표시하여 어노테이션 유형의 마이그레이션 상태를 제어할 수 있습니다. 이 어노테이션은 새로운 kotlin-annotations-jvm 아티팩트에 포함되어 있으며 라이브러리에 의존성으로 추가해야 합니다. 예를 들어, Gradle에서 compile "org.jetbrains.kotlin:kotlin-annotations-jvm:1.1.60"와 같이 추가할 수 있습니다.

@UnderMigration(status = ...) 값은 주석이 달린 API 사용에서 감지된 널성 위반을 컴파일러가 어떻게 처리할지를 지정하며 MigrationStatus.STRICT, MigrationStatus.WARN 및 MigrationStatus.IGNORE 중 하나가 될 수 있습니다. 각각 오류, 경고 또는 무시를 생성하게 됩니다.

참고: MigrationStatus.STRICT는 현재 버전에서 이 옵션으로 컴파일된 코드의 미래 Kotlin 버전에서 여전히 올바른지에 대한 보장이 없는 익스페리멘털로 간주됩니다. 아마도 Kotlin 1.2.x 또는 Kotlin 1.3에서 더 엄격한 검사가 수행될 가능성이 큽니다.


마이그레이션 상태 제어를 위한 컴파일러 플래그


라이브러리 사용자 중에서 라이브러리 관리자가 제공하는 마이그레이션 상태와 다른 마이그레이션 상태를 설정해야 하는 경우 컴파일러 플래그를 다음 형식 중 하나로 전달하여 널성 검사를 설정할 수 있습니다.

  • -Xjsr305={strict|warn|ignore}: @UnderMigration 상태가 없는 모든 어노테이션에만 영향을 미칩니다.
  • -Xjsr305=under-migration:{strict|warn|ignore}: 모든 @UnderMigration 어노테이션의 동작을 재정의합니다.
  • -Xjsr305=@<fq.name>:{strict|warn|ignore}: fq.name은 특정 어노테이션의 완전한 경로 이름입니다. 마이그레이션 상태를 재정의합니다.

 

엄격한 모드도 실험적이며, Kotlin 1.1.60으로 컴파일된 소스가 미래 버전에서 컴파일될 수 있는 보장이 없습니다.

이러한 플래그는 조합할 수 있습니다. 예를 들어, -Xjsr305=ignore -Xjsr305=under-migration:ignore -Xjsr305=@org.library.MyNullable:warn은 컴파일러가 org.library.MyNullable을 제외한 모든 널성 어노테이션을 무시하고 후자에 대해 경고를 보고하도록 만듭니다.


Parcelable 지원


이 릴리스는 Kotlin 1.1.4에서 소개된 실험적인 자동 Parcelable 구현 생성기의 많은 알려진 문제를 수정하였으며, @Parcelize를 사용하는 데 도움이 되는 진단 및 빠른 수정과 함께 IDE 지원을 제공합니다.


Gradle 증분 빌드


Kotlin 1.1.60에서 Gradle 프로젝트의 테스트 소스 세트의 Kotlin 코드는 주요 소스가 변경될 때마다 증분 컴파일됩니다.

또한 몇 가지 버그 수정으로 최신 상태 검사가 더 신뢰성 있게 되어 JVM 타겟, 컴파일러 플러그인 구성 및 기타 변경 사항이 있는 경우에도 코드가 재컴파일되도록 합니다.


IntelliJ IDEA 플러그인 개선


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

  • Kotlin DSL을 사용하여 Gradle 프로젝트를 생성하는 새로운 프로젝트 마법사
  • 반복 가능한, 시퀀스 및 배열을 유형 불일치의 경우 서로 변환하는 빠른 수정
  • 유형 매개변수가 사용에서 필요한 경우 유형 매개변수를 reified로 만드는 빠른 수정
  • 많은 버그 수정 및 성능 향상

 

업데이트 방법


플러그인을 업데이트하려면 Tools | Kotlin | Configure Kotlin Plugin Updates로 이동한 다음 "Check for updates now" 버튼을 누르십시오(Android Studio 3.1의 경우 Plugin Repository의 별도 채널에서 플러그인을 다운로드하십시오). 또한 Maven 및 Gradle 빌드 스크립트에서 컴파일러와 표준 라이브러리 버전을 업데이트하지 않도록 주의하십시오.
보통처럼 새 릴리스에서 문제가 발생하면 포럼에서 도움을 요청하거나 Slack(여기에서 초대를 받으실 수 있음)에서 도움을 요청하거나 이슈 트래커에 문제를 보고해 주세요.

자, 코틀린을 이용해봅시다!

 

원문

 

https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-1-60-is-out/

반응형

댓글