Производственный выпуск Go 1.17: Упрощенное кодирование для повышения безопасности и производительности
В последнем производственном выпуске языка программирования Go 1.17 от Google с открытым исходным кодом представлены усовершенствования языка и компилятора для повышения безопасности и производительности. Новые возможности включают более эффективный метод передачи аргументов функций с помощью регистров и упрощенное кодирование для безопасных операций с указателями.

Go 1.17, последнее обновление языка программирования с открытым исходным кодом от Google, было выпущено для улучшения безопасности и производительности. В этом производственном релизе представлены улучшения языка и компилятора, направленные на оптимизацию кодирования для обеспечения безопасности и более производительный метод передачи аргументов функций.
В официальных заметках к релизу освещаются три небольших изменения в языке, два из которых направлены на упрощение написания кода, соответствующего правилам безопасности unsafe.Pointer. Эти три улучшения включают в себя:
В дополнение к этим улучшениям языка, Go 1.17 также представляет новую технику компилятора для передачи аргументов и результатов функций с использованием регистров, а не стека. Это изменение было включено для Linux, MacOS и Windows на 64-битной архитектуре x86. По данным эталонных тестов, это обновление приводит к повышению производительности примерно на 5% и типичному уменьшению размера двоичных файлов примерно на 2%. Важно отметить, что это изменение не влияет на функциональность безопасного кода Go. Кроме того, компилятор теперь позволяет вставлять функции, содержащие замыкания, что может привести к появлению отдельных функций-указателей кода замыкания для каждого места вставки функции.
Еще одной ключевой особенностью Go 1.17 является введение обрезанных графов модулей. Графы модулей, указывающих в файле go.mod версию Go 1.17 или выше, будут включать только непосредственные зависимости от других модулей Go 1.17, а не все их транзитивные зависимости.
Разработчики могут загрузить Go 1.17 с сайта golang.org. Предыдущая версия, Go 1.16, была выпущена в феврале и принесла улучшения в библиотеку и среду выполнения. Текущие стабильные релизы включают Go 1.16.5 и Go 1.15.13. В будущем релизе языка планируется включить возможность фаззинга для разработчиков Go. Go 1.17 вошел в стадию бета-релиза 10 июня.
Разработчики, желающие создать веб-приложения, бэкенд или мобильные приложения, могут воспользоваться такими платформами, как AppMaster.io, которые предлагают мощную среду разработкиno-code, ускоряющую процесс разработки и обеспечивающую масштабируемость для корпоративных и высоконагруженных сценариев использования.


