Go 1.8 и 1.8.1

Начало 2017 года было ознаменовано радостным событием для всех любителей Golang. 16 февраля после шести месяцев разработки вышел новый релиз Go 1.8. Среди основных новшеств которого стоит отметить:

  • Поддержка 32-битной MIPS архитектуры
  • Новый бэкенд компилятора на базе SSA (static single assigment form), что позволило генерировать более компактный и более эффективный код.  Временно доступен флаг -ssa=0, который возвращает процедуры компиляции из 1.7
  • Были снижены затраты на defer вызовы почти в два раза
  • Уменьшены продолжительности пауз сборщика мусора с более чем 100 до 10 микросекунд
  • Упрощена сортировка срезов
  • Добавлена поддержка HTTP/2  Push
  • Была проведена оптимизация производительности следующий пакетов bytes, crypto/aes, crypto/cipher, crypto/elliptic,crypto/sha256, crypto/sha512, encoding/asn1, encoding/csv, encoding/hex, encoding/json, hash/crc32, image/color, image/draw, math, math/big, reflect, regexp, runtime, strconv, strings, syscall, text/template и unicode/utf8
  • Добавлена возможность конвертации одной структуры в другую, если они отличаются только тегами:
func example() {
    type T1 struct {
        X int `json:"foo"`
    }

    type T2 struct {
        X int `json:"bar"`
    }
    var v1 T1
    var v2 T2
    v1 = T1(v2) // теперь можно
}

Сам я не приверженец сразу обновляться до самой свежей версии поэтому подождал до выхода 1.8.1 (4 апреля), которая случилась пару недель назад. В ней были внесены фиксы в компилятор, линкер, runtime и документацию, а также в пакеты crypto/tls, encoding/xml, image/png, net, net/http, reflect, text/template и time.

После чего обновился с версии 1.7.5. Обновление не составило проблем, все старые проекты собрались. При этом как и было заявлено в анонсе время сборки проектов уменьшилось. Прирост производительности тоже не заставил себя ждать.

 

Тэги: go golang программирование


 


 
архив

подписка