Язык Go обновился до версии 1.15
На днях представлен релиз языка программирования Go 1.15. Как известно, изначально это был проект компании Google, который вышел за пределы корпорации и стал развиваться при поддержке сторонних разработчиков. Код проекта распространяется под лицензией BSD. Достоинств у Go много, о них не раз писали на Хабре. Среди прочих стоит отметить то, что Go изначально разрабатывался в […]
На днях представлен релиз языка программирования 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, который дает возможность встроить в программу БД с информацией о часовых поясах.
- В стандартной библиотеке появилось много разных улучшений.
Как видим, проект активно развивается. Он не теряет своей главной особенности — гибридности, где сочетается высокая производительность компилируемых языков с достоинствами языков скриптовых.