Early Access Program

Kotlin 1.7.0-Beta 릴리스

Read this post in other languages:
English, Français, 日本語, Português do Brasil, Español, 简体中文

Kotlin 1.7.0의 첫 테스트 버전이 출시되었습니다. Kotlin 1.7.0-Beta를 소개합니다! 이 테스트 버전의 일부 하이라이트는 아래를 확인해 주세요.

  • 빌더 추론에 대한 변경 사항.
  • min() 및 max() 컬렉션 함수의 반환.
  • 확정적으로 null 가능하지 않은 타입 안정화.
  • 새로운 Kotlin/Native 메모리 관리자에 대한 업데이트.

1.7.0-Beta를 설치하여 이러한 기능을 사용해 보고 Kotlin 1.7.0 개선에 도움이 되도록 문제를 보고해 주세요.

향후 게시물에서 다른 흥미로운 기능에 대해 알려 드리겠습니다. 다음 블로그 게시물도 기대해 주세요!

Kotlin 1.7.0-Beta 설치

1.7.0부터 “마일스톤”을 “베타”로 변경하여 출시 주기 용어를 업데이트하고 있습니다. 이렇게 결정한 데는 몇 가지 배경이 있습니다:

  • Kotlin 빌드 용어를 소프트웨어 릴리스 주기의 표준 용어와 더 일치시키고자 했습니다. 더 정확하게 말하면 “베타”는 해당 특정 버전에 새로운 기능을 완전히 추가했고 안정화 작업을 진행 중임을 의미합니다. 그러나 실제로는 사용자 피드백에 따른 변경을 포함하여 최종적으로 변경이 이루어집니다.
  • 얼마 전, M-릴리스 컴파일러가 “사전 릴리스” 코드를 생성했기 때문에, 이러한 버전을 테스트하기가 어려워졌습니다. 이제는 더 이상 그럴 일이 없습니다. 저희는 혼란이 생기는 것을 원하지 않으며 Kotlin 베타 버전을 시험해 보는 과정은 간단하며 Kotlin 팀에서 적극 권장한다는 점을 강조하고 싶습니다. 
  • 마지막으로 “베타”라는 용어 자체는 커뮤니티로부터 피드백을 요청한다는 것입니다. 저희는 “베타”라는 용어를 사용하면서, 여러분들이 피드백을 공유해주기를 원한다는 사실을 알려드리고자 합니다.

Kotlin 1.7.0-Beta를 평가하고 YouTrackSlack에서 의견을 공유해 주세요(Slack 멤버가 되고 싶다면 초대 신청을 해 주세요).

빌더 추론에 대한 변경 사항

빌더 추론은 일반 빌더 함수를 호출할 때 유용한 특수한 형태의 추론입니다. 컴파일러가 람다 인수 내의 다른 호출에 대한 형식 정보를 사용하여 호출의 형식 인수를 유추하는 데 도움을 줍니다.

Kotlin 1.7.0-Beta에는 빌더 추론에 대한 추가적인 변경 사항이 포함되어 있습니다. 이를 통해 빌더 추론를 안정화하고 로드맵 항목 중 하나의 완성도를 높이는 단계에 한 걸음 가까이 다가설 수 있게 되었습니다.

이번 릴리스에서는 버전 1.6.0에서 도입된 -Xenable-builder-inference 컴파일러 옵션을 지정하지 않고 일반 타입 추론이 타입에 대한 충분한 정보를 얻을 수 없는 경우 빌더 추론이 자동으로 활성화됩니다.

즉, 이제 추가적인 어노테이션이나 옵션을 적용하지 않고 빌더 타입 추론을 사용하는 고유한 빌더를 작성할 수 있습니다. 사용자 지정 일반 빌더를 작성하는 방법을 알아 보세요.

min() 및 max() 컬렉션 함수의 반환

Kotlin 1.4에서는 min()max() 컬렉션 함수의 이름을 minOrNull()maxOrNull()로 변경했습니다. 이러한 새 이름은 리시버 컬렉션이 비어 있으면 null을 반환하는 동작을 더 잘 반영합니다. 또한 이는 함수의 동작을 Kotlin 컬렉션 API 전체에서 사용되는 이름 생성 규칙과 일치시키는 데도 도움이 되었습니다.

모두 Kotlin 1.4에서 *OrNull() 동의어를 가지고 있는 minBy(), maxBy(), minWith()maxWith()의 경우에도 마찬가지였습니다. 이 변경 사항의 영향을 받는 이전 함수는 점차적으로 사용이 중단되었습니다.

Kotlin 1.7.0-Beta는 원래 함수 이름을 다시 도입하면서도 nullable이 아닌 반환 타입을 사용합니다. 새로워진 min(), max(), minBy(), maxBy(), minWith()maxWith()는 이제 엄격히 컬렉션 요소를 반환하거나 예외를 던집니다.

자세한 내용은 YouTrack 이슈를 참조하세요.

확정적으로 null 가능하지 않은 타입 안정화

Kotlin 1.7.0에는 Kotlin 1.6.20에 도입된 확정적으로 null 가능이 아닌 타입이 안정화될 예정입니다.

이러한 타입은 일반 Java 클래스 및 인터페이스를 확장할 때 상호 운용성을 개선하기 위해 추가되었습니다.

Kotlin 1.6.20이후로는 새로운 구문인 T & Any가 있는 사용 위치에서 일반 타입 매개변수를 확실히 null 가능이 아닌 것으로 표시할 수 있었습니다. 구문 형태는 교차 타입 표기에서 온 것이며 이제 &의 왼쪽에 있는 null 가능 상한선과 오른쪽의 null 가능하지 않은 Any를 가진 타입 매개변수로 제한됩니다.

이 베타 릴리스에서는 확정적으로 null 가능하지 않은 타입이 기본적으로 활성화됩니다. 추가적인 설정이 필요하지 않습니다.

KEEP에서 확정적으로 null 가능하지 않은 타입에 대해서 더 알아보세요.

특정 위치에서 정규식과 일치

1.5.30에 도입된 Regex.matchAt()Regex.matchesAt() 함수가 이제 안정화 단계에 왔습니다. 이를 통해 String 또는 CharSequence의 특정 위치에서 정규식이 정확히 일치하는지 여부를 확인할 수 있습니다.

  • matchesAt()는 일치를 확인하고 부울 결과를 반환합니다:
  • matchAt()는 일치하는 항목을 찾으면 반환하고, 그렇지 않으면 null을 반환합니다:

이 YouTrack 이슈에 여러분의 의견을 남겨 주세요.

새로운 Kotlin/Native 메모리 관리자

저희는 계속해서 사용자의 피드백을 수집하고 새로운 Kotlin/Native 메모리 관리자를 개선해 나갈 것입니다. 지금은 프로젝트에서 알파 버전을 사용해 볼 수 있습니다. Kotlin 1.7.0-Beta는 개발자 경험을 개선해줄 추가적인 성능 개선을 제공합니다.

새로운 메모리 관리자는 JVM과 네이티브 플랫폼 간의 차이점을 해소하며, 멀티플랫폼 프로젝트에서 일관된 개발자 경험을 제공합니다. 예를 들어 Android와 iOS 모두에서 작동하는 새로운 크로스 플랫폼 모바일 애플리케이션을 훨씬 쉽게 만들 수 있습니다.

새로운 Kotlin/Native 메모리 관리자는 스레드 간 객체 공유에 대한 제한을 없애줍니다. 또한 안전하고 특별한 관리나 어노테이션이 필요하지 않은 누출 없는 동시 프로그래밍 기본 타입을 제공합니다.

새 메모리 관리자는 향후 버전에서 디폴트 관리자가 될 것이므로 지금 사용해 볼 것을 권장합니다. 새로운 메모리 관리자에 대해 자세히 알아보고 데모 프로젝트를 살펴보거나 마이그레이션 지침으로 바로 이동하여 직접 사용해 보세요.

자신의 프로젝트에 새로운 메모리 관리자를 사용해 보고 작동을 확인하여 이슈 트래커인 YouTrack에서 피드백을 공유해 주세요.

JS 및 Native에서 명명된 캡처 그룹 지원

Kotlin 1.7.0-Beta부터, 명명된 캡처 그룹이 JVM(1.8 이상)뿐만 아니라 JS 및 Native에서도 지원됩니다.

캡처 그룹에 이름을 지정하려면 정규 표현식에서 (?<name>group) 구문을 사용하세요. 그룹과 일치하는 텍스트를 얻으려면 새로 도입된 MatchGroupCollection.get() 함수를 호출하고 그룹 이름을 전달하세요.

이름을 기준으로 일치된 그룹 값 불러오기

도시 좌표를 일치시키는 이 예제를 고려해 보세요. 정규 표현식과 일치하는 그룹 컬렉션을 가져오려면 groups를 사용하세요. value를 사용하여 번호(색인) 및 이름별로 그룹의 내용을 불러온 결과를 비교해 보세요.

명명된 역참조

이제 그룹을 역참조할 때 그룹 이름을 사용할 수도 있습니다. 역참조는 캡처 그룹이 이전에 일치한 텍스트와 동일한 텍스트를 일치시킵니다. 이를 위해 정규 표현식에서 \k<name>  구문을 사용합니다.

대체 표현식의 명명된 그룹

마지막으로, 명명된 그룹 참조를 대체 표현식과 함께 사용할 수 있습니다. 입력에서 모든 정규 표현식의 모든 발생 위치를 대체 표현식으로 바꾸는 replace() 함수와 첫 번째로 일치한 항목만 바꾸는 replaceFirst() 함수를 고려해 보세요.

대체 문자열에 있는 모든 ${name}이 나타나는 경우엔 특정 이름으로 캡쳐된 그룹에 해당하는 하위 시퀀스로 대체됩니다. 이름별 및 색인별로 그룹 참조의 대체 항목을 비교합니다:

새로운 기능을 사용해 보고 피드백을 보내주세요. 

이러한 새로운 기능은 1.7.0 테스트 버전인 Kotlin 1.7.0-Beta에서 사용할 수 있습니다. IntelliJ IDEA 또는 Android Studio IDE에 이 버전을 쉽게 설치할 수 있습니다.

Android Studio 플러그인 이름 변경(베타)으로 인해 1.6.20 이상 버전에서 플러그인 설치가 가능합니다.

다음 방법 중 하나로 Kotlin 1.7.0-Beta를 설치하세요.

  • 얼리 액세스 테스트 버전 업데이트 채널을 사용하는 경우 IDE는 1.7.0-Beta가 제공되는 즉시 자동 업데이트를 제안합니다.
  • 안정화 업데이트 채널을 사용하는 경우, IDE에서 Tools(도구) | Kotlin | Configure Kotlin Plugin Updates(Kotlin 플러그인 업데이트 구성)를 선택하여 언제든지 채널을 얼리 액세스 테스트 버전으로 변경할 수 있습니다. 그런 다음 최신 테스트 버전을 설치할 수 있습니다. 자세한 내용은 이 지침을 확인하세요.

다음 IDE의 최신 버전을 언제든지 다운로드하여 광범위한 Kotlin 지원을 받을 수 있습니다.

  • 다양한 플랫폼용 Kotlin 애플리케이션을 개발하기 위한 IntelliJ IDEA
  • Android 및 크로스 플랫폼 모바일 애플리케이션 개발을 도와주는 Android Studio

1.7.0-Beta를 설치한 후에는 잊지 말고 빌드 스크립트에서 Kotlin 버전을 1.7.0-Beta로 변경하세요.

문제가 발생한 경우:

자세히 읽어보기

게시물 원문 작성자

Jessie Cho

Danil Pavlov