Что такое SIL и как решается stack vs heap?
Суть
SIL (Swift Intermediate Language) — промежуточное представление между AST и LLVM IR, специфичное для Swift. Пайплайн: исходник → AST → SILGen (raw SIL) → обязательные проходы (definite initialization, проверка эксклюзивности, diagnostics) → canonical SIL → оптимизации (-O) → LLVM IR → машинный код. Именно на SIL Swift делает «свои» оптимизации, которые LLVM не умеет: ARC optimization (удаление парных retain/release), специализация дженериков, девиртуализация, инлайнинг, escape analysis и stack promotion.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep