Go 1.11

Буквально несколько дней назад после шести месяцев разработки увидел свет Golang 1.11. Основные изменения коснулись утилит, рантайма и стандартных библиотек. При этом была обеспечена совместимость с предыдущими версия Golang.

Одно из основных новшеств новой версии это экспериментальная поддержка WebAssembly (js/wasm). Которая позволяет скомпилировать программу на Go для исполнения в браузере. Более подробней об этом можно узнать в документации.

Второе важное и ожидаемое изменение — это поддержка модулей. Этот функционал выступает как альтернатива GOPATH и обеспечивает версионирование пакетов и их распостраниение. Значительные доработки этого функционала ожидаются в 1.12

Версия 1.11 будет последней, в которой поддерживается отключение build cache при помощи GOCACHE=off, начиная с версии 1.12 это сделать буде невозможно.

Assembler для amd64 архитектуры был расширен поддержкой инструкций AVX512. Также была оптимизирована процедура генерации когда, которая должна сделать его еще более быстрым и эффективным.

В компиляторе расширен диапазон функций для которых применяется inline-развёртывание кода. В том числе развёртывание теперь может применяться и для функций, в которых используется вызов panic().

Предложен пакет go/packages с реализаций простого API для поиска и загрузки пакетов с кодом на языке Go. API пока не включён в стандартную библиотеку, но может применяется в качестве эффективной замены пакета go/build, обеспечивающей поддержку модулей.

Улучшено качество отладочной информации, генерируемой для оптимизированных исполняемых файлов. Обеспечено сжатие отладочных секций в формате DWARF. Добавлена экспериментальная возможность вызова функций на языке Go из отладчика.

Была оптимизирована инструкция очистки map:

for k := range m {
 delete(m, k)
}

В стандартных библиотеках было внесено большое число фикс, обеспечивающих повышение производительности и исправление ошибок.

А также еще ряд изменений, о которых можно узнать из Release Notes.

 

26.08.2018









 
архив

подписка