-
kotlinOptions useIR 의 의미는?Kotlin 2021. 12. 17. 12:33반응형
이번에 Jetpack compose 를 공부하면서 build.gradle 에 kotlinOptions useIR 를 true로 설정하기에
해당 플레그가 무엇을 의미 하는지 확인하여 보았습니다.
해당 옵션을 알아보기 위해서 Kotlin Source code 의 컴파일 과정을 보자면
kotlin compiler은 크게 compiler frontend 와 compiler backend 로 나눠집니다.
compiler frontend는 유효한 프로그램인지 확인하고 구문 및 문법 유효성 검사를 수행합니다.
그리고 중간 단계의 코드를 만들어 냅니다.
compiler backend는 중간단계의 코드를 각각의 언어 맞도록 코드를 출력합니다.
Kotlin/JS 는 JavaScript code
Kotlin/Naitive 는 llvm code
Kotlin/JVM 은 Java byte code
IR(internal representation)은 중간 단계를 표현하는 것을 의미하고
useIR 옵션은 코틀린의 멀티 플랫폼을 지원하기 위해서 중간 단계 변환을 사용할지 여부를 선택하는 옵션입니다.
Compose는 기본적으로 멀티플랫폼을 지원하고
kotlin 1.4.30 새롭게 변경된 compiler backend 에서만 돌아갈수 있는 상황이기 때문에
해당 옵션을 true 로 사용해야하는것으로 보입니다.
[참고링크]
https://stackoverflow.com/questions/68045875/for-what-purpose-is-useir-used
https://blog.jetbrains.com/kotlin/2021/02/the-jvm-backend-is-in-beta-let-s-make-it-stable-together/
https://www.jetbrains.com/lp/compose-mpp/
https://github.com/jetbrains/compose-jb
반응형'Kotlin' 카테고리의 다른 글
Kotlin Delegate Pattern (0) 2023.06.03 first-class, High-order function and inline funtion (0) 2023.05.02 Kotlin Spread Operator (코틀린 스프레드 연산자) (0) 2020.12.16 앱의 미래 : 선언적 UI 와 Kotlin MultiPlatform (Daniele Baroncelli) (0) 2020.12.15 Kotlin Cheat Sheet and Quick Reference (0) 2020.07.23 Kotlin SMA (single abstract method) Conversions (0) 2020.07.22 Introduction to Kotlin coroutines (0) 2019.10.10 lateinit / lazy 의 차이점 (0) 2019.10.04