Последний выпуск Go, версия 1.21, выходит через шесть месяцев после Go 1.20. Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек. Как всегда, выпуск поддерживает обещание совместимости Go 1; на самом деле Go 1.21 улучшает это обещание. Мы ожидаем, что почти все программы Go продолжат компилироваться и работать, как и прежде.
Доступен первый Release Candidate (RC) для Go версии 1.21. Go 1.21 содержит массу новых функций и улучшений. Вы сможете поиграть с ним на ранней стадии, проверить его на своих рабочих нагрузках и сообщить о любых проблемах до официального выпуска, который ожидается в августе. Если вы получаете RC, также известный как релиз-кандидат.
Изменения языка
- Min, max и clear — это новые доступные встроенные функции.
- Несколько усовершенствований были внесены в возможности вывода типов универсальных функций. Спецификация теперь включает более подробное и понятное объяснение процесса вывода типа.
- Одна из самых распространенных ошибок, возникающих при программировании на Go, известна как захват переменных цикла, и мы хотим решить эту проблему в будущей версии языка программирования Go. Вы можете активировать предварительную версию этой функции, которая поставляется вместе с Go 1.21, используя переменную среды в написанном вами коде. Для получения дополнительной информации, пожалуйста, обратитесь к этой вики-странице Loopvar Experiment.
Дополнения к стандартной библиотеке
- Новый пакет log/slog для структурированного ведения журнала.
- Новый пакет слайсов для общих операций над слайсами любого типа элемента. Это включает в себя функции сортировки, которые обычно быстрее и удобнее, чем пакет сортировки.
- Новый пакет карт для общих операций с картами любого типа ключа или элемента.
- Новый пакет cmp с новыми утилитами для сравнения упорядоченных значений.
Улучшение производительности
- Поскольку компилятор Go был переписан с нуля с включенной поддержкой PGO для версии 1.21, скорость компиляции программ Go увеличилась на 2–4%, в зависимости от архитектуры хоста.
- В результате настройки сборщика мусора в некоторых приложениях может наблюдаться снижение хвостовой задержки до сорока процентов.
- На amd64 и arm64 значительно снижена нагрузка на ЦП, связанная со сбором трассировок через runtime/trace.
Команда "Перейти"
- Флаг сборки -pgo теперь по умолчанию имеет значение -pgo=auto, а ограничение на указание одного основного пакета в командной строке теперь снято. Если файл с именем default.pgo присутствует в каталоге основного пакета, команда go будет использовать его, чтобы включить оптимизацию на основе профиля для сборки соответствующей программы.
- Флаг -C dir теперь должен быть первым флагом в командной строке при использовании.
- Новая опция go test — полный путь — печатает полные имена путей в сообщениях журнала тестирования, а не только базовые имена.
- Флаг go test -c теперь поддерживает запись тестовых двоичных файлов для нескольких пакетов, каждый в pkg.test, где pkg — это имя пакета. Это ошибка, если более одного компилируемого тестового пакета имеют данное имя пакета.]
- Флаг go test -o теперь принимает аргумент каталога, и в этом случае тестовые двоичные файлы записываются в этот каталог, а не в текущий каталог.
Перейти
- В файлах, которые импортируют «C», цепочка инструментов Go теперь правильно сообщает об ошибках при попытках объявить методы Go для типов C.
В программное обеспечение было внесено множество модификаций, чтобы программисты могли получить лучший и богатый опыт. Чтобы узнать больше о том же, посетите официальный сайт и быстро ознакомьтесь с функциями.
Дополнительные материалы см. на странице https://bit.ly/3ijY5Gt.