Чтобы не качать каждый раз при загрузке один и тот-же код ходовых библиотек, а линковаться на клиенте с библиотеками скачанными один раз. Элементарно не жрать трафик, время и батарею, особенно на мобиле.
Для этого вполне подходят wasm файлы. Но прям глобально в вебе так сейчас редко делают. Обычно в проде минифицированная, оптимизированная под конкретные страницы сборки/бандлы. В пределах одного сайта конечно выделяются общие куски которые шарятся.
Всего этого думаю можно добиться и без прибивания гвоздями к Котлину, а сделав свою более высокоуровневую альтернативу llvm. Тогда можно было бы этот бэкенд использовать не только с Котлином.
А почему? иммутабельнось даёт тут несколько преимуществ: - проще дебажить трансформации, ибо есть дерево до и после - экономия ресурсов за счёт переиспользования поддеревьев без их копиравания
многие пытались. Например libfirm. Потратили более 16 лет, но так и не стали популярными, а то количество таргетов, которое поддерживают просто смехотворно по сравнению с LLVM не говоря уже про GCC
Он работает напрямую с байткодом. Соответственно ему доступны лишь низкоуровневые оптимизации. Высокоуровневые же в этом случае придётся реализовывать во фронтенде. Но это отсекает от них все другие языки. Поэтому хорошо бы иметь высокоуровневый мидленд не привязанный к конкретному языку.