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

26 августа 2017 года

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

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

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

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

  • В язык добавлена возможность определения псевдонимов типов, которая может оказаться востребована при проведении рефакторинга кода и постепенного перевода проектов на новые API. Например, при помощи конструкции "type T1 = T2" для существующего типа "T2" можно определить псевдоним с именем "T1" по аналогии с тем как имя "byte" является псевдонимом типа "uint8";
  • В состав включен новый пакет math/bits, предоставляющий функции для битовых операций и манипуляции беззнаковыми целыми числами с задействованием при возможности специальных инструкций CPU. Например, на системах x86-64 функция bits.TrailingZeros(x) будет выполняться с использованием инструкции BSF;
  • В пакет sync добавлен новый тип Map, который возможно применять в многопоточных приложениях. Данный тип в некоторых деталях отличается от штатного типа map, поэтому не предназначен для его прозрачной замены;
  • В пакет testing добавлен новый метод Helper, применимый с объектами testing.T и testing.B. При помощи данного метода можно организовать вывод номера строки вызывающей функции при возникновении ошибки, вместо указания ссылки на фактический номер строки, из которой вызван метод t.Fatal;
  • В пакете time обеспечено прозрачное отслеживание монотонного времени (время, прошедшее с определённого момента) для всех значений Time, что позволяет обеспечить надёжный расчёт разницы между двумя значениями Time без влияния таких факторов как изменение времени или подстановка лишней секунды.
  • Для ускорения процесса сборки реализована поддержка параллельной компиляции разных функций в пакете.

Источники править


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

Комментарии

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