Go 1.14, следующая версия языка программирования с открытым исходным кодом, разработанного Google, который использовался для создания Docker, Kubernetes, Istio и других проектов облачных вычислений, сейчас находится на стадии бета-тестирования и ожидается в качестве производственного выпуска в феврале.
Предстоящее обновление Go улучшает время выполнения и компилятор. Версия 1.14 также будет последней, поддерживающей 32-битные платформы Apple, согласно примечаниям к выпуску.
С улучшениями среды выполнения Go производительность большинства вариантов использования defer
была повышена до не требует почти никаких накладных расходов по сравнению с непосредственным вызовом отложенной функции. В результате отсрочку
теперь можно использовать в критически важном для производительности коде без проблем с накладными расходами.
Улучшенная среда выполнения Go также делает асинхронно выгружаемыми подпрограммы. Это означает, что циклы без вызовов функций больше не блокируют планировщик и не задерживают сборку мусора. Эта возможность поддерживается на всех платформах, кроме windows / arm
darwin / arm
js / wasm
и plan9 / *
.
Одним из следствий реализации упреждающего действия является то, что программы Go 1.14 для Linux и MacOS будут получать больше сигналов, чем более ранние версии. Программы, использующие такие пакеты, как syscall
или g olang.org/x/sys/unix
увидят более медленные системные вызовы с ошибками EINTR
. Этим программам придется каким-то образом обрабатывать эти ошибки, скорее всего, путем повторения повторной попытки системного вызова.
Кроме того, распределитель страниц более эффективен и вызывает меньше конфликтов блокировки при высоких значениях GOMAXPROCS
. Это будет наиболее заметно в виде более низкой задержки и более высокой пропускной способности для больших распределений, выполняемых параллельно и с высокой скоростью.
Тем временем компилятор Go добавляет -d = checkptr
в качестве Опция time для проверки того, что код Go соблюдает unsafe.Pointer
правила безопасности динамически. Кроме того, теперь компилятор может генерировать машиночитаемые журналы оптимизации ключа, используя флаг -json
включая встраивание и исключение проверки границ. Подробная диагностика анализа побега теперь работает снова, и экспериментальная поддержка предлагается для встроенного в компилятор инструментария покрытия для фаззинга.
Другие изменения и улучшения в Go 1.14 включают: