gram news
Golang Дайджест channel avatar

Golang Дайджест

@golang_digest

Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др. Посты публикуются не часто - только самое важное, с чем я лично ознакомился. Поэтому можно не мьютить канал =) Обратная связь: @justskiv

ProjectsRUProgramming

9,080subscribers

Open the Channel

Latest posts

  • Golang Дайджест

    16 Sept, 09:04

    2,40016104Open in Telegram
  • Golang Дайджест

    15 Sept, 13:02

    forwarded from @ntuzov

    Дописал самый большой кусок статьи про Go 1.27 — раздел про постквантовые подписи.В 1.27 приехал пакет crypto/mldsa и вся обвязка вокруг него (сертификаты, TLS). Обмен ключами добавили ещё в 1.24, а теперь очередь дошла до аутентификации — то есть на чистом Go наконец-то полностью собирается постквантовый хендшейк 🎉Обычно этому разделу в обзорах уделяют незаслуженно мало внимания — многие плохо понимают в чём тут суть, и кажется, что это касается каких-то мифических "специалистов по безопаности". А те кто разбираются чуть лучше, думают что чесаться ещё рано, потому что достаточно мощных квантовых компьютеров ещё не существует. Но на самом деле, это касается всех нас уже сейчас.В новом разделе я написал подробный ликбез про постквантовую криптографию, а также объяснил почему это актуально уже сейчас.Также я там рассказал:- Почему главная проблема ML-DSA — размер, а не скорость
    GoLang GuidesGo 1.27: большой интерактивный разборРазбор Go 1.27 по draft release notes: дженерик-методы, движок encoding/json/v2, пакет uuid в stdlib, постквантовые подписи crypto/mldsa и профиль утечек горутин в pprof.
    1,8701796Open in Telegram
  • Golang Дайджест

    13 Sept, 08:36

    3,250351771Open in Telegram
  • Service message

    13 Sept, 08:36

  • Golang Дайджест

    27 Aug, 19:01

    forwarded from @ntuzov

    😐 Ультимативный разбор... Go 1.27?Честно, не знаю зачем я это сделал, но я сделал.. Ну почти.https://golang.guide/go-1-27/Сначала я решил просто написать базовый обзор релиза. Но потом я увлёкся и не смог вовремя остановиться.Мне хотелось не просто сухо рассказать об изменениях, а добиться глубокого понимания читателя — причины этих изменений, какие проблемы они решают, как реализовано, почему именно сейчас, какая история стоит за самыми интересными фичами. При этом, я старался писать так, чтобы всё это читалось интересно и легко.В итоге, работа над статьёй так сильно затянулась, что когда она выйдет, сам релиз уже никому не будет интересен. Поэтому я решил опубликовать ту её часть, которая уже готова — это примерно 60%, и туда вошло всё самое интересное и важное:- Дженерик-методы, которые десять лет обещали не добавлять - Новый движок JSON
    Image from a post by Golang ДайджестImage from a post by Golang Дайджест
    3,9704217Open in Telegram
  • Golang Дайджест

    19 Aug, 20:48

    🦄 Go 1.27: дженерик-методы, json/v2 в проде и профиль утёкших горутин 🟠Draft release notes — релиз ожидается уже в августе Главное — дженерик-методы Я писал об этом ещё на этапе пропозала, поэтому подробно описывать тут не буду. Вкратце: метод теперь может
    go.devGo 1.27 Release Notes - The Go Programming Language
    5,96031972Open in Telegram
  • Golang Дайджест

    13 Aug, 14:52

    📆Канал с разборами внутренностей Go и не толькоХочу порекомендовать вам ещё один канал, который сам давно почитываю — очень крутые глубокие разборы и авторский стиль, всё как я люблю.Не реклама, честная рекомендация 🫶
    TelegramDaria’s roomКопаюсь в недрах Go, проектирую схемы, абстракции, а главное - учусь Буду рада пообщаться! -> @darya_smyr https://github.com/dariasmyr
    7,630211351Open in Telegram
  • Golang Дайджест

    11 Aug, 10:35edited

    SIMD в Go 1.27https://habr.com/ru/articles/1062972/Раз уж в Go завозят SIMD, вот хороший разбор по нему.Начинается с ликбеза — как процессор вообще складывает числа, что такое векторные регистры и полосы, почему одна инструкция может сложить восемь чисел за раз. Дальше автор берёт go1.27rc2 и проверяет всё руками на двух машинах: M3 Pro и i9-14900KF.Напомню, что в 1.27 под флагом GOEXPERIMENT=simd обещают портируемый пакет simd: типы вида Float32s, у которых ширина неизвестна на этапе компиляции. Компилятор кладёт в бинарь четыре ветки (@simd0/128/256/512) и на рантайме выбирает нужную.Основные тезисы разбора:- Дизассемблер: FADD против VADDPS - Откуда берётся ускорение — и почему обещанные 8x на практике превращаются в 5x - Стена памяти: пока массив влезает в L3 — 5x, а дальше упор в память и 2.2x - P-ядра против E-ядер и куда вообще сядет ваш бенчмарк - Где SIMD не помогает
    7,11011631Open in Telegram
  • Golang Дайджест

    17 Jul, 12:17edited

    🦄 Go 1.27: дженерик-методы, json/v2 в проде и профиль утёкших горутин🟠Draft release notes — релиз ожидается уже в августеГлавное — дженерик-методыЯ писал об этом ещё на этапе пропозала, поэтому подробно описывать тут не буду.Вкратце: метод теперь может объявлять собственные типовые параметры. Долгое время такое приходилось писать в виде обычной функции:// Было — только обычной функцией func MapSliceT, U any U) Slice[U]// Стало — можно методом func (s Slice[T]) MapU any U) Slice[U]То есть, мы писали MapSlice(s, f) вместо s.Map(f). Потому что метод так не умел. Теперь умеет.Из ограничений: методы интерфейсов свои типовые параметры объявлять не могут, и дженерик-метод не может реализовать метод интерфейса.
    Image from a post by Golang ДайджестImage from a post by Golang Дайджест
    8,7605721121Open in Telegram
  • Golang Дайджест

    12 May, 17:08

    forwarded from @go_update

    ⚠️ CVE-2026-42501 или почему вам нужно обновиться до Go 1.26.3/go1.25.10 ⚠️Те кто давно работают с Go (или читают меня) знают, что целостность наших модулей гарантируется не только HTTPS транспортом до самой прокси, но и отдельной базой SumDB, которая хранит в себе хеши модулей подписанные приватным ключом. При этом сама база устроена так, что невозможно внести изменения в прошлые записи, без каскада изменений в новые, тк каждый блок «подписан» предыдущим.Но в ИБ сама безопастность это устойчивость самого слабого звена в цепочке. Достаточно одной маленькой ошибки, что-бы вся надежно выстроенная архитектура ИБ превратилась в пыль. Так и случилось в нашем случае.Рассмотрим сценарий: при получении модуля от прокси, Go проверяет его хеш с использованием SumDB, блоки которой, как я уже говорил выше, подписаны приватным ключом. В псевдокоде это выглядит следующим образом:for _, line
    TelegramGo UpdateПро go mod tidy | verify | download Задумывались ли вы о том, как именно Go проверяет целостность ваших скаченных модулей? Как наш тулчейн проверяет, что зависимости которые вы видите в своем проекте, соответствуют зависимостям которые видят другие разработчики?…
    8,8701073Open in Telegram
  • Golang Дайджест

    17 Apr, 14:17

    👴 Почему в Go нет тернарного оператора?https://dburov.com/ru/research/go-ternaryДмитрий Буров провёл большое исследование на эту старую добрую тему и попросил меня поделиться ей, чтобы собрать мнение сообщества — внизу статьи есть короткий опрос из 4 вопросов.Вкратце, о чём материал:- Позиция core-команды Go не менялась с 2009 года: ?: порождает непроницаемо сложные выражения, if-else «бесспорно яснее», языку нужна только одна конструкция управления потоком- Проблема в том, что эта позиция никогда не подкреплялась реальными данными — только мнением авторов языка. Каждый новый proposal с 2019 года закрывается ссылкой на FAQ без содержательного разбора- Дмитрий написал статический анализатор и прогнал 4 крупных репозитория: golang/go, kubernetes, terraform, traefik- Нашёл 22 000+ паттернов, которые однозначно заменяются плоским тернарником
    DburovТернарный оператор в Go – почему в языке нет «?:» и почему это может быть ошибкойЭмпирическое исследование: статический анализ публичных Go-репозиториев, разбор аргументов команды Go и proposal по добавлению условного выражения в язык.
    8,4202914118Open in Telegram
  • Golang Дайджест

    22 Mar, 17:08

    🟦 ❤️ Modern Go Guidelines от GoLand Team — чтобы AI-агенты перестали писать устаревший Gohttps://github.com/JetBrains/go-modern-guidelinesРебята из JetBrains сделали набор гайдлайнов для AI-агентов (Claude Code и Junie), чтобы те писали современный Go, а не код образца 2018 года.Проблема реальная и знакомая каждому, кто пользуется ИИ-ассистентами для Go:- Отсечка данных: модели не знают фичи, добавленные после их обучения. Claude Opus 4.6 обучен по май 2025 — про Go 1.26 он не в курсе.- Частотный перекос: в тренировочных данных в разы больше for i := 0; i < n; i++, чем for i := range n. Модель выбирает то, что встречала чаще.В результате агент вместо slices.Contains(roles, role) пишет ручной цикл на 7 строк, вместо new("hello") городит s := "hello"; &s, а про errors.AsType[T] вообще не слышал.Что делает
    GitHubGitHub - JetBrains/go-modern-guidelines: Help AI coding agents write modern GoHelp AI coding agents write modern Go. Contribute to JetBrains/go-modern-guidelines development by creating an account on GitHub.
    10,200351211Open in Telegram
  • Golang Дайджест

    6 Mar, 09:27

    🔨 Два активных proposal с жаркой дискуссией Proposal #1: Вернуть go mod init к здравому смыслу В Go 1.26 тихо поменяли поведение go mod init: теперь он выставляет в go.mod директиву go 1.25 вместо go 1.26. Идея была в том, чтобы новый модуль был "по умолчанию
    go.devRelease History - The Go Programming Language
    8,420258Open in Telegram
  • Golang Дайджест

    3 Mar, 18:13

    🔨 Два активных proposal с жаркой дискуссиейProposal #1: Вернуть go mod init к здравому смыслуВ Go 1.26 тихо поменяли поведение go mod init: теперь он выставляет в go.mod директиву go 1.25 вместо go 1.26. Идея была в том, чтобы новый модуль был "по умолчанию совместим" со старыми тулчейнами.Проблема в том, что это ломает ожидания:$ go version go version go1.26$ go mod init myproject # go.mod теперь содержит: go 1.25$ go build ./main.go: new(42) requires go1.26 or laterТо есть читаешь про новые фичи Go 1.26, устанавливаешь его, создаёшь новый проект — и получаешь ошибку! Потому что go mod init тайком выставил тебе прошлую версию 😡Автор proposal (и большинство комментаторов) считают это контринтуитивным: если хочешь поддерживать старые версии — осознанно понизь директиву сам. По умолчанию же должна быть
    GitHubcmd/go: change `go mod init` default go directive back to 1.N · Issue #77653 · golang/goProposal Details I was surprised to see #74748 in 1.26. I think this behavior is confusing: ❯ cat t.go package main import "fmt" func main() { fmt.Println(new(42)) } ❯ go run t.go 0x4a524...
    8,00021154Open in Telegram
  • Golang Дайджест

    27 Feb, 02:42

    🧬 Proposal: Generic Methods для Go Robert Griesemer (один из авторов языка) открыл proposal, который многие считали невозможным. Go FAQ буквально говорил: > We do not anticipate that Go will ever add generic methods Но теперь — возможно, добавят 👍 Суть
    GitHubspec: generic methods for Go · Issue #77273 · golang/goProposal: Generic Methods for Go A change of view. Background For clarity, in the following we use the term concrete method (or just method when the context is clear) to describe a non-interface me...
    9,140341541Open in Telegram
  • Golang Дайджест

    23 Feb, 17:19

    🧬 Proposal: Generic Methods для Go Robert Griesemer (один из авторов языка) открыл proposal, который многие считали невозможным. Go FAQ буквально говорил: > We do not anticipate that Go will ever add generic methods Но теперь — возможно, добавят 👍 Суть
    9,020poll64Open in Telegram
  • Golang Дайджест

    23 Feb, 16:51edited

    🧬 Proposal: Generic Methods для GoRobert Griesemer (один из авторов языка) открыл proposal, который многие считали невозможным. Go FAQ буквально говорил:> We do not anticipate that Go will ever add generic methodsНо теперь — возможно, добавят 👍Суть в том, что раньше дженерик-методы блокировались по цепочке: если методы могут принимать параметры типов, значит и методы интерфейсов тоже должны. А это не знали как реализовать эффективно — в Go тип реализует интерфейс неявно, поэтому компилятор не может знать заранее, для каких конкретных типов нужно будет скомпилировать метод.Ключевой сдвиг в мышлении: метод — это не только способ реализовать интерфейс. Метод — это функция, привязанная к типу, удобная для организации кода и читаемая слева направо. Эти две вещи ортогональны.Поэтому компромисс такой: методы могут быть generic, но не могут
    Image from a post by Golang ДайджестImage from a post by Golang Дайджест
    10,70028118Open in Telegram
  • Golang Дайджест

    22 Feb, 09:42

    forwarded from @tuzov_ai_lab

    😩 Go Team vs вайбкодерыhttps://groups.google.com/g/golang-dev/c/4Li4Ovd_ehEКто-то залил CL (changelist, аналог Pull Request в системе Gerrit) в Go с тегом Co-Authored-By: Claude Opus 4.5 в описании коммита. Ian Lance Taylor это заметил и поднял вопрос в рассылке golang-dev: а вообще есть ли политика по поводу AI-написанного кода? Авторские права, CLA — всё это висит в воздухе.Ответ Rob Pike:> Это очень скользкая дорожка. Осторожнее с первым шагом. Рекомендую просто сказать: нет.Через несколько дней Russ Cox написал огромный взвешенный ответ. И это, пожалуй, лучший текст о месте AI в разработке, что я читал за последнее время. Рекомендую вам ознакомиться с ним целиком лично.Самый сочный кусок — про "танцующих слонов":> Люди хвастаются кодовыми базами на сотни тысяч строк, которые никто никогда не смотрел, написанными в рекордные сроки. При
    5,9505733141Open in Telegram
  • Golang Дайджест

    21 Feb, 06:59

    Обещают в ближайших постах в блоге рассказать больше о новом go fix и как оно работает внутри
    go.devUsing go fix to modernize Go code - The Go Programming LanguageGo 1.26 includes a new implementation of go fix that can help you use more modern features of Go.
    7,6405153Open in Telegram
  • Golang Дайджест

    21 Feb, 01:03

    Пишем JSON-парсер с нуля на Gohttps://sushantdhiman.dev/lets-write-a-json-parser-from-scratch/Sushant Dhiman разбирает, как написать JSON-парсер с нуля — от токенизации до AST.Статья небольшая, но хорошо структурированная. Два основных этапа:Токенизатор — проходит по строке посимвольно и разбивает её на токены: {, "key", :, 123 и т.д. Отдельно обрабатываются строки (с учётом экранирования), числа, литералы true, false, null.Парсер — принимает токены и строит AST. Каждый узел — отдельный тип (StringNode, ObjectNode, ArrayNode и т.д.), всё через рекурсивный parseValue.В конце задачка: попробуй преобразовать AST в нативные Go-структуры и использовать их. Неплохо для закрепления.————Традиционно люблю статьи «напиши X с нуля» — они хорошо прокачивают понимание внутреннего устройства привычных инструментов. Джэйсоны мы гоняем каждый день, даже не задумываясь что там внутри, а
    6,91025105Open in Telegram