Compose Compiler에는 지원하는 최소 버전의 런타임이 필요하기 때문에 오래된 버전인지 아닌지 확인하는 과정이 필요하다.
맨 처음에는 Kotlin Compiler의 버전을 검사하고, 이후에 Compose Runtime의 버전을 검사한다.
버전 검사가 끝나면 Compose Compiler가 코드 생성의 단계로 넘어간다.
어노테이션 프로세서 처럼 컴파일러 플러그인도 런타임 라이브러리들이 사용할 수 있는 편리한 코드를 생성하거나 합성한다.
컴파일러 플러그인은 목표로 하는 플랫폼에 대해 최종 코드를 생성하기 전, 언어의 IR에 액세스한다.
이 때, 새로운 코드를 생성하기도 하고 수정하기도 한다.
이 과정들은 Kotlin Compiler의 BE단계에서 발생한다.
$composer 매개변수는 이 과정을 통해 추가된다.
IR 자체는 플랫폼 관계없이 언어 요소의 표현으로서 존재한다. Kotlin팀은 멀티 플랫폼을 위해 이러한 노력을 하고있다.
Compose 또한 IR을 통해 멀티플랫폼의 가능성을 열어준다.
Compose Compiler 플러그인은 Kotlin Compiler의 공통 IR 백엔드에서 제공하는 IrGenerationExtension의 구현체를 등록함으로써 IR을 생성한다.
<aside> 💡
Kotlin Compiler는 BE단계에서 IR을 통해 새로운 코드를 삽입하거나, 수정함으로서 플랫폼 요소와 관계없는 멀티플랫폼의 가능성을 지원한다.
</aside>