Релиз Go 1.25: умный GOMAXPROCS для контейнеров, ускоренный на 40% GC и «черный ящик» для отладки
Новости
Пробежались по релизу и его основным моментам
395 открытий4К показов
Состоялся релиз Go 1.25. Разработчики заметно улучшили рантайм и инструменты, при этом не изменяя сам язык.
Одно из главных новшеств — container-aware GOMAXPROCS: теперь по умолчанию значение GOMAXPROCS учитывает лимиты CPU в cgroup.
На Linux это позволит процессам внутри контейнеров (например, в Kubernetes) автоматически адаптировать использование процессорных ресурсов к выделенной квоте.
Параметр обновляется динамически, если лимиты меняются, и может быть отключен через переменные окружения.
Новый сборщик мусора — до 40% быстрее
В экспериментальном режиме появился garbage collector нового поколения с улучшенной локальностью и масштабируемостью.
Он особенно эффективен в приложениях с большим количеством мелких объектов, снижая накладные расходы на GC на 10–40%. Включается через GOEXPERIMENT=greenteagc.
Trace Flight Recorder: отладка по горячим следам
Введен runtime/trace.FlightRecorder — «черный ящик» для приложений на Go.
Он постоянно пишет трейс в кольцевой буфер, позволяя при наступлении события выгрузить последние секунды исполнения в файл.
Нововведение значительно упрощает отладку редких и трудно воспроизводимых багов.
Другие изменения в рантайме и инструментах
- Исправлена ошибка компилятора с отложенной проверкой
nil, из-за которой некорректный код мог выполняться без паники. - Добавлена поддержка DWARF5 — меньше отладочной информации и быстрее линковка.
- Улучшено выделение памяти для слайсов — быстрее в ряде сценариев.
- В Linux теперь можно видеть имена анонимных VMA (
[anon: Go: heap]) в отладочных инструментах ядра. - Новый пакет
testing/synctestдля тестирования конкурентного кода с виртуальным временем. - Экспериментальный пакет
encoding/json/v2с ускоренным парсингом и расширенной конфигурацией маршалера. - Новый метод
WaitGroup.Goдля удобного запуска горутин с учетом синхронизации.
Платформенные изменения
Go 1.25 требует macOS 12 и выше. 32-битная Windows/ARM-платформа будет удалена в следующем релизе.
На RISC-V появился режим сборки плагинов и поддержка профиля RVA23U64.
395 открытий4К показов



