Ответ
Intermediate representation (IR) — это промежуточная форма кода между исходным и машинным, используемая компиляторами и инструментами (например, D8/R8 в Android). Оптимизирует и анализирует код перед генерацией нативного кода.
Пример в Android:
При компиляции Kotlin/Java в DEX, код сначала преобразуется в IR для оптимизаций (удаление неиспользуемых методов, inline-функций и т.д.).
// Исходный код
fun sum(a: Int, b: Int) = a + b
// Может быть оптимизировано в IR как:
// (упрощённо) инструкции для сложения без создания метода
Плюсы:
- Кросс-платформенность (один IR → разный нативный код).
- Упрощение оптимизаций до финальной компиляции.