Выпуск языка программирования Go 1.21
Автор
Сообщение
news_bot ®
Стаж: 6 лет 11 месяцев
Сообщений: 27286
Представлен релиз языка программирования Go 1.21, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.
Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Среди изменений в новом выпуске:
- Реализована поддержка оптимизаций на основе результатов профилирования кода (PGO - Profile-guided optimization), учитывающих особенности, определяемые во время выполнения программы. Учёт профиля выполнения при сборке позволяет повысить производительность приложений на 2-7%. Оптимизации автоматически включаются при наличии файла default.pgo во время сборки, подготовленного утилитой pprof. Для выбора другого профиля предусмотрена опция "-pgo".
- В утилите go обеспечена прямая и обратная совместимость с другими версиями языка Go, что позволяет использовать старый инструментарий для сборки нового кода и наоборот.
- Добавлены встроенные функции min и max для выбора наименьшего/наибольшего значения, а также функция clear для удаления или обнуления всех элементов в структурах map или slice.
- Улучшен вывод типов в обобщённых функциях (дженериках), предназначенных для работы сразу с несколькими типами.
- Добавлена экспериментальная поддержка новой семантики обработки переменных в циклах, позволяющей избежать типовых ошибок из-за специфичного поведения при использовании замыканий и сопрограмм в итерациях. Новая семантика подразумевает создание для каждой итерации цикла отдельного экземпляра переменной, объявленной в цикле "for" при помощи оператора ":=".
- В стандартную библиотеку добавлены новые пакеты:
- log/slog - функции для записи структурированных логов.
- slices - типовые операции со срезами (slice) любых типов. Например, предложены функции для сортировки, более быстрые и гибкие, чем функции из пакета sort.
- maps - полезные операции над отображениями (map) с любыми типами ключей и элементов.
- cmp - функции для сравнений упорядоченных значений.
- Компилятор пересобран с включением PGO-оптимизаций, что позволило ускорить сборку программ на 2-4%.
- Проведена оптимизация сборщика мусора, позволившая до 40% уменьшить задержки в некоторых приложениях.
- Снижены накладные расходы при трассировке кода при помощи пакета runtime/trace на системах с архитектурой amd64 и arm64.
- Реализован экспериментальный порт (GOOS=wasip1, GOARCH=wasm) для компиляции в промежуточный код WebAssembly, использующий API WASI (WebAssembly System Interface) для обеспечения обособленного запуска.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://go.dev/blog/go1.21...)
- OpenNews: Выпуск языка Go 1.20. SourceHut отменил блокировку зеркала модулей Go
- OpenNews: В инструментарий для языка Go добавлена возможность отслеживания уязвимостей в модулях
- OpenNews: Google намерен добавить телеметрию в инструментарий для языка Go
Похожие новости:
- Уязвимость в пакетном менеджере Cargo
- Google продвигает API Web Integrity, подрывающий открытый характер Web
- Google предложил Device Memory TCP для сетевой передачи данных между устройствами
- Выпуск Tinygo 0.28, компилятора языка Go на базе LLVM
- Google назвал обладателей премии Open Source Peer Bonus 2023
- Google опубликовал результат аудита используемых пакетов на языке Rust
- Amazon и Google открыли код систем fuzzing-тестирования Snapchange и Buzzer
- Первый стабильный выпуск FerretDB, реализации MongoDB на базе СУБД PostgreSQL
- Google намерен добавить телеметрию в инструментарий для языка Go
- Выпуск языка Go 1.20. SourceHut отменил блокировку зеркала модулей Go
Теги для поиска: #_go, #_golang
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 03-Фев 05:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 11 месяцев |
|
Представлен релиз языка программирования Go 1.21, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD. Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си. Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора. Среди изменений в новом выпуске:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 03-Фев 05:59
Часовой пояс: UTC + 5