Go та дзен одного бінарника

Go звичайно процідурна шляпа, але таки має одну суттєву перевагу якої бракує решті — проєкт компілиться в один бінарник.

Коли звик що будь-який додаток тягне за собою якщо не сорці, то купу якихось бібліотек, файлів і т.д., то один-єдиний бінарний виглядає як артефакт з майбутнього (або минулого, як подивитися).

Здоровенний проєкт поміщається в один файл. Тераформ, номад з консулом, пубернетис, you name it.

Звісно якщо проєкт великий, то і бінарник буде чималий.

Але здається, люди недооцінюють простоту дистрибуції.

Половині доводиться тягнути за собою системно-незалежний рантайм, іншій половині треба придумувати якісь хаки й милиці, щоб обійти обмеження системного рантайму, третя половина тягне за собою якісь бібліотеки або вимагає ставити libzalupa-dev строго визначеної версії, і лише Go яскраво дає всім посмоктати прутня зі своїм єдиним блобом.

Вчора шукав альтернативи системному крону і натрапив на популярне рішення написане на пітоні. Звісно в першому рядку how to install автор пропонує нам щось робити за допомогою virualenv🥴🤮. Дякую, не треба, я тільки того тижня вичистив 20 гігабайтів пітонячих віртуаленвів зі старих проєктів.

Такий підхід в ультимативній формі вироджується Docker, але у нього є проблеми з монтуванням файлових систем та мережі.

За стільки часу людство так і не спромоглося зробити нормальну систему управління залежностями та дистрибуції, що може багато сказати про нашу індустрію.

На тому все, висновок такий — пакуйте все в один бінарник без залежностей, і буде вашим юзерам щастя.


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred