Новости

Post Thumbnail

Слайсы, мапы и каналы

Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внутреннее устройство трёх ключевых структур Go: срезов, мап и каналов. Автор объясняет, что срез - это всего лишь 24-байтовый заголовок: указатель на массив, длина и емкость. А ув...

Post Thumbnail

JIT для go

В статье про JIT-компилятор для Go версии 1.17+, форк проекта nelhage/gojit. Главное нововведение - возможность вызывать Go-функции из JIT-кода без ошибок, связанных с проверкой стека при сборке мусора или росте стека. Автор рассказывает про трудности ...

Post Thumbnail

PGKeeper

PGKeeper - это сервис на Go, который команда Figma разработала для замены устаревшего пулера соединений PgBouncer. Основные проблемы PgBouncer - однопоточная архитектура, ограничивающая масштабируемость, отсутствие приоритизации трафика и механизмов защиты...

Post Thumbnail

CPU нагрузка

В статье рассматриваются проблемы оптимизации кода на Go, который нагружает CPU. Автор показывает, что "нулевая стоимость абстракций" в Go часто недостижима: дженерики, интерфейсы и замыкания в горячих циклах не инлайнятся, что приводит к падению производ...

Post Thumbnail

Системное программирование

Неплохая статья, в которой подробно разбирается тема производительности программного обеспечения. Рассказвает про производительность от базовых концепций до практической оптимизации на реальном примере. Автор объясняет ключевые метрики: латентность, пропус...

Post Thumbnail

Async/Await

Статья про реализацию паттерна Async/Await в Go. Якобы, он упростит написание конкурентного кода. В основном автор рекламирует свою либу go-opera. Ну, вот хрен знает, как по мне - только все сложнее становится.

Post Thumbnail

Проще лучше

Автор рассказывает как он запилил крутую базу данных с лок-фри ринг-буфером, пинером для GC и кучей умных слов в README, а потом оказалось, что всё это работает через жопу. Оказалось, что он перемудрил со всеми умными локфри алгоритмами. Мне кажется, у все...

Post Thumbnail

Свой маленький TCP

Есть чуваки - Pilot. Они пилять различные сетевые решения для агентов Они на Go с нуля забабахали свой транспорт для обхода NAT поверх UDP, очень похожий на TCP. Cо скользящими окнами, контролем перегрузок и повторными таймаутами. Обошлись вообще без сторон...

Post Thumbnail

FastCGI все еще достоин

FastCGI - протокол, которому уже 30 лет, но он по-прежнему может показать свою силу Автор предлагает использовать FastCGI для реверс прокси вместо HTTP. И в этом действительно есть смысл. Двес основные причины - безопастность и неопределенность в передаче н...

Post Thumbnail

Домашний HAL

Автор считает, что пора собирать себе домашнего HAL’а на новых локальных моделях вроде Gemma4 или Qwen 3.6. Сейчас даже на обычной видеокарте можно запустить нормального мультимодального ассистента, который и жестикулирует, и лицо распознает, и умный дом крути...

Post Thumbnail

Швейцарский стол

"Швейцарская таблица" - это продвинутый движок для хэш-таблиц, который сейчас используется в новых версиях Go. Идея в том, чтобы отойти от примитивного линейного поиска, когда при коллизии мы просто тыкаемся в следующую ячейку, и использовать хитрую последоват...

Post Thumbnail

Простое профилирование кучи

Статья от ребят из Coroot. Эти ребята знают толк в профилировании и вьювабилити. Тут они рассказывают, как вместо подключения pprof к Go-сервисам, чтобы посмотреть, что там с памятью, начали использовать встроенные возможности рантайма. Go сам постоянно соб...

Post Thumbnail

go tool task

Я очень люблю Taskfile и в своих петпроектах не пользуюсь Makefile. Это реально супер удобная замена уродского Makefile, но у старичка есть преймущество - он make есть везде. Но! Теперь для CI стало значительно удобнее использовать Taskfile через go tool t...

Post Thumbnail

Вишенки

Пятница, и новый язык программирования. Сегодня у меня для вас - Черри. Это язык программирования для создания Siri Shortcuts, который компилируется напрямую в Shortcut, который затем можно запускать на ваших устройствах Apple. Зачем? Да хрен знает

Post Thumbnail

Выбираем логер

На протяжении долгого времени в Go выбор библиотеки логирования был выбором между Logrus, zap, zerolog и несколькими другими, каждая из которых предлагала свой собственный интерфейс, идиомы и представления о том, как должно работать структурированное логирован...

Post Thumbnail

Контейнеры

Статья толково объясняет, как работают контейнеры изнутри. Автор на пальцах рассказывает, что Docker - это не магия, а просто удобная обертка над стандартными механизмами Linux: namespaces, чтобы процесс видел только свое "личное пространство" и cgroups, ч...

Post Thumbnail

Процент покрытия

Ребята из DoltHub решили наконец-то задуматься о покрытии кода тестами в своем проекте на Go, хотя до этого восемь лет жили без этого и норм. В Go с версии 1.20 появилась возможность собирать данные о покрытии не только для юнит-тестов, но и для интеграцио...

Post Thumbnail

Нетполлер

Еще одна из цикла про устройство рантайма Go В этой статье разбирается, как устроен сетевой поллер (netpoller) в Go - та самая магия, которая позволяет писать простой блокирующий код вроде conn.Read(), а под капотом использовать epoll, kqueue и IOCP без бло...

Post Thumbnail

Атомики

Автор рассказывает про атомарные операции в Go как более производительная альтернатива мьютексам для lock-free программирования. В статье объясняется аппаратная основа атомарных операций - инструкции CPU уровня LOCK XADD. Автор показывает как работать с ти...

Post Thumbnail

eBPF в GitHub

Ребята из GitHub рассказали как они используют eBPF. С помощью eBPF они перехватываем DNS-запросы, перенаправляют их через специальные DNS-прокси, выявляют обращения к проблемным доменам и даже определяем конкретный процесс или команду, вызвавшую определнны...

Post Thumbnail

Soppo

Какая-то неожиданная волна новых языков, похожих на Go, только с блэкджеком и гулящими женщинами. Сегодня, пока я шароёблюсь где-то по Краснодарскому краю, вы можете посмотреть на ещё один такой язык — Soppo. Очень похож на Go, но есть енумы и паттерн-матчи...