Вышла новая версия языка Go - Go 1.27 — 20 августа 2026 г. в 09:05:58.083
Вышла новая версия языка Go - Go 1.27 В целом релиз получился насыщенным: он и расширяет возможности языка, и закрывает практические потребности разработчиков, и даtт инструменты для оптимизации и отладки. Хотя релиз не является революционным, но изменений действительно много, и они затрагивают и сам язык, и инструменты, и стандартную библиотеку. ## Что нового в языке * Дженерик-методы. Теперь методы структур могут иметь собственные типовые параметры, а не только функции пакета. Это позволяет писать обобщенный код прямо внутри типа, сохраняя инкапсуляцию. Например, вместо отдельных методов Int32N, Int64N для разных целочисленных типов можно написать один метод N * Гибкие структурные литералы. В композитных литералах ключом теперь может быть любой корректный селектор поля - можно напрямую инициализировать поля вложенных или встроенных структур, не создавая промежуточных объектов. * Расширение вывода типов. Механизм автоматического вывода типов для функций теперь работает во всех контекстах присваивания переменной. Это позволяет использовать обобщенные (generic) функции без явного указания типов аргументов. * Новая встроенная функция clear. Она работает со срезами, картами и параметрами типов. Позволяет сбрасывать коллекции без повторного выделения памяти - удобно при пулах или переиспользовании буферов. * //go:linkname для методов. Раньше эта директива работала только для функций. Теперь ее можно применять и к методам - это полезно для низкоуровневых оптимизаций или взаимодействия с кодом на C. ## Что добавили в стандартную библиотеку * Пакеты encoding/json/v2 и encoding/jsontext. Это переработанная с нуля реализация работы с JSON. Она строже проверяет данные (например, отвергает невалидный UTF-8 и дублирующиеся ключи в объектах) и заметно быстрее при распаковке (unmarshal). При этом старый пакет encoding/json остался для обратной совместимости - его API и поведение сохранены, и мигрировать принудительно не заставляют. * Пакет crypto/mldsa. Реализует схему цифровой подписи ML-DSA (Module-Lattice-Based Digital Signature Algorithm, стандарт FIPS 204) - один из алгоритмов, устойчивых к атакам на квантовых компьютерах. Поддержка также появилась в crypto/x509 (для сертификатов и ключей) и в crypto/tls (в TLS 1.3 добавлены схемы подписи MLDSA44, MLDSA65, MLDSA87 и обмен ключами MLKEM1024). * Пакет uuid. Теперь в стандартной библиотеке есть встроенная возможность генерировать и разбирать UUID-идентификаторы - больше не нужно подключать сторонние зависимости. * Экспериментальные пакеты simd и simd/archsimd. Они добавляют поддержку SIMD-инструкций (Single Instruction, Multiple Data) - возможность параллельно обрабатывать несколько данных одной командой процессора. Пакет simd переносимый и не привязан к конкретному размеру вектора или архитектуре. simd/archsimd получил обновленное API для amd64, а также поддержку arm64 (Neon) и WebAssembly. Оба пакета активируются флагом GOEXPERIMENT=simd при сборке. * Улучшения в других местах. В math/rand/v2 алгоритм генерации случайных чисел стал быстрее и безопаснее (по умолчанию используется криптографически стойкий сид). Добавлена функция slices.Concat для объединения нескольких срезов в один. В пакете compress/flate повышена скорость сжатия. ## Оптимизации и инструменты * Ускорение аллокаций памяти. Компилятор теперь генерирует специализированные под размер объекта вызовы аллокатора. Для мелких объектов (до 80 байт) накладные расходы снизились до 30%, а в программах с активным выделением памяти в среднем ожидается прирост производительности около 1%. Для тестирования есть временный флаг GOEXPERIMENT=nosizespecializedmalloc (его планируют удалить в Go 1.28). * Диагностика утечек горутин. Профиль goroutineleak в пакете runtime/pprof (доступен через эндпоинт /debug/pprof/goroutineleak в net/http/pprof) перевели в статус общедоступного (GA). Он помогает находить горутины, которые навсегда заблокировались на примитивах синхронизации (каналах или мьютексах) и стали недостижимы из активн

