Вышел релиз-кандидат Go 1.27, финал ждут в августе 2026. Команда просит прогнать на нём свои тесты и нагрузку, пока есть время поймать регрессии. Что в нём интересного.
➡️ Дженерик-методы
Главная новость, которую ждали годами. Теперь метод может объявлять собственные параметры типа, а не только функция уровня пакета.
Раньше дженерик-функцию, привязанную к типу, приходилось выносить в область видимости всего пакета. Теперь так:
type Box[T any] struct{ v T }
func (b Box[T]) Map[U any](f func(T) U) Box[U] {
return Box[U]{f(b.v)}
}Методы интерфейсов параметры типа объявлять не могут, и дженерик-методом интерфейс не реализуешь.
➡️ JSON переписали
Появились пакеты
encoding/json/v2 и encoding/json/jsontext. Старый encoding/json теперь работает поверх v2. Поведение сохранили, но разбор JSON стал заметно быстрее, а кодирование осталось примерно на том же уровне. v2 строже по умолчанию, отвергает битый UTF-8 и дублирующиеся ключи в объекте. Если что-то сломалось, есть аварийный тормоз
GOEXPERIMENT=nojsonv2.➡️ UUID в стандартной библиотеке
Новый пакет
uuid генерирует и парсит UUID. Можно выкинуть одну внешнюю зависимость из проекта.➡️ Что ещё
Мелкие аллокации до 80 байт стали дешевле примерно на 30 процентов за счёт специализированных по размеру функций выделения памяти.
Профиль утечек горутин
goroutineleak доехал из эксперимента в стабильную версию и ловит горутины, навсегда заблокированные на канале или мьютексе. Добавили экспериментальный пакет
simd для портируемых векторных операций, включается через GOEXPERIMENT=simd. Завезли постквантовые подписи
crypto/mldsa по FIPS 204 и поддержку их в crypto/tls и crypto/x509. В strings и bytes появилась CutLast, в net/url методы Clone. Каналы из пакета
time теперь всегда небуферизованные, настройку asynctimerchan убрали навсегда. И минимум для macOS поднялся до Ventura 13.Поставить и попробовать.
go install golang.org/dl/go1.27rc1@latest
go1.27rc1 download
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoLive
