Перейти к содержанию

Увидел свет язык программирования Go 1.1

Материал из Викиновостей, свободного источника новостей

14 мая 2013 года

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

В новом выпуске основные усилия были направлены на оптимизацию производительности, что позволило достигнуть значительного увеличения производительности приложений на языке Go. Заметного ускорения работы существующих программ можно добиться просто пересобрав их с использованием нового выпуска компилятора Go. На уровне API и семантики языка версия Go 1.1 полностью обратно совместима с веткой 1.0.

Оптимизации внесены практически во все подсистемы - в компилятор, систему динамического связывания, сборщик мусора, планировщик процедур и библиотечные функции. Расширено число доступных функций в стандартной библиотеке. Представлен новый механизм выявления эффекта гонки ( race detector), позволяющий определить наличие ошибок, связанных с синхронизацией доступа к памяти. Ошибки деления целых чисел на ноль теперь выявляются на этапе компиляции. Добавлена защита от использования некорректных комбинаций Unicode.

В сам язык внесены в основном незначительные изменения, например, изменены требования к использованию оператора return для завершения работы функций (гарантируется, что единовременно не будет выполняться несколько экземпляров функции). Также добавлен новый метод значений (method values), позволяющий осуществить привязку функции к определённому принимаемому значению.

Среди других изменений, добавлена экспериментальная поддержка новых платформ: freebsd/arm, netbsd/386, netbsd/amd64, netbsd/arm, openbsd/386 и openbsd/amd64. В состав включены новые пакеты: go/format с более удобной реализацией функций форматирования; net/http/cookiejar для манипуляций c HTTP Cookies; runtime/race для выявления эффекта гонки на стадии выполнения программы.

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

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

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


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

Комментарии[править]

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