본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.0 Beta 2 is Out!

by 노력남자 2023. 8. 29.
반응형

2015년 11월 16일

 

Kotlin 1.0 Beta의 첫 번째 업데이트가 도착했습니다! 안정화 작업을 진행 중이므로 주로 버그 수정 및 표준 라이브러리 변경사항이 포함되어 있습니다.


언어 변경사항


이제 type parameter에 대한 단일 인스턴스 상속 제약 조건을 강제하고 있습니다. 동일한 T가 List<Int> 및 List<String>을 상위 바운드로 가질 수 없습니다. 이것은 항상 클래스에 대해 금지되어 있었으며, 이제 동일한 검사가 유형 매개변수에도 적용됩니다.

스마트 캐스트가 불가능한 경우에 대한 진단이 개선되었습니다:

 

class C {
    var x: String? = ""
    fun foo(): String {
        if (x != null) return x // ERROR: 'x'는 멤버 변수이므로 String으로의 스마트 캐스트가 불가능합니다
    }
}

 

또한 컴파일러는 값이 항상 특정 지점에서 null인 경우에 경고를 표시할 수 있도록 지능적으로 개선되었습니다:

 

var x: Foo? = ...
if (x != null) return
x?.bar() // WARNING: x가 여기에서 항상 null이므로 bar()는 실행되지 않을 것입니다

 

라이브러리 변경사항


표준 라이브러리의 API를 정리하고 있습니다. 이번에 가장 눈에 띄는 변경사항은 범위에 관련되어 있습니다. "if (x in 1..10)" 또는 "for (i in 1..10)"과 같은 일반적인 사용 사례가 변경되지 않도록 의도했지만 내부적으로 일부 이름 변경 및 계층 구조 재정렬을 수행했습니다:

- Double 및 Float 프로그레션은 제거되었습니다.

 

- Byte 및 Short 프로그레션은 사용이 중지되었으며, 바이트와 숏에 대한 .. 연산자는 이제 IntRange를 반환합니다.

 

- Range<T>는 ClosedRange<T>로 이름이 변경되었으며 end 속성은 endInclusive로 변경되었습니다.

 

- Progression<T>은 IntProgression, LongProgression, CharProgression과 같은 구체적인 프로그레션 구현을 선호하는 방식으로 사용이 중지되었습니다.

 

- 프로그레션의 start 및 end 속성은 first 및 last로 이름이 변경되었습니다.

 

또한 문자열에 대한 유틸리티 확장이 가능한 경우에 CharSequence에서 작동하도록 일반화되었습니다.

filterIsInstance 확장은 이제 그 유형 매개변수에 대한 명시적인 지정을 필요로 합니다:

 

foo(list.filterIsInstance()) // 오류: 어떤 유형에 대한 검사를 수행하는 것인가요?!
foo(list.filterIsInstance<Bar>()) // OK: 우리는 Bar에 대한 검사를 수행하고 있습니다

 

참고: 런타임 라이브러리의 크기를 줄이기 위해(특히 Android 애플리케이션에 중요함) 표준 라이브러리에서 kotlin.dom 및 kotlin.browser 패키지를 제거했습니다. 이제 이 패키지들은 별도의 라이브러리인 kotlinx.dom으로 제공됩니다. 프로젝트에서 이러한 패키지 중 하나를 사용하고 있다면, 새로운 라이브러리를 종속성으로 추가하고 코드에서 import 문을 업데이트하십시오(kotlin.dom 및 kotlin.browser를 kotlinx.dom 및 kotlinx.browser로 변경). 그 외에는 라이브러리의 API가 변경되지 않았습니다.

 

기타 변경사항:

 

  • 추가된 내용
    • MutableLists 및 Arrays에 대한 장소 바꾸기 및 정렬
    • naturalOrder 및 reverseOrder 비교자
    • mapNotNull, mapIndexedNotNull, filterIndexed
    • String.toByte()
  • 사용 중지됨(코드 정리를 실행하여 코드를 마이그레이션하세요)
    • Function.toGenerator
    • toLinkedList
  • 제거됨
    • join, merge
    • Delegates.lazy
    • FileTreeWalk.filter, File.recurse, BufferedReader.lines 및 lineIterator
    • assert, check 및 require(지연 메시지 인수 없음)

 

Dokka

 

Dokka는 새로운 Kotlin 프로젝트의 문서 생성 도구로, 드디어 완전한 릴리스에 도달했습니다. Dokka는 혼합 언어 프로젝트를 지원하며 Kotlin 코드의 KDoc 주석과 Java 코드의 JavaDoc 주석을 이해합니다. Dokka는 Gradle, Maven 및 Ant용 플러그인을 제공하므로 프로젝트의 빌드 시스템과 쉽게 통합할 수 있습니다. Dokka를 다운로드하고 Dokka 프로젝트 사이트에서 더 많은 정보를 찾을 수 있습니다.

 

IDE 변경사항


- 이제 Java 정적 멤버 및 객체의 멤버에 대한 완성이 작동합니다. 두 번째로 Ctrl+Space를 누르기만 하면 됩니다.

 

 

- 문자열 템플릿 내에서 완성이 추가되었습니다. 사용하려면 "$name."과 같이 입력하십시오.

 

 

- 이제 람다를 사용하여 표현식을 디버깅하는 동안 중단점의 정확한 위치를 선택할 수 있습니다.

 

 

- 마지막으로 Java 정적 멤버, 객체 멤버 및 열거형 항목을 가져오기 위한 의도 작업이 추가되었습니다. 또한 Java 클래스의 정적 멤버 또는 열거형 클래스의 항목을 *-import하는 유사한 작업이 있습니다.

 

 

설치


IntelliJ IDEA 15 및 Android Studio는 Kotlin을 자동으로 업데이트하라는 메시지를 표시합니다. 이렇게 되지 않는 경우 Plugin Manager를 통해 수동으로 업데이트할 수 있습니다.

 

원문

 

https://blog.jetbrains.com/kotlin/2015/11/kotlin-1-0-beta-2-is-out/

반응형

댓글