Pull to refresh

Вышел Go 1.5

Reading time 3 min
Views 25K
Сегодня, 19 августа 2015, проект Go с гордостью представляет Go 1.5 — шестой стабильный релиз языка Go.



В этой версии было сделано множество серьезных изменений в реализации языка. Компилятор и рантайм был транслирован с C на Go, убрав последние остатки C из кодовой базы Go. Сборщик мусора был полностью переписан, что позволило уменьшить паузы во время сборки мусора на порядки. Сопутствующие изменения в планировщике рантайма, позволили нам изменить значение GOMAXPROCS (количество одновременно исполняющихся горутин) с 1 до количества логических CPU. Изменения в линкере позволили распространять Go пакеты в виде динамических библиотек, которые можно линковать как с Go, так и с C программами (дизайн).

(первая часть является вольным переводом анонса в блоге Go от Andrew Gerrandblog.golang.org/go1.5)

Данный релиз также включает в себя улучшения в инструменты разработки Go. Поддержка «внутренних» пакетов позволяет шарить имплементацию между пакетами. Экспериментальная поддержка вендоринга внешних зависимостей станет шагом вперед в стандартизации способа управления внешними зависимостями в Go. Новая утилита «go tool trace» позволяет визуализировать ход выполнения программы в мельчайших деталях прямо во время исполнения. Новый «go doc» дает более удобный интерфейс командной строки для просмотра документации Go.

Также добавлено несколько новых поддерживаемых систем и архитектур. Самыми зрелыми из них являются darwin/arm и darwin/arm64 (Apple iPhone и iPad) и linux/arm64. Также добавилась экспериментальная поддержка ppc64 и ppc64le (IBM 64-bit, bit/little endian).

Поддержка darwin/arm64 и новый функционал динамической линковки является ключевым для проекта Go mobile — эксперимента для создания приложений под Android и IOS. (Go mobile сам по себе не является частью этого релиза, это отдельный проект).

Единственное изменение в языке (обратно-совместимое, разумеется) — это уменьшение ограничений на литералы для map, это позволяет сделать их гораздо более читабельными и удобными в ряде случаев.

Стандартная библиотека также получила массу улучшений и добавлений. Пакет flag теперь показывает вывод usage-сообщения гораздо более красиво. В пакет math/big добавилася тип Float для работы с большими числами с плавающей точкой произвольной точности. Улучшение в DNS-резолвере для Linux и BSD-систем позволило отвязаться от CGO для программ, которым нужен был DNS. Пакет go/types переехал в стандартную библиотеку из golang.org/x/tools репозитория. (Пакеты go/constant и go/importer переехали аналогично). В пакете reflect добавились функции ArrayOf и FuncOf, по аналогии с уже существующей SliceOf. И, конечно, целый список более мелких исправлений и улучшений.

Все подробности и детали релиза вы может найти на странице релиза. Скачать релиз для вашей системы можно тут.

Установка


Если вы решили поставить Go 1.5, то процедура установки такая же, как всегда — на официальной странице golang.org/dl скачиваете свой установщик, или .tar.gz-архив с бинарниками, или исходники — как вам удобнее. Первый метод предпочтительней.


Если же вы хотите оставить предыдущий релиз (Go 1.4) и иметь возможность на лету переключаться между предыдущим и свежим релизом (к примеру, для сравнения сборок для версий), то проще всего скачать бинарные .tar.gz пакеты и распаковать в (стандартную) /usr/local:
$ ls /usr/local/go*
go142
go15

и создать симлинк на /usr/local/go для нужной версии. Это легко обернуть в алиас или скрипт, при надобности.
$ cd /usr/local
$ ln -nfs go142 go
$ ln -nfs go150 go


Ссылки


golang.org/doc/go1.5
blog.golang.org/go1.5
Tags:
Hubs:
+45
Comments 25
Comments Comments 25

Articles