2016년 2월 4일
드디어, Kotlin은 베타를 졸업하였으며 릴리스 후보 빌드를 소개해 드릴게요!
참고: 이전에 발표한 대로 RC는 모든 코드가 다시 컴파일되어 이전 버전으로 컴파일된 코드가 남지 않도록 해야 합니다(심지어 EAP 버전을 사용하고 있더라도 다시 컴파일해야 합니다!).
이 블로그 포스트에서는 베타 4 이후의 변경 사항을 개요로 제시하겠습니다. 라이브러리 변경 사항이 이 빌드에서 가장 큰 부분입니다. 또한 일부 버그가 수정되었습니다. 변경 사항의 전체 목록은 여기에서 확인하실 수 있습니다.
Hacker News 및 Reddit에서의 토론을 참조하세요.
언어
우선, 이전에 약속한 대로 정리가 이루어졌습니다:
- 이전에 폐기된 언어 구조는 이제 경고가 아닌 오류입니다.
- 이전에 바이트 코드에서 생성된 모든 폐기된 선언(인터페이스의 정적 필드 등)은 제거되었습니다.
다른 대부분의 언어 변경 사항은 작은 조정 및 버그 수정입니다. 일부 하이라이트는 아래에서 제시하겠습니다. 전체 목록은 여기에서 확인하세요.
대리자 필드에 대한 주석
새로운 @delegate: 주석 대상(사용 지점)이 이제 지원됩니다. 예를 들어, 대리자 개체를 @Transient로 표시하려면 다음과 같이 할 수 있습니다:
class Example {
@delegate:Transient
val foo by Lazy { ... }
}
바이트 코드에서 대리자를 보유하는 필드가 주석이 달립니다.
사용 지점 변이에 대한 유형 검사
사용 지점 변이(유형 프로젝션)와 관련된 짜증나는 버그를 해결했습니다. 이 결과로 컴파일러는 이전에 놓친 버그를 코드에서 찾을 수 있을 것입니다.
예를 들어, 다음 경우:
val ints = mutableListOf(1, 2, 3)
val strs = mutableListOf("abc", "def")
val comps: MutableList<out Comparable<*>> = ints
comps.addAll(strs) // ?! Adding strings to a list of ints
이 코드는 이전에 잘못 수용되었지만 마지막 줄에서 다음 메시지와 함께 이제 거부됩니다:
Projected type MutableList<out Comparable<*>> restricts the use of addAll()
Java 상호 운용성
Java의 get/set 쌍에서 유도된 합성 속성에 대한 일부 개선 사항:
- 이러한 선언(또한 SAM으로 변환된 메서드)은 이제 멤버와 동등하게 해결됩니다.
- 값을 반환하는 Java 설정기에 대한 지원이 추가되었습니다.
javax.annotations, Android SDK 등 여러 인기 있는 라이브러리에서 @Nullable/@NotNull 주석을 지원하도록 추가되었습니다.
EAP 사용자들은 다음을 보고했습니다:
Android 주석이 많은 코드를 "좋은 방식으로" 망가뜨렸습니다
그리고 다음과 같은 버그 수정을 강조했습니다:
- 개인 최상위 Kotlin 클래스는 이제 패키지 개인 Java 클래스로 컴파일됩니다.
- 비공개 클래스의 멤버는 비공개 인라인 함수에서 접근할 수 없습니다.
표준 라이브러리
- 라이브러리 코드가 더 미세한 패키지로 재배치되었습니다(소스 변경이 필요하지 않을 것입니다).
- 일부 함수가 인라인으로 변경되었습니다.
- 인라인 함수(대부분은 한 줄짜리) 중 많은 함수가 더 이상 Java 코드에서 호출할 수 없습니다. 이로 인해 앞으로 런타임 라이브러리 크기를 줄이는 데 도움이 될 것입니다.
- 모든 오래된 폐기 경고가 제거되었습니다.
- Map.getOrElse() 및 Map.getOrPut()은 이제 null 값과 연결된 키를 누락된 것으로 취급합니다.
- mutableListOf, mutableSetOf, mutableMapOf가 변경 가능한 컬렉션을 구성하기 위해 추가되었습니다.
- toMutableList는 toArrayList 대신에 추가되었습니다. 후자는 폐기 예정입니다.
- associate 및 associateBy가 맵 구성을 돕기 위해 추가되었습니다(toMap/toMapBy 대신).
- Comparator 및 비교 관련 함수는 kotlin.comparisons 패키지로 이동되었습니다(기본으로 가져오지 않음).
더 많은 변경 사항은 여기에서 확인하세요.
도구
Android Extensions를 Gradle에서 더 관용적인 방식으로 활성화하려면 이제 다음과 같이 말합니다:
apply plugin: 'kotlin-android-extensions
build.gradle 파일에 (각 프로젝트별로) 입력하세요.
이전 방식은 더 이상 작동하지 않으며, 출력에 수정 지침이 표시됩니다.
IDE 변경 사항
- 맵 엔트리 반복을 파괴 선언을 사용한 루프로 대체하는 의도
- 불필요한 가시성 한정자 정리를 위한 검사 및 빠른 해결책
- 변수가 null이 아님을 확인하는 'assert' 호출을 !! 또는 ?: error(...)로 대체하는 검사
- 해당 모듈에 대해 Kotlin 런타임이 구성되지 않은 경우 IDE에서 .kt 파일을 열 때 "Kotlin이 구성되지 않았음" 알림 표시
- toString() 메서드 생성 작업을 위한 작업
- 기본 생성자 매개변수로 멤버를 구현하는 지원 추가
- 유형 매개변수를 표시하는 매개변수 정보 팝업이 작동합니다
- 현재 파일의 미해결 식별자를 기반으로 이름 변형을 제안하는 완성
- when 식에 누락된 분기를 추가하는 빠른 해결책
- 중첩 클래스를 상위 수준으로 이동하거나 다른 최상위 클래스로 이동하는 지원 추가
- @Suppress가 이제 IDE 검사에 대해 작동합니다
설치 지침
IntelliJ IDEA 사용자의 경우 IDE에서 자동 업데이트가 작동하지 않을 수 있으므로 플러그인을 다운로드하여 zip 파일에서 설치해야 합니다:
- 여기에서 다운로드
- Preferences | Plugins로 이동하고 디스크에서 플러그인 설치를 클릭하십시오...
불편을 끼쳐드려 죄송합니다.
계속해서 주목해주세요
마지막 릴리스가 점점 가까워지고 있습니다. 그 동안 즐거운 Kotlin을 사용하세요! :)
부록: Hacker News 및 Reddit에서의 토론을 참조하세요.
원문
https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-release-candidate-is-out/
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] Kotlin 1.0.1 is Here! (0) | 2023.09.02 |
---|---|
[Kotlin Release Notes] Kotlin 1.0 Released: Pragmatic Language for the JVM and Android (0) | 2023.09.02 |
[Kotlin Release Notes] Kotlin 1.0 Beta 4 is Out! (0) | 2023.09.02 |
[Kotlin Release Notes] Kotlin 1.0 Beta 3 is Out! (0) | 2023.08.29 |
[Kotlin Release Notes] Kotlin 1.0 Beta 2 is Out! (0) | 2023.08.29 |
댓글