2016년 9월 22일
우리는 기쁘게도 Kotlin의 새로운 버그 수정 및 도구 업데이트인 1.0.4 버전을 발표합니다. 이 버전은 IDE 및 빌드 도구와 관련한 많은 개선 사항과 JavaScript 지원을 가져왔습니다.
이번 릴리스에서 일부 기능을 구현한 외부 기여자인 Kirill Rakhman과 Yoshinori Isogai, 그리고 1.0.4 EAP 빌드를 시도하고 피드백을 보내주신 모든 분들에게 감사드립니다.
변경 내역의 전체 목록은 변경 로그에서 확인하실 수 있습니다. 특정 변경 사항 몇 가지를 간략히 소개하면 다음과 같습니다:
언어 변경: try/catch에서 'val' 할당
1.0.4 이전의 Kotlin 버전에서는 try/catch 문의 try와 catch 브랜치에서 동일한 val을 초기화할 수 있었습니다. 예를 들어 다음과 같은 코드가 허용되었습니다:
val x: Int
try {
x = 1
}
catch(e: Exception) {
x = 2
}
사실, 최종 변수를 두 번 할당할 수 있었으며, 이로 인해 두 가지 다른 값이 관찰될 수 있었습니다(예를 들어 try 문에서의 값이 람다에서 캡처되는 경우). Java에서는 동등한 코드가 허용되지 않습니다.
일관된 의미를 유지하기 위해 try와 catch 브랜치에서 동일한 val을 할당하는 코드는 Kotlin 1.0.4에서 경고가 되며, 1.0.5 버전에서는 오류가 될 것입니다. 대부분의 경우 코드를 표현식 형태로 변환하여 문제를 쉽게 해결할 수 있으며, IDE에서는 이 코드를 자동으로 변환하는 빠른 해결책을 제공할 것입니다. 위의 예제는 다음과 같이 변환될 것입니다:
val x = try {
1
}
catch(e: Exception) {
2
}
새로운 실험적 어노테이션 처리
Kotlin 1.0.4에는 새로운 실험적 어노테이션 처리 API 구현이 포함되어 있습니다. 이를 활성화하려면 build.gradle에 다음을 추가하십시오:
apply plugin: 'kotlin-kapt'
또한 기존 어노테이션 처리를 활성화하는 스니펫을 제거해야 합니다:
kapt {
generateStubs = true
}
새로운 어노테이션 처리에는 여전히 알려진 문제가 있을 수 있으며 모든 어노테이션 프로세서와 호환되지 않을 수 있습니다. 기본 kapt 어노테이션 처리 구현으로 문제가 발생한 경우에만 활성화하십시오.
JavaScript 백엔드 개선
JavaScript 백엔드는 이제 AMD, CommonJS 및 UMD 모듈 시스템과 호환되는 모듈로 코드를 컴파일할 수 있습니다. 자세한 내용은 문서를 참조하십시오.
이 외에도 한정된 형태의 리플렉션을 지원합니다. jsClass 속성을 사용하여 모든 객체의 런타임 클래스에 액세스하고 jsClass<TypeName>()를 사용하여 특정 클래스의 런타임 표현을 가져올 수 있습니다. 다음은 더 완전한 예시입니다:
class A
class B
class C
inline fun <reified T> foo() {
println(jsClass<T>().name)
}
println(A().jsClass.name) // "A" 출력
println(jsClass<B>().name) // "B" 출력
foo<C>() // "C" 출력
컴파일러 개선
- 호출 가능한 표현식에 대한 더 나은 타입 추론
- 여러 경우의 when 및 for 표현식에 대한 더 효율적인 바이트 코드
- 구문 오류 후 더 나은 파서 복구
- "Cast never succeeds" 경고가 잘못 보고되는 몇 가지 경우 수정
빌드 도구 개선
- Gradle 2.14 이상과 완전한 호환성.
- Gradle 증분 컴파일은 이제 하위 프로젝트 간 변경 사항을 추적할 수 있습니다.
- CLI 및 Ant 빌드는 기본적으로 Kotlin 리플렉션 라이브러리를 클래스패스에 추가합니다. no-reflect 스위치를 사용하여 비활성화할 수 있습니다.
IDE의 새로운 기능
- 이제 Java 파일에서 식 및 감시를 평가할 때 Kotlin 구문을 사용할 수 있습니다.
- “leaking this”를 감지하는 새로운 검사 - 불완전하게 초기화된 데이터에 액세스로 인한 가능한 NullPointerException 문제를 감지합니다.
- 람다를 함수 참조로 변환하는 의도
- Gradle 버전과 Kotlin 플러그인 버전 간 불일치를 감지하는 검사
- 많은 다른 새로운 의도, 검사 및 빠른 해결책
업데이트 방법
플러그인을 업데이트하려면 Tools | Kotlin | Configure Kotlin Plugin Updates로 이동하여 "Check for updates now" 버튼을 누르십시오. 또한 Maven 및 Gradle 빌드 스크립트에서 컴파일러 및 표준 라이브러리 버전을 업데이트하는 것을 잊지 마십시오.
새 릴리스로 문제가 발생하면 포럼에서 도움을 요청하거나 Slack(여기에서 초대받을 수 있음) 또는 이슈 트래커에서 문제를 보고하십시오.
Kotlin으로 더욱 효율적으로 개발하세요!
원문
https://blog.jetbrains.com/kotlin/2016/09/kotlin-1-0-4-is-here/
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] Kotlin 1.0.5 is here (0) | 2023.09.02 |
---|---|
[Kotlin Release Notes] Kotlin 1.1-M02 is here! (0) | 2023.09.02 |
[Kotlin Release Notes] First glimpse of Kotlin 1.1: Coroutines, Type aliases and more (0) | 2023.09.02 |
[Kotlin Release Notes] Kotlin 1.0.3 Is Here! (0) | 2023.09.02 |
[Kotlin Release Notes] Kotlin 1.0.2 is Here (0) | 2023.09.02 |
댓글