TGViewer
Golang Дайджест Golang Дайджест @golang_digest · 13.4K subscribers
Post #340 8.01K
🔨 Два активных 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 (и большинство комментаторов) считают это контринтуитивным: если хочешь поддерживать старые версии — осознанно понизь директиву сам. По умолчанию же должна быть версия твоего тулчейна.

Аргумент Go Team: "это полезно для совместимости при публикации модуля".
Контраргумент: forward compatibility в тулчейне уже решает эту проблему — если нужная версия не установлена, Go скачает её сам.

————

Proposal #2: UUID в стандартной библиотеке

Предложение добавить crypto/uuid в stdlib. Открыто ещё в августе 2023 (!!), обсуждение до сих пор живое.

Аргументы за очевидны: UUID нужен в каждом втором сервисе, google/uuid — один из самых популярных импортов в Go-проектах, и практически все языки уже имеют UUID из коробки — C#, Java, Python, JavaScript, Ruby. Go — исключение.

Статус в Proposal Projects — "Likely Accept", то есть Go Team склоняется к тому, чтобы принять. Шансы появления UUID в stdlib довольно высокие.

————

Мне тут даже комментировать нечего — решение про go mod init считаю крайне странным, надо вернуть его в норму.
Представьте лицо новичка в Go, который впервые создал проект 😄

🟢В списке релизов уже можно видеть, что в Go 1.26.1 это поведение откатят

Добавить генерацию UUID в stdlib давно пора.

Если подытожить, оба proposal отражают одно и то же: Go бережёт обратную совместимость и осторожничает с расширением stdlib — иногда в ущерб удобству разработчика.

#proposal #go1_26
GitHub cmd/go: change `go mod init` default go directive back to 1.N · Issue #77653 · golang/go Proposal 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...
  • ❤ 21
  • 👍 15
  • 🔥 4
More from @golang_digest
  1. Sep 16, 2026Post #363
  2. Sep 15, 2026Дописал самый большой кусок статьи про Go 1.27 — раздел про постквантовые подписи. В 1.27…
  3. Sep 13, 2026Post #361
  4. Sep 13, 2026Post #360
  5. Aug 27, 2026😐 Ультимативный разбор... Go 1.27? Честно, не знаю зачем я это сделал, но я сделал.. Ну п…
  6. Aug 19, 2026Вышел Go 1.27 https://go.dev/doc/go1.27 Подробный интерактивный разбор ещё готовлю, подкас…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →