12 августа 2025 года состоялся релиз языка программирования Go 1.25 с новым экспериментальным сборщиком мусора, обеспечивающим снижение накладных расходов на 10–40%. Этот проект развивает компания Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Исходный код языка Go распространяется под открытой лицензией BSD. Выпуск Go 1.22 состоялся в феврале 2024 года, релиз Go 1.23 произошёл в августе 2024 года. Версия Go 1.24 вышла в феврале 2025 года.
Согласно данным портала OpenNET, синтаксис Go основан на привычных элементах языка C, включая отдельные заимствования из языка «Оберон». Язык Go достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime‑компонентов), что позволяет добиться производительности, сопоставимой с программами на языке C.
Проект Go изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Основные изменения и доработки в выпуске Go 1.25:
добавлен экспериментальный сборщик мусора «greenteagc», рассчитанный на повышения производительности создания и сканирования небольших объектов. В приложениях, в которых активно применяется сборка мусора, при использовании «greenteagc» отмечается сокращение накладных расходов на сборку мусора на 10–40%;
добавлены экспериментальные пакеты encoding/json/v2 и encoding/json/jsontext. Первый пакет включает переработанную высокопроизводительную реализацию пакета encoding/json. Второй пакет предлагает функции для низкоуровневой обработки синтаксиса JSON;
в состав включён новый пакет testing/synctest для тестирования синхронизации между разными потоками параллельно выполняемого кода;
в команде «go build» по умолчанию активирована опция «‑asan», выполняющая проверку утечек памяти при завершении работы программы;
в команду «go vet» добавлены новые анализаторы «waitgroup» и «hostport» для проверки некорректного использования sync.WaitGroup.Add и fmt.Sprintf(«%s:%d», host, port).
при вычислении значения GOMAXPROCS теперь не просто выставляется число доступных логических CPU, но и учитываются применяемые в контейнерах ограничения производительности CPU.
в компиляторе и компоновщике реализована поддержка генерации отладочной информации в формате DWARF5, обеспечивающем более компактное представление данных.
Источник: habr.com