Последний выпуск 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.