Post Thumbnail

Это почти техническое руководство по реализации JIT-компиляции в Go с акцентом на вызов Go-функций из динамически сгенерированного кода.

Автор объясняет фундаментальную проблему, связанную с двумя ABI и строгими требованиями к стеку из-за сборщика мусора. Наивная JIT-реализация не будет работать стабильно.

Мы пройдемся по трем этапам реализации. Начнме с базового JIT, изменяющнго переменную. Потом будет ошибочная попытка прямого вызова Go-функции, приводящая к краху при сборке мусора. И, наконец, корректное решение с использованием ассемблерной прослойки и специальной метки gocall, которая обманывает рантайм, заставляя его считать JIT-вызов легитимным.

Этот подход лёг в основу форка gojit, который уже применяется в эмуляторе guac

Похожее

Post Thumbnail

Soppo

Пятничный язык программирования! Я про него уже писал, но он продолжает развиват...

Post Thumbnail

Typescript Defer

Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScr...

Post Thumbnail

Raft сломан

Ребята из Antithesis(я хз кто это) протестировали несколько популярных реализаци...