fa
Feedback
4gophers

4gophers

رفتن به کانال در Telegram

Язык программирования Go. Больше новостей про разработку тут https://kodikapusta.ru/ Реклама https://kodikapusta.ru/ads

نمایش بیشتر
3 450
مشترکین
-224 ساعت
+17 روز
-130 روز

در حال بارگیری داده...

جذب مشترکین
سپتامبر '26
سپتامبر '26
+3
در 0 کانال‌ها
اوت '26
+23
در 0 کانال‌ها
Get PRO
ژوئیه '26
+31
در 0 کانال‌ها
Get PRO
ژوئن '26
+20
در 0 کانال‌ها
Get PRO
مه '26
+34
در 0 کانال‌ها
Get PRO
آوریل '26
+35
در 0 کانال‌ها
Get PRO
مارس '26
+24
در 0 کانال‌ها
Get PRO
فوریه '26
+36
در 0 کانال‌ها
Get PRO
ژانویه '26
+42
در 0 کانال‌ها
Get PRO
دسامبر '25
+47
در 1 کانال‌ها
Get PRO
نوامبر '25
+50
در 0 کانال‌ها
Get PRO
اکتبر '25
+31
در 0 کانال‌ها
Get PRO
سپتامبر '25
+34
در 1 کانال‌ها
Get PRO
اوت '25
+46
در 0 کانال‌ها
Get PRO
ژوئیه '25
+30
در 0 کانال‌ها
Get PRO
ژوئن '25
+34
در 0 کانال‌ها
Get PRO
مه '25
+33
در 0 کانال‌ها
Get PRO
آوریل '25
+35
در 0 کانال‌ها
Get PRO
مارس '25
+53
در 0 کانال‌ها
Get PRO
فوریه '25
+49
در 0 کانال‌ها
Get PRO
ژانویه '25
+60
در 0 کانال‌ها
Get PRO
دسامبر '24
+43
در 0 کانال‌ها
Get PRO
نوامبر '24
+62
در 0 کانال‌ها
Get PRO
اکتبر '24
+98
در 0 کانال‌ها
Get PRO
سپتامبر '24
+51
در 0 کانال‌ها
Get PRO
اوت '24
+57
در 0 کانال‌ها
Get PRO
ژوئیه '24
+46
در 0 کانال‌ها
Get PRO
ژوئن '24
+39
در 0 کانال‌ها
Get PRO
مه '24
+38
در 0 کانال‌ها
Get PRO
آوریل '24
+52
در 0 کانال‌ها
Get PRO
مارس '24
+54
در 2 کانال‌ها
Get PRO
فوریه '24
+30
در 0 کانال‌ها
Get PRO
ژانویه '24
+79
در 0 کانال‌ها
Get PRO
دسامبر '23
+52
در 0 کانال‌ها
Get PRO
نوامبر '23
+49
در 0 کانال‌ها
Get PRO
اکتبر '23
+15
در 0 کانال‌ها
Get PRO
سپتامبر '23
+23
در 0 کانال‌ها
Get PRO
اوت '23
+28
در 0 کانال‌ها
Get PRO
ژوئیه '23
+29
در 0 کانال‌ها
Get PRO
ژوئن '23
+29
در 0 کانال‌ها
Get PRO
مه '23
+52
در 0 کانال‌ها
Get PRO
آوریل '23
+24
در 0 کانال‌ها
Get PRO
مارس '23
+31
در 0 کانال‌ها
Get PRO
فوریه '23
+38
در 0 کانال‌ها
Get PRO
ژانویه '23
+40
در 0 کانال‌ها
Get PRO
دسامبر '22
+30
در 0 کانال‌ها
Get PRO
نوامبر '22
+38
در 0 کانال‌ها
Get PRO
اکتبر '22
+26
در 0 کانال‌ها
Get PRO
سپتامبر '22
+35
در 0 کانال‌ها
Get PRO
اوت '22
+24
در 0 کانال‌ها
Get PRO
ژوئیه '22
+22
در 0 کانال‌ها
Get PRO
ژوئن '22
+35
در 0 کانال‌ها
Get PRO
مه '22
+46
در 0 کانال‌ها
Get PRO
آوریل '22
+167
در 0 کانال‌ها
Get PRO
مارس '22
+30
در 0 کانال‌ها
Get PRO
فوریه '22
+59
در 0 کانال‌ها
Get PRO
ژانویه '22
+46
در 0 کانال‌ها
Get PRO
دسامبر '21
+47
در 0 کانال‌ها
Get PRO
نوامبر '21
+32
در 0 کانال‌ها
Get PRO
اکتبر '21
+44
در 0 کانال‌ها
Get PRO
سپتامبر '21
+26
در 0 کانال‌ها
Get PRO
اوت '21
+25
در 0 کانال‌ها
Get PRO
ژوئیه '21
+28
در 0 کانال‌ها
Get PRO
ژوئن '21
+27
در 0 کانال‌ها
Get PRO
مه '21
+17
در 0 کانال‌ها
Get PRO
آوریل '21
+52
در 0 کانال‌ها
Get PRO
مارس '21
+50
در 0 کانال‌ها
Get PRO
فوریه '21
+39
در 0 کانال‌ها
Get PRO
ژانویه '21
+50
در 0 کانال‌ها
Get PRO
دسامبر '20
+3 329
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
06 سپتامبر0
05 سپتامبر0
04 سپتامبر0
03 سپتامبر+1
02 سپتامبر+2
01 سپتامبر0
پست‌های کانال
Конкурентный сервер на Go #golang #learn Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная Go.
Конкурентный сервер на Go #golang #learn Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная Go. В прошлый раз было про Rust Автор показывает, как язык решает описанные ранее задачи. Статья начинается с последовательного сервера с state machine, затем показывает конкурентную версию с одной горутиной на клиента. Для ограничения параллелизма предлагаются счетный семафор на канале и паттерн воркер пул, когда нужно сохранять состояние между задачами. Логично, что в Go почти никогда не нужно прибегать к async/event-driven программированию, потому что конкурентность встроена в язык и рантайм. Но интересно смотреть в сравнении с другими языками https://kodikapusta.ru/news/1203-konkurentnyi-server-na-go Поддержать проект на boosty и читать в MAX

2
Интересные баги #golang Команда sigma star(хз кто это) нашла и исправила давнюю ошибку в рантайме Go, проявлявшуюся только на
Интересные баги #golang Команда sigma star(хз кто это) нашла и исправила давнюю ошибку в рантайме Go, проявлявшуюся только на 32-битных встраиваемых Linux-системах. Приложение периодически падало с ошибкой "runtime: netpoll: eventfd ready for something unexpected". Корень проблемы оказался в том, что Go хранит в 8-байтовом поле ev.Data два типа указателей - сырой указатель на event fd и тегированный указатель на pollDesc, а сравнение на 32-битных little-endian системах считывает лишь младшие 4 байта, из-за чего адрес event fd алиасился с fdseq. Как только долгоживущая программа накапливала миллионы пересозданных pollDesc, netpoll путал сокет с event fd и падал Ребята прям недра залезли. Представляю как они все это дебажили https://kodikapusta.ru/news/1198-interesnye-bagi Поддержать проект на boosty и читать в MAX
555
3
GopherCon UK 2026 #golang #video Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и д
GopherCon UK 2026 #golang #video Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и другие широко известные в узких кругах докладчики. И даже про AI есть вполне адекватные доклады https://kodikapusta.ru/news/1196-gophercon-uk-2026 Поддержать проект на boosty и читать в MAX
619
4
Используем Datastar #golang В статье интеренсно про использование Datastar. Я вот первый раз про него услашал Автор рассказыв
Используем Datastar #golang В статье интеренсно про использование Datastar. Я вот первый раз про него услашал Автор рассказывает, как построить веб-версию утилиты htop используя Go-бэкенд и, собственно, гипермедиа-фреймворк Datastar. Вместо фронтенд-фреймворка вроде React здесь HTML-патчи отправляются напрямую с сервера через Server-Sent Events. Вся интерактивность задается декларативными data-* атрибутами, поэтому клиентский код остается минимальным. Системные метрики собираются библиотекой gopsutil, HTML шаблон вшивается в бинарник через go:embed, поэтому все приложение - это один бинарь Кончено, Datastar не заменит React или Vue, но отлично подойдет для случаев, когда состояние живет преимущественно на бэкенде. В целом, это довольно интересный подход https://kodikapusta.ru/news/1195-ispol-zuem-datastar Поддержать проект на boosty и читать в MAX
701
5
На Rust после Go #rust #golang Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в его команде. Но
На Rust после Go #rust #golang Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в его команде. Но появился проект, в котором нужны были низкое потребление памяти и mpmc-обмен сообщениями. Пожтому несколько CLI и сервисов решили переписать на Rust и это заставил его освоить язык всерьез. Переход оказался непростым. Больше всего дались строгость компилятора, макросы и, главное, borrow checker(ну конечно) и async с лайфтаймами, которые он советует изучить в первую очередь. Теперь он ценит именно эту строгость. В итоге автор рекомендует если Go справляется, то использовать Go. А Rust брать при реальных ограничениях по памяти, стабильности и близости к железу. Ну или если вы ебнулись и решили все переписать на Rust с помощью AI https://kodikapusta.ru/news/1189-na-rust-posle-go Поддержать проект на boosty и читать в MAX
990
6
tnk9x #golang #gamedev #tools Современный ремейк классической аркадной игры Battle City, написанный на Go с использованием дв
tnk9x #golang #gamedev #tools Современный ремейк классической аркадной игры Battle City, написанный на Go с использованием движка Ebiten и запускаемый как нативно, так и в браузере через WebAssembly. Проект сочетает любовь к оригиналу с изучением Go и разработки игр. Реализованы полный игровой цикл с защитой штаба, управление для двух игроков, разрушаемая местность, все пять типов поверхностей, четыре типа врагов и все шесть бонусов. Враги, кстати, на на Lua-скриптах реализованы https://kodikapusta.ru/tools/43-tnk9x Поддержать проект на boosty и читать в MAX
875
7
Поговорим про PGO #golang Profile-guided optimization (PGO) заменяет эвристические догадки компилятора реальными замерами. Вы
Поговорим про PGO #golang Profile-guided optimization (PGO) заменяет эвристические догадки компилятора реальными замерами. Вы запускаете программу, записываете CPU-профиль и передаете его компилятору для повторной сборки, который использует эти данные в основном для инлайнинга горячих вызовов и девиртуализации интерфейсных вызовов Автор протестировал PGO в Go на трех JSON-документах, парся их стандартным encoding/json: прирост оказался скромным - лучший результат +4,7%, а большинство случаев в диапазоне 2–3% https://kodikapusta.ru/news/1173-pogovorim-pro-pgo Поддержать проект на boosty и читать в MAX
926
8
KV на S3 #golang Статья разбирает, как построить key-value базу данных, у которой основным слоем хранения является объектное
KV на S3 #golang Статья разбирает, как построить key-value базу данных, у которой основным слоем хранения является объектное хранилище вроде S3, на примере движка IsleDB на Go, и почему наивная замена "файлов на диске" на "объекты в бакете" не работает. СУБД неявно полагается на атомарное переименование, дешевые случайные чтения и понятный ответ на вопрос "записалось ли?". Ключевая идея в том, что LSM-дерево уже идеально ложится на объектную модель, а видимость состояния задается не перечислением бакета, а маленьким мутабельным объектом заголовком, который обновляется условной записью (используется CAS), дополняется токеном для защиты от "оживших" старых писателей и ограниченным маркером коммита для разрешения ситуации "запись прошла, но ответ потерялся". Объектное хранилище вот совсем не убирает сложные проблемы СУБД. Наборот, концентрирует их в небольшом наборе протоколов публикации и жизненного цикла, которые и становятся настоящим "транзакционным движком" https://kodikapusta.ru/news/1175-kv-na-s3 Поддержать проект на boosty и читать в MAX
1 143
9
Go идеален для AI #golang #ai В эпоху ИИ-помощников узкое место разработки сместилось с написания кода на его проверку, ревью
Go идеален для AI #golang #ai В эпоху ИИ-помощников узкое место разработки сместилось с написания кода на его проверку, ревью и сопровождение А какой язык просто читать? Конечно Go! Go - это целая платформа со встроенным форматтером, тестами, управлением зависимостями и инструментами безопасности, которые ИИ-агенты могут использовать для самокоррекции и генерации более надежного кода. Ставка на читаемость и строгую стандартизацию делает сгенерированный код предсказуемым и легким для проверки человеком, а статическая типизация и быстрая компиляция позволяют отлавливать галлюцинации моделей еще до запуска в проде. Наконец, гарантия обратной совместимости, единый статический бинарник и встроенные инструменты модернизации обеспечивают долгосрочную поддерживаемость кода, который пишут люди и ИИ совместно https://kodikapusta.ru/news/1172-go-idealen-dlia-ai Поддержать проект на boosty и читать в MAX
1 182
10
paneru #rust #tools Оконный менеджер для macOS, который размещает окна на бесконечной полосе, расширяющейся вправо. При откры
paneru #rust #tools Оконный менеджер для macOS, который размещает окна на бесконечной полосе, расширяющейся вправо. При открытии нового окна размер существующих окон не меняется, новые окна не накладываются друг на друга - все окна просто красиво выровнены в один ряд с возможностью прокрутки. Интересный опыт https://kodikapusta.ru/tools/41-paneru Поддержать проект на boosty и читать в MAX
1 089
11
Typescript Defer #golang Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScript, реализовав парс
Typescript Defer #golang Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScript, реализовав парсинг, проверки и AST-трансформацию, которая оборачивает тело функции в try/finally и выполняет отложенные вызовы в обратном порядке (LIFO) с захватом значений на момент регистрации. В процессе он столкнулся с принципиальными сложностями: ошибки в JavaScript - это поток управления, а не значения, как в Go, поэтому пришлось вводить политики агрегации исключений через AggregateError, последовательный await для асинхронной очистки и явный запрет defer await. В итоге автор пришел к выводу, что defer плохо ложится на модель ошибок TypeScript/JavaScript, и рекомендует использовать нативный using из пропозала Explicit Resource Management как более идиоматичную альтернативу, что логично https://kodikapusta.ru/news/1164-typescript-defer Поддержать проект на boosty и читать в MAX
1 219
12
Go 1.27 #golang Антон Жиянов делал интерактивные туры по Go с версии 1.22 по 1.26, но решил остановиться. Хесус Эспино подхва
Go 1.27 #golang Антон Жиянов делал интерактивные туры по Go с версии 1.22 по 1.26, но решил остановиться. Хесус Эспино подхватил эстафету и разбирает здесь огромный массив нововведений Go 1.27 - от обобщенных методов и профиля goroutineleak до нового пакета uuid и экспериментальной переносимой SIMD https://kodikapusta.ru/news/1161-go-1-27 Поддержать проект на boosty и читать в MAX
1 139
13
SIMD в go #golang Будущее пришло быстрее, чем ожидалось: в go1.27rc2 пакет simd стал портируемым, и один Go-код разворачивает
SIMD в go #golang Будущее пришло быстрее, чем ожидалось: в go1.27rc2 пакет simd стал портируемым, и один Go-код разворачивается в Neon на Apple Silicon и в AVX2 на Intel. Это наборы векторных инструкций двух процессорных миров, ликбез по ним как раз в этой статье. Автор проверит обещания портируемости на живом железе: один исходник, два дизассемблера, две пачки замеров. Ассемблер писать не будем, весь код запускается копипастой Годная статья на Хабре. Аж не верится https://kodikapusta.ru/news/1160-simd-v-go Поддержать проект на boosty: https://boosty.to/kodikapusta
1 353
14
Swiss Tables #golang Статья подробно разбирает переход Go 1.24 от классической bucket-архитектуры мап к Swiss Tables - дизайн
Swiss Tables #golang Статья подробно разбирает переход Go 1.24 от классической bucket-архитектуры мап к Swiss Tables - дизайну, позаимствованному из Abseil, который заменяет цепочки оверфлоу-указателей на плоское открытое адресование с компактными контрольными байтами и групповым probing'ом по 8 слотов. Swiss Tables позволяют совершать меньше промахов кеша за счет отказа от «погони за указателями», увеличивается допустимая плотность заполнения, и фильтрация кандидатов становится более быстрой по h2-отпечатку до полноценного сравнения ключей. На микробенчмарках доступ к большим мапам ускорился на 30–35%, итерация - до 60% на разреженных картах, однако на уровне приложений выигрыш скромнее, около 1.5% в среднем, а в сценариях с холодным кешем и очень большими разреженными мапами возможны регрессы. Да-да, уже 100% раз читали про швейцарские таблицы. Но статью в закладки лучше добавить https://kodikapusta.ru/news/1153-swiss-tables Поддержать проект на boosty: https://boosty.to/kodikapusta
1 230
15
metago #golang #tools Инструмент метапрограммирования для Go на основе шаблонов: вы определяете переиспользуемый Go-шаблон в
metago #golang #tools Инструмент метапрограммирования для Go на основе шаблонов: вы определяете переиспользуемый Go-шаблон в файле *.metago (синтаксис Go-темплейтов), а в исходном коде вешаете директиву //mgo:gen stringer на тип или объявление, и metago рекурсивно сканирует проект, находит все шаблоны и генерирует код в сайдкар-файлы meta.go рядом с исходниками. Поддерживает встроенную генерацию через //mgo:inline ... //mgo:end, кастомные параметры, аргументы с дефолтами через metago.toml и встроенные стандартные шаблоны: std.stringer, std.enum, std.mock, std.serde. И один шаблон может собирать данные из всех директив пакета Вот с этими //mgo:gen ... прям приятно работать https://kodikapusta.ru/tools/29-metago Поддержать проект на boosty: https://boosty.to/kodikapusta
1 117
16
Визуализируем GC #golang Статья наглядно исследует новый сборщик мусора Green Tea в Go 1.25/1.26. Автор пишет визуализатор ку
Визуализируем GC #golang Статья наглядно исследует новый сборщик мусора Green Tea в Go 1.25/1.26. Автор пишет визуализатор кучи, показывающий, как Go размещает объекты одного размерного класса рядом друг с другом и сравнивает его с C#. Он отмечает, что в отличие от C#, Go никогда не перемещает их при сборке. Ключевое улучшение Green Tea в том, что вместо обхода указателей по мере их обнаружения со случайным доступом к памяти, GC теперь сканирует span целиком и сохраняет знания о найденных указателях в очередь на будущее и это подтверждается через perf. В конуе автор демонстрирует главную слабость неперемещающего GC. После освобождения 90% объектов разряженные страницы не возвращаются системе, потому что выжившие объекты "закрепляют" span'ы. Для сравнения, компактирующий GC в C# справляется с этим автоматически, а в Go приходится вручную копировать выжившие объекты в новые слайсы https://kodikapusta.ru/news/1147-vizualiziruem-gc Поддержать проект на boosty: https://boosty.to/kodikapusta
1 036
17
Арены жалко #golang Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделять память крупными пулами
Арены жалко #golang Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделять память крупными пулами в обход GC для снижения накладных расходов в высоконагруженных сценариях. Автор считает это стратегической ошибкой. Формальной причиной стали проблемы безопасности, когда можно попытаться использовать память после ее освобождения. И еще никому не понравилась несовместимость с интерфейсами - пришлось бы добавлять аргумент *Arena в сигнатуры функций, и это раскололо бы экосистему на стандартный и arena-миры, подобно тому как context.Context когда-то "инфицировал" весь Go. Но, по мнению автора, реальная опасность в том, что Go добровольно ограничил свой потолок производительности в момент, когда быстрые интерпретируемые языки догоняют его сверху, а системные языки вроде Rust и Zig становятся проще снизу. Go рискует остаться застывшим в "среднем" сегменте, став COBOLом облачной эпохи https://kodikapusta.ru/news/1137-areny-zhalko Поддержать проект на boosty и читать в MAX
1 253
18
687 ГБ аллокаций #golang Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что одна строка кода s.kvL
687 ГБ аллокаций #golang Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что одна строка кода s.kvList[k] = append(v[popped:], s.kvList[k]...) за время бенчмарка суммарно аллоцировала 687 ГБ памяти. Реально приложение держало в памяти лишь около 4,58 МБ. В чем прикол? Проблема была в том, что LPUSH каждый раз создавал новый массив и копировал весь существующий список, давая O(n²) по аллокациям, тогда как RPUSH использовал штатную стратегию роста слайсов с амортизированным O(1). Замена на deque с двумя индексами, растущий от середины в обе стороны, ускорила LPUSH в 33 раза, а аллокации упали с 715 ГБ до 27 ГБ Нужно быть внимательным https://kodikapusta.ru/news/1136-687-gb-allokatsii Поддержать проект на boosty и читать в MAX
1 070
19
HTMX с Go #golang Автор детально описывает свои паттерны интеграции HTMX с Go. Почитайте, там много всего интересного. Но мне
HTMX с Go #golang Автор детально описывает свои паттерны интеграции HTMX с Go. Почитайте, там много всего интересного. Но мне весь это веб всё еще не нравится. Любой HTML - это в первую очередь ебля со стилями. Я хотел бы, чтобы уже сделали как во Flutter или Qt, чтобы было очевидно, как выравнивать и форматировать блоки. А не вот это всё https://kodikapusta.ru/news/1135-htmx-s-go Поддержать проект на boosty и читать в MAX
1 064
20
GALA #golang #tools GALA (Go Alternative LAnguage) - статически типизированный функциональный язык, транспилирующийся в Go, к
GALA #golang #tools GALA (Go Alternative LAnguage) - статически типизированный функциональный язык, транспилирующийся в Go, который приносит в экосистему Go sealed-типы с исчерпывающим паттерн матчиг, монадический стек, иммутабельные коллекции и do-нотацию с накоплением ошибок через Validated и конкурентным выполнением через Future. Уже даже есть примеры проектов на GALA Кароче, ребята решили SCALA написать на Go https://kodikapusta.ru/tools/24-gala Поддержать проект на boosty и читать в MAX
1 055