Компания Google представила язык программирования Go 1.2

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

Новая версия примечательна переработанным планировщиком, в котором частично решена проблема с негативным влиянием бесконечно зацикленных нитей на выполнение других подпрограмм в текущем потоке. Планировщик теперь вызывается при входе в фунуцию, т.е. может корректно передать управление другим подпрограммам в условиях вызова функций в цикле, который ранее прожирал все ресурсы (ситуация с inline-циклами не изменилась, но проблема в основном касается конфигураций с одним рабочим потоком, GOMAXPROCS=1). В инструментарий добавлена программа "go tool cover" для сбора и отображения статистики тестирования.

Большая порция улучшений добавлена непосредственно в язык. Изменена логика обработки nil-указателей, при появлении которых отныне выводится ошибка. Добавлена поддержка нового синтаксиса задания слайсов, оперирующего тремя аргументами - кроме определения непрерывной области в массиве через конструкцию вида array[i:j] теперь можно использовать формат array[i:j:k], в котором указывается как размер итогового слайса (j - i), так и его вместимость (k - i), что позволяет разработчику обеспечить доступ только к ограниченной части исходного массива.

Расширено число доступных функций в стандартной библиотеке. Добавлен новый пакет encoding, в строках форматирования Printf обеспечена поддержка проиндексированных аргументов, расширены возможности пакетов text/template и html/template. Увеличен размер стека goroutine, что должно положительно сказаться на производительности некоторых программ. Внесены дополнительные ограничения на размер стека и число нитей, что позволит защитить систему от неконтролируемого потребления ресурсов (для корректировки лимитов следует использовать пакет runtime/debug).

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

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

Источник:
http://www.opennet.ru/opennews/art.shtml?num=38568

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>