Мова програмування Go оновлена до версії 1.25
Після шести місяців роботи над проектом команда підтримки мови програмування Go представила реліз 1.25. Розробники помітно покращили рантайм, бібліотеки та набір інструментів, при цьому не змінюючи синтаксис самої мови.
В експериментальному режимі з’явився garbage collector нового покоління з покращеною локальністю та масштабованістю, який пришвидчує очистку пам’яті до 40%. Він є особливо ефективним у програмах з великою кількістю дрібних об’єктів. Збирач сміття вмикається через GOEXPERIMENT=greenteagc.
Одне з головних оновлень — container-aware GOMAXPROCS. Тепер за дефолтним значенням GOMAXPROCS враховує ліміти CPU в cgroup. На Linux це дозволить процесам усередині контейнерів (наприклад, Kubernetes) автоматично адаптувати використання процесорних ресурсів до виділеної квоті. Параметр оновлюється динамічно, якщо ліміти змінюються, його можна вимкнути через змінні оточення.
Щодо інших оновлень:
- З’явилась функція 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-платформа буде видалена у наступному релізі.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: