Выпуск языка программирования Go 1.19
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Представлен релиз языка программирования Go 1.19, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.
Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Среди изменений в новом выпуске:
- Проведена работа по оттачиванию добавленной в прошлом выпуске поддержки обобщённых функций и типов (дженериков), при помощи которых разработчик может определить и использовать функции, предназначенные для работы сразу с несколькими типами. Проведена оптимизация - производительность некоторых программ, использующих дженерики, выросла на 20%.
- В документирующих комментариях добавлена поддержка ссылок, списков и более простого синтаксиса определения заголовков. В утилите gofmt обеспечено форматирование с учётом расширенных возможностей комментариев с документацией на API.
- Пересмотрена модель памяти для языка Go, которая приведена в соответствие с моделями языков C, C++, Java, JavaScript, Rust и Swift, не поддерживающих последовательные согласованные атомарные значения. Для упрощения использования атомарных значений в пакете sync/atomic предложены новые типы, такие как atomic.Int64 и atomic.Pointer[T]. Изменение модели памяти не повлияло на совместимость с ранее написанным кодом.
- С целью усиления защиты модуль os/exec теперь не учитывает относительные пути при раскрытии переменной окружения PATH (например, при определении пути для исполняемого файла теперь не проверяется текущий каталог).
- В сборщике мусора появилась возможность определения мягких ограничений памяти (soft limit), которые применяются путём ограничения размера кучи и более агрессивного возвращения памяти системе, т.е. не гарантируется, что потребление будет находится в заданных рамках в любых условиях. Мягкие ограничения могут быть полезны для оптимизации программ, запускаемых в контейнерах с фиксированным размером памяти.
- Добавлено новое сборочное ограничение "unix", которое может применяться в строках "go:build" для отсеивания Unix-подобных систем (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris).
- Реализованы многочисленные оптимизации производительности. Добавлена поддержка динамической установки размера стека сопрограмм для сокращения размера копируемых данных. На Unix-системах реализовано автоматическое задействование дополнительных файловых дескрипторов (увеличение лимита RLIMIT_NOFILE). Для ускорения больших switch-выражений на системах x86-64 и ARM64 задействованы таблицы переходов (jump table), позволяющие обрабатывать большие switch-выражений до 20% быстрее.
На системах riscv64 реализована передача аргументов функций через регистры CPU, что позволило добиться прироста производительности примерно на 10%.
- Добавлена экспериментальная поддержка Linux-окружений на системах с процессорами Loongson на базе 64-разрядной архитектуры LoongArch (GOARCH=loong64).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://go.dev/blog/go1.19...)
- OpenNews: Выпуск языка программирования Go 1.18
- OpenNews: Уязвимость в сетевых библиотеках языков Rust и Go, позволяющая обойти проверку IP-адресов
- OpenNews: Уязвимости в системе загрузки модулей для языка Go
- OpenNews: Атака Trojan Source для внедрения изменений в код, незаметных для разработчика
- OpenNews: Обновление рейтинга библиотек, требующих особой проверки безопасности
Похожие новости:
- Доступна документо-ориентированная СУБД MongoDB 6.0
- Google представил сборку Rocky Linux, оптимизированную для Google Cloud
- Уязвимость в web-фреймворке Django, которая может привести к подстановке SQL-кода
- Выпуск FerretDB 0.3, реализации MongoDB на базе СУБД PostgreSQL
- Проект Dragonfly развивает более быструю замену Redis и Memcached
- Google учредил команду для помощи открытым проектам в усилении безопасности
- Выпуск FerretDB 0.1, реализации MongoDB на базе СУБД PostgreSQL
- Доступен Окуляр ГОСТ, PDF-просмотрщик на базе Okular с поддержкой российских электронных подписей
- Выпуск языка программирования Go 1.18
- Первый выпуск консольного браузера Offpunk, оптимизированного для работы в offline-режиме
Теги для поиска: #_go, #_golang
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:25
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Представлен релиз языка программирования Go 1.19, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD. Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си. Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора. Среди изменений в новом выпуске:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:25
Часовой пояс: UTC + 5