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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.