The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Компания Google представила язык программирования Go 1.2"
Отправлено opennews, 02-Дек-13 19:44 
Доступен (http://blog.golang.org/go12) значительный релиз языка программирования Go 1.2 (http://golang.org/doc/go1.2), развиваемого компанией Google. При подготовке нового выпуска в кодовую базу проекта внесено более 1600 изменений, внесённых 116 разработчиками, не связанным с компанией Google, что демонстрирует интерес сообщества к проекту и подчёркивает правильность выбора открытого пути развития языка. Код проекта распространяется под лицензией BSD.

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


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

Новая версия примечательна переработанным планировщиком (http://golang.org/doc/go1.2#preemption), в котором частично решена проблема с негативным влиянием бесконечно зацикленных нитей на выполнение других подпрограмм в текущем потоке. Планировщик теперь вызывается при входе в фунуцию, т.е. может корректно передать управление другим подпрограммам в условиях вызова функций в  цикле, который ранее прожирал все ресурсы (ситуация с inline-циклами не изменилась, но проблема в основном касается конфигураций с одним рабочим потоком, GOMAXPROCS=1). В инструментарий добавлена программа "go tool cover" для сбора и отображения статистики тестового покрытия (Test Coverage) для оценки качества тестирования.


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


Расширено число доступных функций в стандартной библиотеке. Добавлен новые пакеты encoding (http://golang.org/pkg/encoding/) и image/color/palette (http://golang.org/pkg/image/color/palette/). В пакете fmt в строках форматирования Printf обеспечена поддержка проиндексированных аргументов (http://golang.org/doc/go1.2#fmt_indexed_arguments). Расширены возможности пакетов text/template и html/template. Значительно увеличена производительность некоторых пакетов: compress/bzip2 на 30%, crypto/des в 5 раз, encoding/json на 30%. Производительность сетевых функций на платформах Windows и BSD ускорена примерно на 30% (указанные оптимизации были добавлены для Linux и OS X в прошлом выпуске).

С 4 до 8KB увеличен минимальный размер стека goroutine, что должно положительно сказаться на производительности некоторых программ. Внесены дополнительные ограничения на размер стека (по умолчанию 1GB для 64-bit и 250MB для 32-bit)  и число нитей (по умолчанию 10000), что позволит защитить систему от неконтролируемого потребления ресурсов (для корректировки лимитов следует использовать SetMaxThreads и SetMaxStack в пакете runtime/debug).

URL: http://blog.golang.org/go12
Новость: http://www.opennet.ru/opennews/art.shtml?num=38568

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру