Это почти техническое руководство по реализации JIT-компиляции в Go с акцентом на вызов Go-функций из динамически сгенерированного кода.
Автор объясняет фундаментальную проблему, связанную с двумя ABI и строгими требованиями к стеку из-за сборщика мусора. Наивная JIT-реализация не будет работать стабильно.
Мы пройдемся по трем этапам реализации. Начнме с базового JIT, изменяющнго переменную. Потом будет ошибочная попытка прямого вызова Go-функции, приводящая к краху при сборке мусора. И, наконец, корректное решение с использованием ассемблерной прослойки и специальной метки gocall, которая обманывает рантайм, заставляя его считать JIT-вызов легитимным.
Этот подход лёг в основу форка gojit, который уже применяется в эмуляторе guac
02.04.2026
Похожее
20.05.2026
Движок поиска
Ребята рассказывают в статье про свое поделие - базу данных Antfly Antfly - э...
19.05.2026
LibAFL фаззинг
Trail of Bits выпустила gosentry - форк тулчейна Go, который заменяет штатный фа...
18.05.2026
Используй Go, блять!
Автор в грубой и ультимативной форме призывает выкинуть излишне сложные фреймвор...
15.05.2026
Слайсы, мапы и каналы
Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внут...