Go 1.5 В Бета-Версии


Вторая бета-версия Go 1.5 была выпущена с компилятором и средой выполнения, полностью написанными на Go.

Выпуск был перенесен с обычного шестимесячного интервала из-за необходимости большего времени для подготовки этого основного выпуска; и для того, чтобы впоследствии изменить график, чтобы более удобно было установить даты выпуска. Несмотря на изменения, разработчики ожидают, что почти все программы Go продолжат компилироваться и запускаться, как и раньше, поскольку в выпуске по-прежнему сохраняется обещание совместимости Go 1.

Под прикрытием, основным изменением в реализации является переписывание компилятора и среды выполнения полностью в Go (с небольшим ассемблером). C больше не участвует в реализации, что означает, что компилятор C, который до сих пор был необходим для создания дистрибутива, был удален. В примечаниях к выпуску бета-версии говорится, что единственный источник C, оставшийся в дереве, связан с тестированием или cgo.

В предыдущих версиях языка компилятор C использовался для создания среды выполнения, что означало, что пользовательский компилятор был необходим отчасти для того, чтобы гарантировать, что код C будет работать с управлением стеком goroutines. Компилятор был фактически перемещен путем автоматического перевода кода C в Go, что фактически сделало его той же программой на другом языке. Вот обзор процесса, связанного с презентацией, проведенной Робом Пайком из Google на Gopherfest в мае.

Еще одним важным улучшением является сборщик мусора. Теперь это происходит одновременно и обеспечивает значительно меньшее время паузы за счет запуска, когда это возможно, параллельно с другими goroutines. В примечаниях к выпуску говорится, что ожидаемые задержки намного ниже, чем при использовании сборщика в предыдущих выпусках, благодаря сочетанию передовых алгоритмов, лучшему планированию работы сборщика и запуску большей части коллекции параллельно с пользовательской программой. Фаза “остановить мир” коллектора почти всегда будет меньше 10 миллисекунд и обычно намного меньше.

Общие изменения в производительности в основном связаны с новым сборщиком мусора и преобразованием среды выполнения в Go, и в среднем программы в наборе тестов Go 1 работают на несколько процентов быстрее в Go 1.5, чем в Go 1.4. Паузы сборщика мусора значительно короче и почти всегда меньше 10 миллисекунд. Кроме того, там, где вы используете значения по умолчанию, некоторые программы должны работать быстрее, потому что GOMAXPROCS теперь по умолчанию установлен на количество доступных ядер; в предыдущих выпусках он по умолчанию равнялся 1.

Другие улучшения включают поддержку внутренних пакетов для всех репозиториев в дополнение к ядру Go; экспериментальную поддержку “вендоринга” внешних зависимостей командой go; новую команду трассировки инструмента go, которая поддерживает детальную трассировку выполнения программы; и новую команду go doc (отличную от godoc), настроенную для использования в командной строке.

Бинарные и исходные дистрибутивы доступны на сайте Golang.


Добавить комментарий