Pull to refresh

Релиз Go 1.2

Reading time 2 min
Views 9K
Original author: Andrew Gerrand
image1 декабря 2013. Мы рады объявить о выпуске последней стабильной версии Go 1.2.

С момента предыдущего релиза Go 1.1, в мае, прошло около семи месяцев и это гораздо более короткий период, чем четырнадцать месяцев между релизами 1.1 и 1.0. Мы ожидаем сопоставимые интервалы времени между мажорными релизами в будущем.

Go 1.2 включает пару незначительных изменений языка, некоторое количество улучшений в реализации компилятора и инструментов, несколько моментов улучшения производительности, много дополнений и (обратно-совместимых) изменений в стандартной библиотеке.

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

Новый трех-индексный синтаксис срезов (slice) добавляет возможность указывать вместимость (capacity) также как и длину. Это позволяет программисту передать такой срез, который имеет доступ к ограниченной части основного массива, техника которая ранее требовала использование пакета unsafe.

Основной новой особенностью инструментария является средство для вычисления и отображения результатов покрытия тестами кода. Если желаете узнать подробности, посмотрите документацию на go test и утилиту cover. Позднее на этой неделе мы опубликуем статью, в которой в подробностях рассмотрим новую возможность.

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

Увеличение размера стека по умолчанию для горутин должно улучшить производительность некоторых программ. (Старый размер имел тенденцию вызывать дорогостоящее переключение сегмента стека в критичных по производительности местах.) С другой стороны, новые ограничения на размеры стеков и количество потоков операционной системы должны препятствовать захвату всех ресурсов машины некорректными программами. Эти ограничения возможно скорректировать, используя новые функции из пакета runtime/debug.

Наконец, в числе многих изменений в стандартной библиотеке, значимые изменения включают в себя: новый пакет encoding, индексные аргументы в строках формата для функций Printf, и некоторые удобные дополнения к пакету template.

В рамках релиза, Go Playground была обновлена до Go 1.2. Это также затрагивает и сервисы, которые используют Playground, такие как Go Tour и блог. Обновления также добавляют возможность использовать в песочнице потоки и пакеты os, net и unsafe, делая ее более похожей на реальное окружение Go.

Для всех, кто помог сделать этот релиз возможным, от многих пользователей, которые представили отчеты об ошибках, до 116 вкладчиков, которые совершили более 1600 изменений в ядре (!): Ваша помощь в проекте бесценна. Спасибо!

PS: 2 декабря в блоге Go была опубликована статья The cover story, в которой подробно рассказывается о инструменте определения степени покрытия кода тестами. Утилита позволяет вычислять процент покрытия тестами как пакета в целом, так и отдельной функции, и даже визуально отобразить непокрытые места в функции. Наряду с race detector и другими, этот инструмент является хорошим подспорьем для разработчика.
Tags:
Hubs:
+36
Comments 2
Comments Comments 2

Articles