Go 1.8

Команда Go рада представить новый стабильный выпуск Go 1.8. Этот релиз содержит значительные улучшения производительности и изменения в стандартной библиотеке.

Бекенд компилятора, впервые представленный для 64-битной архитектуры x86 в версии Go 1.7, теперь применяется на всех архитектурах, что даст ощутимый прирост производительности на этих архитектурах. Благодаря этому, например, на 32-битных системах ARM программы для измерения производительности затрачивают на 20–30% меньше процессорного времени. Для 64-битных x86-систем также сделаны некоторые улучшения производительности. Компилятор и компоновщик стали быстрее и по сравнению с Go 1.7 время компиляции должно быть лучше процентов на 15.

Паузы сборки мусора в новом релизе должны стать значительно короче: как правило, ниже 100, и чаще, ниже 10 микросекунд.

Улучшения также коснулись и HTTP-сервера. Добавлена поддержка HTTP/2 Push, что позволит серверам заранее отправлять ответы клиенту и минимизировать задержки в сети. Добавлена поддержка мягкого завершения (graceful shutdown), когда сервер завершает работу после обработки всех своих текущих запросов.

В контекстах добавлен механизм лимитов времени и отмены. В Go 1.8 поддержка контекстов добавлена во многих частях стандартной библиотеки, включая пакеты database/sql и net, и в Server.Shutdown из пакета net/http.

Благодаря новой функции Slice в пакете sort, стало проще сортировать срезы. Например, следующим образом можно отсортировать срез структур по полю Name:

sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })

Go 1.8 содержит много других улучшений и исправлений. Полный список изменений можно посмотреть в информации о выпуске Go 1.8.

Пользователи Go по всему миру собираются вместе на этой неделе, чтобы отпраздновать данный выпуск. Это стало доброй традицией в сообществе Go. Если вы не успели отпраздновать в этот раз, впереди ещё будет Go 1.9.

 go, golang

©  Linux.org.ru