기술지원 문의는 로그인 후에 가능합니다.

확인

Tech Blog

단군소프트에서 제공하는 소프트웨어 활용에 도움을 줄 수 있는 정보와 소프트웨어 새소식, 교육/세미나 정보를 제공해드립니다.

태그 모음

Tip&Tech

K2 컴파일러가 Kotlin 2.0에서 안정화됩니다

23-02-28


안녕하세요. JetBrains 한국 총판 단군소프트입니다.

오늘의 소식, K2 컴파일러가 Kotlin 2.0에서 안정화됩니다.​


컴파일러(코드 네임 ‘K2‘)에 대한 새로운 프런트엔드 작업이 오랫동안 진행되어 왔습니다. 이 프런트엔드는 코드를 분석하고, 구문 분석을 하고 의미체계 분석, 데이터 흐름 분석, 호출 확인 및 타입 추론을 수행하는 컴파일러의 일부입니다. 여러분 개발자들이 가장 많이 상호 작용하는 컴파일러의 일부이기도 합니다. 또한 IDE 내에서 지속적으로 실행되고 모든 오류 및 경고 메시지를 보고하며, 자동 코드 완성, 의미 인식 검사, 인텐션 및 리팩터링과 같은 작업을 지원하는 컴파일러의 일부입니다. 새로운 프런트엔드는 이미 테스트 버전으로 제공되고 있습니다. 지속적인 개선과 안정화를 거쳐 향후 Kotlin 릴리스에서 디폴트 컴파일러 프런트엔드가 될 예정입니다. 나중에 출시될 이 릴리스의 이름은 Kotlin 2.0으로 정해졌습니다.


계속 읽으면서 Kotlin 2.0 릴리스에 대한 로드맵과 작업의 동기 및 기대 사항에 대해 자세히 알아보세요.




Kotlin 2.0 릴리스 로드맵이란?

기존처럼 Kotlin 1.9로 버전이 지정된 릴리스가 하나 더 출시되며, 안정화가 가까워짐에 따라 K2 컴파일러 프런트엔드를 개발하면서 나온 업데이트도 여기에 포함됩니다. Kotlin 1.10은 없고, Kotlin 1.9 이후의 주요 버전은 Kotlin 2.0이 될 것입니다.


Kotlin 2.0을 사용해야 하는 이유

프런트엔드는 컴파일러의 주요 부분이며 K2 컴파일러 프런트엔드는 이전 프런트엔드를 단순히 리팩터링한 것이 아니라 새로운 아키텍처 기반으로 처음부터 완전히 재작성한 것입니다. 그 차이점에 관한 기술적 세부 정보는 여러 블로그, 동영상 및 컨퍼런스 토크에서 발표되었습니다. 더 자세한 정보를 원한다면 K2 컴파일러로 가는 길부터 살펴보시면 좋습니다. 간략히 설명하면, 새로운 아키텍처는 설계상 속도와 확장성을 개선하고, 이전 컴파일러의 프런트엔드에 있던 기술적 부채를 해결하고, 다양한 위치에서 버그 및 코너 케이스를 수정하고, 향후 언어 확장을 위한 길을 마련합니다.


프로그래밍 언어의 경우, 대개 주요 기능 또는 큰 변경 사항이 있을 때 더 높은 숫자의 주요 버전이 나옵니다. 그러나 소프트웨어 프로그램의 경우, 기능 세트가 거의 동일하게 유지되더라도 주요 재작업을 나타내기 위해 무엇이든 실질적으로 재작성될 때마다 주요 버전이 나올 수 있습니다. Kotlin은 사실 언어지만 이 소프트웨어의 관행을 따르기로 했습니다. 무엇보다도 Kotlin 컴파일러는 규모가 큰 소프트웨어입니다. Kotlin 언어 버전은 컴파일러 버전에 따라 결정됩니다. 언어에 대한 참조로 Kotlin 사양을 제공하지만, 이것이 Kotlin을 정의하는 것은 아닙니다.


기존 코드에 문제가 생기나요?

Kotlin은 언어 버전이 업데이트될 때마다 변경됩니다. 새로운 언어 기능을 제공함과 동시에 오래된 버그도 수정됩니다. JetBrains는 호환성 문제를 일으키는 변경의 수와 영향을 최소화하기 위해 항상 노력하며 Kotlin 언어의 진화 과정을 따릅니다. Kotlin 2.0 역시 그러한 맥락에서 벗어나지 않습니다.


Kotlin 2.0에 새로운 기능을 도입하는 것은 피하도록 주의하고 있습니다. Kotlin 컴파일러 프런트엔드를 재작성하는 일은 그 자체로 큰 변화이며 많은 개선을 도입합니다. 한 가지 예로, 새로운 데이터 흐름 분석 알고리즘은 이전보다 정확해지고 개선된 스마트 형 변환을 제공합니다(관련 문제 구체적인 사례를 통해 확인하세요). 이렇게 하면 이전 프런트엔드 기반의 Kotlin 1.9에서 컴파일되지 않는 빨간색 코드가 Kotlin 2.0에서 컴파일되는 녹색 코드로 전환되며, 이는 기술적으로 새로운 Kotlin 언어 기능의 본질적 의미를 보여줍니다. 그러나 이는 새로운 컴파일러 아키텍처의 부수 효과일 뿐입니다.


그 외에도, 수많은 오래된 버그가 수정되었으며 필연적으로 이러한 수정 중 일부는 잘못된 컴파일러 동작에 의존하는 코드에서 문제를 일으킬 수 있습니다. JetBrains는 기존 버전과 새 버전의 K2 프런트엔드 간 모든 동작 변경의 영향을 주의 깊게 연구하고 있으며, 상당한 수의 Kotlin 사용자에게 영향을 미칠 수 있는 경우라면 마음에 들지 않더라도 기존 동작을 복제하기 위해 추가적인 노력을 기울이고 있습니다.


Kotlin 1.9에서 Kotlin 2.0으로 코드를 마이그레이션할 때 발생하는 영향을 최소화하기 위해 최선을 다하고 있습니다. Kotlin 2.0 안정화 프로세스는 지속적으로 업데이트되고, 사용자의 프로젝트에서 Kotlin 2.0을 미리 사용해 볼 수 있는 충분한 시간도 제공되므로, 여러분은 테스트에서 간과되었을 수 있는 역효과를 보고할 수 있습니다. 현재 작업은 올해 후반에 배포될 K2 컴파일러 프런트엔드 베타 버전 품질 릴리스에 중점을 두고 있으며, 이 로드맵 이슈서 진행 상황을 확인할 수 있습니다.


Kotlin 2.0에 대한 IDE 지원은 어떻게 되나요?

Kotlin IDE 플러그인은 IntelliJ IDEA 및 Android Studio 업데이트에 번들로 제공됩니다. 여기에는 코드의 의미 분석을 위한 Kotlin 컴파일러 프런트엔드의 사본이 포함되지만, 실제로 코드를 컴파일하는 데 사용되는 Kotlin 컴파일러 버전은 아닙니다. 컴파일러의 실제 버전은 사용자의 빌드 파일의 설정에 따라 결정됩니다. 따라서 Kotlin 언어 버전 2.0에서 코드를 컴파일링하면 새로운 컴파일러 프런트엔드를 사용하게 되며, 새로운 컴파일러 아키텍처의 성능 이점을 모두 얻을 수 있습니다. 단, 그래도 IDE는 여전히 이전 프런트엔드를 사용하여 코드를 검사할 수 있습니다.


JetBrains는 새로운 컴파일러 프런트엔드의 성능 이점을 IDE에 제공하기 위해 K2 컴파일러 프런트엔드를 기반으로 빌드된 완전히 새로운 버전의 Kotlin IDE 플러그인을 작성하고 있습니다. 그리고 현재는 새로운 IDE 플러그인의 공개 테스트 버전을 작업하고 있습니다. 업데이트 내용은 이슈에서 확인할 수 있습니다.​


Kotlin 2.0부터 무엇을 기대할 수 있나요?

Kotlin 2.0 컴파일러 프런트엔드의 새로운 아키텍처 덕에 다양하고 멋진 새로운 기능이 깔끔하게 구현됩니다. 이러한 기능 중 KT-10468  컨텍스트 리시버와 같은 일부 기능은 이미 기존 컴파일러 프런트엔드에서 테스트 버전으로 사용할 수 있지만, Kotlin 2.0에서 기본적으로 활성화되지 않고, 테스트 버전 단계로 남습니다. 새로운 기능의 안정화는 파이프라인에 있는 다른 새로운 기능의 구현과 함께 향후 Kotlin 2.x 릴리스에서 구현됩니다. 언제나 그랬듯이 계획 중인 정규 업데이트에 관한 정보는 Kotlin 로드맵을 통해 공유될 예정입니다.


Kotlin 3.0은 언제 출시되나요? 아직 모릅니다. 현재는 향후 언어에 대한 여러 가지 큰 변경 사항, 특히 최근 Kotlin 기능 조사에서 가장 많이 요청된 사항에 대해 잠정적으로 논의하고 있습니다. 분명히 이러한 변경 사항 중 일부는 다음 주요 Kotlin 버전을 결정할 만큼 매우 중요할 수 있습니다.


여러분의 의견을 들려주세요

새로운 컴파일러 프런트엔드를 사용해보고 의견을 들려주세요! Kotlin 1.8.20부터 일반 Kotlin 언어 버전 플래그를 통해 Kotlin 2.0 언어 버전의 테스트 버전을 활성화할 수 있습니다.


Kotlin K2 컴파일러 활성화


자세히 알아보기




태그