Это почти техническое руководство по реализации JIT-компиляции в Go с акцентом на вызов Go-функций из динамически сгенерированного кода.
Автор объясняет фундаментальную проблему, связанную с двумя ABI и строгими требованиями к стеку из-за сборщика мусора. Наивная JIT-реализация не будет работать стабильно.
Мы пройдемся по трем этапам реализации. Начнме с базового JIT, изменяющнго переменную. Потом будет ошибочная попытка прямого вызова Go-функции, приводящая к краху при сборке мусора. И, наконец, корректное решение с использованием ассемблерной прослойки и специальной метки gocall, которая обманывает рантайм, заставляя его считать JIT-вызов легитимным.
Этот подход лёг в основу форка gojit, который уже применяется в эмуляторе guac
02.04.2026
Похожее
01.04.2026
Названия переменных
Как известно, две самые сложные проблемы в программировании - как инвалидировать...
01.04.2026
Тестирование gRPC
В статье рассматривается тестирование unary gRPC сервисов на Go. Конечно, лу...
31.03.2026
Лайв Релоадинг
В статье автор рассказывает как реализовать автоматическую перезагрузки для стат...
30.03.2026
Индексирование и поиск
В статье про библиотеку Bleve на Go для создания полнотекстового поиска. Без вне...