12월 3주차에는 코틀린 컴파일러에 대한 글입니다.
https://kt.academy/article/ak-compiler-plugin
Kotlin Compiler Plugins
All you need to know about Kotlin Compiler plugins.
kt.academy
소개
이 글은 Kotlin 컴파일러와 그 플러그인에 대해 설명하고 있습니다. Kotlin 컴파일러는 Kotlin 코드를 컴파일하는 동시에 IDE에서 코드 완성, 경고 등을 제공하는 데 사용됩니다. Kotlin 컴파일러 플러그인은 컴파일러의 동작을 변경하는 데 사용되며, 특정 클래스를 확장하고 등록함으로써 정의됩니다.
내용
컴파일러의 구조:
- Frontend: Kotlin 코드를 분석하고 다른 형식으로 변환하는 역할을 합니다. 이 과정은 타겟 플랫폼과 독립적으로 수행됩니다.
- Backend: Frontend에서 변환된 코드를 특정 플랫폼(예: JVM, JS, Native)에 맞는 저수준 코드로 변환합니다. Backend는 각 타겟에 특화되어 있습니다.
컴파일러 확장:
- Frontend 확장: 특정한 컴파일 단계에 개입하여 컴파일 과정의 결과를 변경할 수 있습니다. 예를 들어, 클래스에 추가적인 상위 타입을 제공하는 확장이 가능합니다.
- Backend 확장: 'IrGenerationExtension'은 유일한 Backend 확장으로, Kotlin 중간 표현(IR)을 수정할 수 있습니다. 이는 코드의 거의 모든 것을 변경할 수 있지만, 코드 분석이나 IDE 제안에 영향을 미치지 않습니다.
컴파일러 플러그인의 예:
- Kotlin Serialization: Kotlin 클래스의 직렬화 메소드를 생성하는 플러그인입니다.
- Jetpack Compose: UI 프레임워크로, 컴포저블 함수를 변환하여 UI를 생성합니다.
- Arrow Meta: 함수형 프로그래밍 기능을 지원하는 플러그인입니다.
- Parcelize: Kotlin 클래스에 대한 Parcelable 구현을 생성합니다.
- All-open: 특정 어노테이션으로 마크된 모든 클래스를 기본적으로 open으로 만듭니다.
Kotlin 컴파일러 플러그인 개발
- 플러그인 개발은 Kotlin 컴파일러의 소스 코드 분석과 기존 플러그인의 참고가 필요합니다.
- 사용에 주의가 필요하며, 잘못된 사용은 코드에 심각한 문제를 일으킬 수 있습니다.
- 개발자들은 플러그인을 통해 컴파일 과정을 변경하거나 새로운 기능을 추가할 수 있습니다.
개발자에게의 의미
- Kotlin 컴파일러 플러그인은 Kotlin 언어의 유연성과 확장 가능성을 보여줍니다.
- 이러한 플러그인은 새로운 기능을 개발하거나 기존 기능을 개선하는 데 사용될 수 있습니다.
- Jetpack Compose와 같은 플러그인은 Kotlin 컴파일러 플러그인의 잠재력을 보여주는 예입니다.
K2와 관련된 작성글 :
Kotlin Weekly # -372 "코틀린 컴파일러 - K2"
9월 3주차에는 멀티플렛폼을 제외하고 눈에 먼저 들어왔습니다.(맨위이기도 했습니다.) https://proandroiddev.com/lets-talk-about-kotlin-k2-3e1c6f10d74 Let's Talk about Kotlin K2 Kotlin is now 13 years old! Yeah, a teenager. And
veblen.tistory.com
정리
Kotlin 컴파일러 플러그인은 아직 초기 단계이며 변경 가능성이 높으므로 신중하게 사용해야 합니다. Jetpack Compose 같은 플러그인은 Kotlin 컴파일러 플러그인의 잠재력을 잘 보여줍니다.
이러한 K2 도입으로 컴파일러의 성능과 효율성은 상승할 것이고, Kotlin이 KMP를 비롯하여 다재다능한 언어로 되어가는게 마음에 듭니다. java를 대체해버리는 날이 왔으면 싶습니다.
** Kotlin Weekly **
kotlinweekly.net
'Kotlin Weekly' 카테고리의 다른 글
Kotlin Weekly # -387 "Kotlin 꼬리 재귀의 최적화" (0) | 2024.01.01 |
---|---|
Kotlin Weekly # -386 "Koin 2023: 성장과 미래 계획 " (0) | 2023.12.25 |
Kotlin Weekly # -384 "Jetpack Compose의 Modifiers" (0) | 2023.12.13 |
Kotlin Weekly # -383 "Kotlin 사용 주의점" (0) | 2023.12.13 |
Kotlin Weekly # -382 " 호환성 종류와 이해" (0) | 2023.12.12 |