Если функция из библиотеки вызывает static функцию из библиотеки, то даже GOT не нужен, на сколько я понимаю. Достаточно offset-а до функции, а он известен.
Автор, как мне кажется, делает упор не на то, чтобы рассказать как уменьшить размер бинаря, а на то, чтобы показать как можно увидеть сколько зависимости прибавляют. Дать людям инструмент решить самим хотят ли они эту зависимость или нет.
Привет. Как-нибудь мы обязательно подробно расскажем про это!
Мы пакуем различные данные пользователя (пол, возраст, кого он ищет, от какого до какого возраста и еще штук 15 других параметров) в большой большой битмап и умеем очень быстро искать по нему, используя широкие операции процессора (SSE, AVX, AVX2). Т.к. поисковые фильтры всегда разные, вот эта вот программа поиска генерируется налету самописным JIT-ом.
Два из трех изначальных разработчиков Go имели за собой огромный багаж накопленного. И ассемблеры и компиляторы. И идеи как их развивать.
Возможно Go на LLVM работал бы даже лучше, но мы этого не узнаем…
В чем принципиальная разница я не знаю, но мне кажется что вокруг Go компиляции\утилит\рантайма настолько много уже накручено, что просто «переход» или использование чего-то не своего звучит как плохое решение.
В докладе выше говорится о том что скоро можно будет давать PDF описание архитектуры и утилита сама сделает ассемблер для нее. Для этого требуется парсить более-менее человеческий язык и всякие таблички из PDF. А тут вот Intel выложила описание, которое с самого начала предназначено для чтения программой.
$ go tool link -h 2>&1 | egrep "(-w|-s)"
-s disable symbol table
-w disable DWARF generation
Эти два флага просят линкер не включать debug информацию в бинарник.
Вы не сказали ничего по поводу того как ограничивать другие программы (не свою). Seccomp правила наследуются?
Мы пакуем различные данные пользователя (пол, возраст, кого он ищет, от какого до какого возраста и еще штук 15 других параметров) в большой большой битмап и умеем очень быстро искать по нему, используя широкие операции процессора (SSE, AVX, AVX2). Т.к. поисковые фильтры всегда разные, вот эта вот программа поиска генерируется налету самописным JIT-ом.
Возможно Go на LLVM работал бы даже лучше, но мы этого не узнаем…
Про LLVM тут есть чуть информации.