После более года разработки представлен (http://blog.golang.org/2013/05/go-11-is-released.html) второй значительный релиз развиваемого компанией Google языка программирования Go 1.1 (http://golang.org). При подготовке нового выпуска в кодовую базу проекта внесено более 2600 изменений. В развитии языка принял участие 161 разработчик, не связанный с компанией Google, что демонстрирует интерес сообщества к проекту и подчёркивает правильность выбора открытого пути развития языка. Код проекта распространяется под лицензией BSD.
В новом выпуске основные усилия были направлены на оптимизацию производительности, что позволило достигнуть значительного увеличения производительности приложений на языке Go. Заметного ускорения работы существующих программ можно добиться просто пересобрав их с использованием нового выпуска компилятора Go. На уровне API и семантики языка версия Go 1.1 полностью обратно совместима с веткой 1.0.
Оптимизации внесены практически во все подсистемы - в компилятор, систему динамического связывания, сборщик мусора, планировщик процедур и библиотечные функции. Расширено число доступных функций в стандартной библиотеке. Представлен новый механизм выявления эффекта гонки (race detector (http://golang.org/doc/articles/race_detector.html)), позволяющий определить наличие ошибок, связанных с синхронизацией доступа к памяти. Ошибки деления целых чисел на ноль теперь выявляются на этапе компиляции. Добавлена защита от использования некорректных комбинаций Unicode.
В сам язык внесены в основном незначительные изменения, например, изменены (http://golang.org/doc/go1.1#return) требования к использованию оператора return для завершения работы функций (гарантируется, что единовременно не будет выполняться несколько экземпляров функции). Также добавлен (http://golang.org/doc/go1.1#method_values) новый метод значений (method values), позволяющий осуществить привязку функции к определённому принимаемому значению.
Среди других изменений, добавлена экспериментальная поддержка новых платформ: freebsd/arm, netbsd/386, netbsd/amd64, netbsd/arm, openbsd/386 и openbsd/amd64. В состав включены новые пакеты: go/format (http://golang.org/pkg/go/format/) с более удобной реализацией функций форматирования; net/http/cookiejar (http://golang.org/pkg/net/http/cookiejar/) для
манипуляций c HTTP Cookies; runtime/race (http://golang.org/pkg/runtime/race/) для выявления эффекта гонки на стадии выполнения программы.
Целью создания проекта Go было желание получить язык, сочетающий высокую производительность компирируемых языков с лёгкостью написания кода, скоростью разработки и защищённостью от ошибок, свойственными скриптовым языкам. Синтаксис Go базируется привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код остаётся легко читаем и воспринимаем. Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами.
Язык предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора. При этом код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирвоания, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов (http://golang.org/pkg/runtime/)), что позволяет добиться производительности сопоставимой с программами на языке Си.
URL: http://google-opensource.blogspot.ru/2013/05/go-11-is-releas...
Новость: http://www.opennet.ru/opennews/art.shtml?num=36927