Новости
Go и Wails
Алекс Плютау рассказывает о создании десктопного приложения для двухфакторной аутентификации на Go с использованием фреймворка Wails. Автор подробно объясняет принцип работы Time-based One-Time Password, включая генерацию секрета, использование HMAC-SHA1 и дин...
Go Source Code
Это интерактивный практикум, где вы научитесь модифицировать и экспериментировать с исходным кодом языка программирования Go. Такой себе практический семинар, который поможет вам разобраться в устройстве компилятора и среды выполнения Go, научит собирать их и ...
etcd как пример
Нет ничего лучше хорошего и наглядного примера. Особенно в разработке Автор делится опытом использования кодовой базы etcd в качестве практического примера для изучения организации gRPC-сервисов на Go. Вместо сложных проектов вроде Kubernetes или Docker, et...
Google File System
В статье автор рассказывает о своей реализации распределенной файловой системы Google File System на языке Go, уместившейся в один файл без внешних зависимостей. Он воссоздает ключевые концепты легендарной системы, описанные в одноименной статье 2003 года, реа...
Singapore 2025
Я тут вам видосы собрал на выходных посмотреть. Конференция GopherCon Singapore 2025. Там, конечно, много всего про AI, но и нормальный доклады тоже есть. Кста, там есть доклад от старого доброго Дейва Чейни
Конкатенация
В статье автор сравнил производительность 15 различных методов конкатенации строк в Go, разделенных на два сценария: с фиксированным и переменным количеством аргументов. Автор провел кучу бенчмарков, сравнивающих операторы + и +=, функции fmt.Sprintf, fm...
source-level inliner
Алан Донован рассказывает про новую реализацию команды go fix в версии Go 1.26. Конкретно про source-level inliner, который позволяет автоматически обновлять код, заменяя вызовы устаревших функций их актуальными реализациями на уровне исходного кода Автор п...
Не куча но стек
Команда разработчиков Go улучшила производительность языка, перенеся больше операций выделения памяти из кучи в стек, что снижает нагрузку на сборщик мусора и ускоряет выполнение. Автор на примере динамического расширения среза демонстрирует эволюцию этих ...
Замыкания и локи
В Go можно спрятать переменную под мьютекс и сделать к ней доступ только через методы Get и Set. Это довольно очевидный подход, который сразу приходит на ум. Всё чётко, пока нужно просто перезаписывать значение целиком. Но как только понадобится его прочитать,...
Почему нет try
В статье объясняется, что настоящая причина отказа Go от введения ключевого слова try кроется не просто в любви к явности кода, а в фундаментальных ограничениях системы типов. Например, в отличие от Zig, где ошибки представлены конечными, известными компилятор...
Кто отменил контекст?
В Go стандартные ошибки context canceled и context deadline exceeded - это те ещё головняки, потому что они говорят, что что-то пошло не так, но умалчивают, почему именно. С версий 1.20 и 1.21 в языке появились функции вроде WithCancelCause и WithTimeoutCause,...
Аллокаторы
Автор продолжает цикл статей про рантайм Go. Теперь на очереде разбор аллокаторов. Аллокатор, по сути, компонента runtime, который эффективно управляет выделением и освобождением памяти в куче. Вместо того чтобы каждый раз обращаться к операционной системе ...
eBPF и XDP
Еще одна неплохая статья по eBPF Аббревиатура eBPF расшифровывается как extended Berkeley Packet Filter (расширенный фильтр пакетов) — изначально она появилась как фильтр пакетов. Особую популярность eBPF получила в последние годы и активно развивается. В э...
Уменьшаем бинарник
Инженеры Datadog рассказали, как всего за полгода им удалось "похудеть". Они уменьшили размер Go-бинарников своего агента мониторинга на 77% и вернулись к показателям пятилетней давности, при этом ничего не сломав и не вырезав ни одной функции. Годами они ...
Убер рейт лимиты
В статье описывается эволюция системы ограничения скорости запросов в Uber от разношорстных решений к единой автоматизированной платформе. Изначально каждая команда внедряла собственную логику тротлинга, и это довольно неудобно и сложно в обслуживании. Для...