Документация по LinuxLinuxDoc.Ru 🔍
🕛

Go 1.1

После более года разработки представлен второй значительный релиз развиваемого компанией 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-компонентов), что позволяет добиться производительности сопоставимой с программами на языке Си.

Также по теме:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Linux - Разное - Go 1.1
Мы в соцсетях ✉