
19 августа 2026 года команда разработки языка Go официально представила Go 1.27. Судя по количеству изменений, релиз получился одним из самых насыщенных за последние годы — обновления коснулись синтаксиса языка, компилятора, стандартной библиотеки и набора инструментов. Ниже — то, что стоит знать в первую очередь.
Дженерик‑методы
Главное изменение в самом языке — теперь методы могут иметь собственные типовые параметры, а не только функции пакета. Раньше, если нужен был универсальный (generic) метод для конкретного типа, приходилось выносить его на уровень пакета и терять привязку к объекту. Теперь такой код можно писать напрямую как метод. Наглядный пример из стандартной библиотеки — пакет math/rand/v2, где раньше для каждого целочисленного типа существовал свой метод (Int32N, Int64N, IntN и так далее), а теперь их заменяет один обобщённый метод N.
Более гибкие структурные литералы
Ключом в структурном литерале теперь может быть не только имя поля верхнего уровня, а любой корректный селектор поля — это удобно, когда нужно проинициализировать поле вложенной или встроенной структуры напрямую, без промежуточных конструкций. Заодно расширили и вывод типов для функций — он теперь работает в любых контекстах, где generic‑функция присваивается переменной подходящего функционального типа.
Новый движок JSON
В стандартную библиотеку добавлены пакеты encoding/json/v2 и encoding/json/jsontext — по сути, переработанная с нуля работа с JSON. Новая версия строже относится к данным (например, не пропускает невалидный UTF-8 и дублирующиеся ключи в объектах) и заметно быстрее на распаковке (unmarshal). Важный момент: старый пакет encoding/json теперь работает поверх новой реализации, но его API и поведение сохранены — мигрировать никто не обязывает, а старое поведение всегда можно вернуть через опции.
Постквантовая криптография
Добавлен пакет crypto/mldsa с реализацией схемы подписи ML‑DSA (FIPS 204) — это один из алгоритмов, устойчивых к атакам на квантовых компьютерах. Поддержка дотянулась и до crypto/x509 (сертификаты и ключи ML‑DSA), и до crypto/tls, где в TLS 1.3 появились схемы подписи MLDSA44, MLDSA65 и MLDSA87. Заодно в TLS добавили обмен ключами MLKEM1024.
SIMD из коробки (пока экспериментально)
Го исторически обходился без встроенной поддержки SIMD‑инструкций, и вот появился экспериментальный пакет simd — переносимый, не завязанный на конкретный размер вектора и конкретную архитектуру. Рядом развивается более низкоуровневый simd/archsimd, который в этом релизе получил обновлённое API для amd64 и поддержку arm64 (Neon) и WebAssembly. Включаются оба флагом GOEXPERIMENT=simd при сборке.
Что ещё заметно
-
Ускорение аллокаций памяти. Компилятор теперь генерирует специализированные под размер объекта вызовы аллокатора — мелкие выделения (до 80 байт) стали быстрее до 30%, а в реальных программах с активным выделением памяти обещают в среднем около 1% прироста.
-
Диагностика утечек горутин. Профиль goroutineleak, который был экспериментом в Go 1.26, стал стандартной частью runtime/pprof и доступен через /debug/pprof/goroutineleak.
-
Новый пакет uuid — генерация и разбор UUID теперь есть прямо в стандартной библиотеке, без сторонних зависимостей.
-
Инструменты стали удобнее. go doc научился работать с синтаксисом package@version, go mod tidy сам приводит go.mod к аккуратной структуре из двух блоков require, а go fix пополнился новыми модернизаторами кода.
-
Юникод обновлён с версии 15 до версии 17.
Полный список изменений — в официальных релизных заметках, а объявление о релизе можно почитать в блоге команды Go.
