Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Релиз Go 1.25: умный GOMAXPROCS для контейнеров, ускоренный на 40% GC и «черный ящик» для отладки

Новости

Пробежались по релизу и его основным моментам

395 открытий4К показов
Релиз Go 1.25: умный GOMAXPROCS для контейнеров, ускоренный на 40% GC и «черный ящик» для отладки

Состоялся релиз 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К показов