Новости и события » Hi-Tech » Релиз языка программирования Go 1.11

Релиз языка программирования Go 1.11

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

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Основные новшества, представленные в выпуске Go 1.11:

  • Реализована концепция модулей, которую можно применять в качестве альтернативы GOPATH, отличающейся интегрированной поддержкой версионирования, средствами доставки пакетов и улучшенной системой управления зависимостями. Система модулей пока является экспериментальной, поэтому синтаксис команд для работы с модулями может поменяться в будущем. Используя модули разработчики более не привязаны к работе внутри дерева GOPATH, могут явно определять зависимости с учетом версий и создавать повторяемые сборки;
  • Добавлен экспериметальный порт для WebAssembly (js/wasm), позволяющий компилировать приложения на языке Go в промежуточный код WebAssembly для выполнения в web-браузерах. На выходе формируется готовый модуль WebAssembly, включающий runtime-компоненты для goroutine, планировщик, систему сборки мусора и т. п. Размер untime-компонентов составляет 2 Мб (при сжатии 500 Кб). Для вызова скомпилированных в WebAssembly программ из кода на JavaScript предложен экспериментальный модуль syscall/js;
  • Предложен пакет go/packages с реализаций простого API для поиска и загрузки пакетов с кодом на языке Go. API пока не включен в стандартную библиотеку, но может применяется в качестве эффективной замены пакета go/build, обеспечивающей поддержку модулей;
  • В компиляторе расширен диапазон функций для которых применяется inline-развертывание кода. В том числе развертывание теперь может применяться и для функций, в которых используется вызов panic.
  • Предложен новый формат экспорта данных для пакетов, обеспечивающий более высокую скорость сборки для больших проектов;
  • В ассемблере реализована поддержка инструкций AVX512 для архитектуры amd64;
  • Улучшено качестве отладочной информации, генерируемой для оптимизированных исполняемых файлов. Обеспечено сжатие отладочных секций в формате DWARF. Добавлена экспериментальная возможность вызова функций на языке Go из отладчика;
  • Проведена оптимизация производительности пакета math/big. В различные части кодовой базы внесены оптимизации, специфичные для архитектуры arm64. В компиляторе задействованы более агрессивные оптимизации для исключения излишних переходов и проверок границ буферов;
  • Прекращена поддержка OpenBSD 6.0, OS X 10.8 "Mountain Lion", OS X 10.9 "Mavericks", Windows XP и Windows Vista. Для работы теперь требуется как минимум OpenBSD 6.2, macOS 10.10 "Yosemite" или Windows 7. Добавлена поддержка OpenBSD 6.4. Race detector портирован для linux/ppc64le и netbsd/amd64. Режим поверки памяти (-msan) адаптирован для платформы linux/arm64.

Самолигирующие брекеты: революция в ортодонтической технологии

Самолигирующие брекеты: революция в ортодонтической технологии

Ортодонтические брекеты – один из наиболее распространенных методов коррекции при различных дефектах прикуса и расположения зубов. Традиционные брекеты эффективны, но они требуют регулярных деликатных регулировок для достижения желаемых результатов. К...

сегодня 12:58

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх