Вийшов Go 1.5

Сьогодні, 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

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.