Полугодовое обновление для Go было выпущено с экспериментальным портом для WebAssembly и предварительной поддержкой модулей.
Go-это проект с открытым исходным кодом, разработанный командой Google и многими участниками сообщества с открытым исходным кодом на протяжении более 8 лет. Основное предназначение-использование в качестве языка системного программирования, и он был использован в громких коммерческих успехах, таких как Docker.
Порт для WebAssembly все еще является экспериментальным. Программы Go, использующие новую функцию, компилируются в один модуль WebAssembly, который включает в себя среду выполнения Go для планирования goroutine, сбора мусора, карт и других необходимых компонентов Go, в результате чего модуль составляет не менее 2 МБ или 500 КБ при сжатии. Программы Go также могут вызывать JavaScript с помощью нового экспериментального пакета. WebAssembly-это двоичный формат команд для виртуальной машины на основе стека. Он разработан как портативная цель для компиляции языков высокого уровня, таких как C/C++/Rust, поэтому приложения могут быть развернуты в Интернете для клиентских и серверных приложений.
Go 1.11 также добавляет предварительную поддержку новой концепции, называемой модулями. С точки зрения Go, это альтернатива GOPATH с интегрированной поддержкой управления версиями и распространения пакетов. Используя модули, разработчики больше не ограничиваются работой внутри GOPATH. Другие преимущества заключаются в том, что информация о зависимостях версий является явной, но легкой, а сборки более надежны и воспроизводимы.
Поддержка модулей считается экспериментальной в ее нынешнем виде, и детали, вероятно, изменятся в ответ на отзывы пользователей Go 1.11. У разработчиков также запланировано больше инструментов. Они говорят, что, хотя детали поддержки модулей могут измениться, проекты, которые преобразуются в модули с использованием Go 1.11, будут продолжать работать с Go 1.12 и более поздними версиями.