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

18 февраля 2018 года

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

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

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

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

  • В утилите go обеспечена поддержка автоматического кэширования результатов сборки и тестирования пакетов;
  • При тестировании пакетов командой "go test" реализован автоматический запуск команды "go vet" для выявления значительных проблем перед запуском тестов. Для отключения vet-проверок следует запускать тесты командой "go test -vet=off";
  • В cgo, механизм для организации вызова кода на C/C++ из программ на языке Go, добавлена возможность прямой передачи строковых значений между кодом на Go и Си. Функции на языке Си могут принимать строки языка Go, используя тип _GoString_, а также получать прямой доступ к строкам при помощи вызова _GoStringLen и _GoStringPtr;
  • Задаваемые в cgo флаги компиляции (#cgo CFLAGS) теперь проверяются на предмет допустимости применения. В случае применения флагов, отсутствующих в белом списке, будет выдана ошибка (например, злоумышленник может использовать в пакете флаг "-fplugin" для запуска произвольного кода на этапе сборки);
  • В языке разрешено использование операций индексирования x[1.0
  • В утилите go обеспечена попытка автоматического определения корня инструментария на основе текущего файлового пути, если не выставлена переменная окружения GOROOT, что позволяет распаковать бинарный дистрибутив Go в любом каталоге и начать использовать его без дополнительных настроек;
  • Команда "go build" теперь определяет устаревшие пакеты только на основе содержимого файлов с исходными текстами, заданных сборочных флагов и метаданных из скомпилированных пакетов (время модификации больше не учитывается);
  • При выполнении "go build" флаги "-asmflags", "-gcflags", "-gccgoflags" и "-ldflags" теперь применяются только к пакетам, перечисленным в командной строке и не передаются при сборке зависимостей;
  • Команда "go install" теперь устанавливает только пакеты, перечисленные в командной строке (для установки сборочных зависимостей следует явно указывать флаг "-i");
  • В ассемблере для архитектуры x86_64 добавлена поддержка 359 новых инструкций, включая AVX, AVX2, BMI, BMI2, F16C, FMA3, SSE2, SSE3, SSSE3, SSE4.1 и SSE4.2;
  • В компиляторе проведена оптимизация скорости генерации кода для различных архитектур. Сборщик мусора оптимизирован для снижения задержек и минимизации негативного влияния на производительность во время своей активности;
  • Режимы сборки портированы для новых архитектур: "c-shared" теперь работоспособен для архитектур linux/ppc64le, windows/386 и windows/amd64, режим "pie" для darwin/amd64, а "plugin" для linux/ppc64le и darwin/amd64;
  • Прекращена поддержка FreeBSD 9, для работы теперь требуется как минимум FreeBSD 10.3. Возобновлена поддержка NetBSD (работа возможна только с экспериментальной кодовой базой NetBSD 8). Go 1.10 является последним выпуском с поддержкой OpenBSD 6.0, OS X 10.8 "Mountain Lion", OS X 10.9 "Mavericks", Windows XP и Windows Vista, в дальнейшем для работы потребуется как минимум OpenBSD 6.2, OS X 10.10 "Yosemite" или Windows 7.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз языка программирования Go 1.10», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.