Выпуск языка программирования Go 1.19

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
03-Авг-2022 11:57

Представлен релиз языка программирования 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
===========

Похожие новости: Теги для поиска: #_go, #_golang
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 20-Апр 01:41
Часовой пояс: UTC + 5