Язык Go обновился до версии 1.15

На днях представлен релиз языка программирования Go 1.15. Как известно, изначально это был проект компании Google, который вышел за пределы корпорации и стал развиваться при поддержке сторонних разработчиков. Код проекта распространяется под лицензией BSD.

Достоинств у Go много, о них не раз писали на Хабре. Среди прочих стоит отметить то, что Go изначально разрабатывался в качестве проекта многопоточного программирования с возможностью создания программ и сервисов, способных работать на многоядерных системах. В версии 1.15 появилось немало ожидаемых нововведений.

Полный список новшеств здесь, а основные перечислим ниже:

  • Оптимизирована работа компоновщика. Это относится как к общей производительности, так и к сокращению потребления памяти и упрощению сопровождения кода. Результат виден сразу. Так, при тестировании в ОС с использованием исполняемых файлов ELF компоновка типового набора крупных Go-приложений стала выполняться на 20% быстрее. При этом потребление памяти снижается на 30%.
  • Разработчики оптимизировали компилятор, так что теперь размер генерируемых исполняемых файлов снизился в среднем на 5%. Главным образом, за счет прекращения использования ряда метаданных для сборщика мусора и удаления неиспользуемых метаданных.
  • Runtime оптимизирован в плане распределения мелких объектов на системах с большим числом ядер CPU, одновременно сокращены задержки. При сбоях теперь выводятся значения с числовыми и строковыми типами вместо показа адреса.
  • В компиляторе и ассемблере появился флаг -spectre для включения защиты от атак класса Spectre.
  • Поле CommonName в сертификатах X.509 объявлено устаревшим.
  • Разработчики могут перечислять несколько прокси в команде go в переменной окружения GOPROXY.
  • В утилите vet появилось предупреждение о попытке преобразования из string(x) в том случае, если x — целочисленный тип, отличный от rune или byte.
  • В утилиту objdump добавлен флаг -gnu для поддержки вывода дизассемблерных дампов в синтаксисе GNU assembler.
  • Появился новый пакет time/tzdata, который дает возможность встроить в программу БД с информацией о часовых поясах.
  • В стандартной библиотеке появилось много разных улучшений.

Как видим, проект активно развивается. Он не теряет своей главной особенности — гибридности, где сочетается высокая производительность компилируемых языков с достоинствами языков скриптовых.