Представлен стабильный выпуск Go 1.8. Этот релиз содержит значительные улучшения производительности и изменения в стандартной библиотеке.
Бекенд компилятора, впервые представленный для x86_64 в 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.
>>> Подробности