Go 1.20 поставляется с экспериментальной поддержкой PGO, улучшениями и многим другим

Голанд

Go — параллельный скомпилированный язык программирования со статической типизацией, вдохновленный синтаксисом C.

В выпуск новой версии языка программирования Go 1.20, который разрабатывается компанией Google при участии сообщества как гибридное решение, сочетающее в себе высокую производительность компилируемых языков.

Новая редакция Go 1.20 выиграл от расширенного этапа разработки, что стало возможным благодаря расширенному тестированию, описанному выше, и общей улучшенной стабильности кодовой базы.

Стоит отметить, что проект изначально разрабатывался с прицелом на многопоточное программирование и эффективную работу на многоядерных системах, включая предоставление реализованных на носителе средств для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также обеспечивает встроенную защиту от переполнения выделенного блока памяти и предоставляет возможность использования сборщика мусора.

Синтаксис Go основан на знакомых элементах языка C с некоторыми заимствованиями из языка Oberon. Язык достаточно лаконичен, но код легко читается и понимается.

Go 1.20 основные новости

В представленной новой версии Go 1.20 подчеркивается, что она предоставилаo экспериментальная поддержка оптимизации по профилям (PGO), который учитывает характеристики, определяемые во время выполнения. С учетом профиля выполнения при сборке производительность приложений может быть улучшена на 3-4%. Добавлена ​​опция "-pgo" для включения PGO в команды go build, go install и другие команды сборки.

Еще одна представленная новинка заключается в том, что добавлены функции SliceData, String и StringData в пакет unsafe для низкоуровневых манипуляций с сегментами (массивами динамического размера) и строками (например, для преобразования области памяти, на которую указывает указатель, в строку типа string и наоборот).

В дополнение к этому, также выделено, что покрытие, расширено возможностью сбора профилей для программ в целом, а не только для модульных тестов, также добавлена ​​опция "-cover" для перехода к компиляции, установке и другим командам. построить для создания профиля покрытия.

утилита go освобождается от привязки к предварительно скомпилированным пакетам стандартной библиотеки расположенные в каталоге $GOROOT/pkg, что позволило исключить их из раздачи и добиться уменьшения размера загружаемых данных. Стандартные пакеты библиотек, как и обычные пакеты, теперь собираются по мере необходимости и кэшируются в кэше сборки.

Команда go по умолчанию отключает использование пакета cgo в системах без набора инструментов для компиляции кода C. Эти системы теперь используют варианты пакетов стандартной библиотеки на языке Go, а не используют предварительно скомпилированные пакеты.

Из другие изменения, которые выделяются новой версии:

  • Утилита vet имеет дополнительные предупреждения о проблемах с переменными, используемыми в циклах, которые обнаруживаются при параллельном выполнении тестов.
  • Правила преобразования типов расширены возможностью прямого преобразования из сегмента в массив.
  • Спецификация явно определяет порядок, в котором сравниваются элементы массива и поля структуры.
  • В стандартную библиотеку добавлен пакет crypto/ecdh с поддержкой обмена ключами ECDH (Elliptic Curve Diffie-Hellmann).
  • Добавлен новый тип http.ResponseController для создания полнофункциональных контроллеров ответов HTTP.
  • В тип httputil.ReverseProxy добавлена ​​функция Rewrite для изменения запроса.
  • Добавлена ​​функция context.WithCancelCause, позволяющая отменить вызов при указанной ошибке.
  • Поля Cancel и WaitDelay были добавлены в тип os/exec.Cmd для указания поведения при отмене контекста или завершении процесса.
  • В компиляторе и сборщике мусора уменьшено потребление памяти и оптимизирована производительность (прирост скорости достигает 2%).
  • Проделана работа по ускорению компиляции: сокращение времени компиляции может достигать 10%.
  • Добавлена ​​экспериментальная поддержка платформы FreeBSD на системах с архитектурой RISC-V (GOOS=freebsd, GOARCH=riscv64).

В конце концов Если вам интересно узнать об этом больше, вы можете проверить детали По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.