Язык программирования Go (Golang) компании Google выпустил свою последнюю версию, Go 1.19, в которой улучшена поддержка дженериков, представлена улучшенная модель памяти и предложен ряд других возможностей. Это обновление направлено на усовершенствование недавно добавленных дженериков, которые были впервые представлены в Go 1.18, и оптимизацию производительности дженерикового кода на 20 процентов.
Улучшения в Go 1.19
С выходом Go 1.19 2 августа развитие поддержки дженериков сосредоточено на решении тонких проблем и угловых случаев, о которых сообщает сообщество, а также на улучшении производительности. Введение дженериков в язык было долгожданной функцией, добавленной в Go 1.18, который был выпущен в марте.
Модель памяти Go была обновлена для явного определения поведения пакета sync/atomic, предоставляющего низкоуровневые примитивы атомарной памяти для реализации алгоритмов синхронизации. Формальное определение отношения happens-before было переработано для согласования с моделями памяти, используемыми в C, C++, Java, JavaScript, Rust и Swift. Это обновление не влияет на существующие программы.
В рамках обновления модели памяти в пакете sync/atomic появились новые типы, включая atomic.int64 и atomic.Pointer(T), что делает использование атомарных значений более удобным. Go 1.19 уже доступен для загрузки с сайта go.dev для Windows, macOS и Linux.
Дополнительные возможности в Go 1.19
Помимо усовершенствования дженериков и новой модели памяти, в Go 1.19 появились и другие возможности:
- В сборщик мусора добавлено мягкое ограничение памяти, которое помогает оптимизировать программы Go, работающие в контейнерах с выделенной памятью.
- Улучшения производительности и реализации, такие как динамическое изменение размера стека coroutine для уменьшения копирования стека, автоматическое использование дополнительных дескрипторов файлов в большинстве Unix-систем, таблицы переходов для больших операторов switch на x86-64 и ARM64, а также поддержка вызовов функций, внедренных в отладчик, на ARM64.
- Внесено небольшое исправление для параметров типа в объявлениях методов, не влияющее на существующие программы.
- Комментарии к документам теперь поддерживают ссылки, списки и синтаксис заголовков, что делает состав комментариев к документам более понятным, особенно для пакетов с обширными API.
- В целях безопасности пакет os/exec больше не позволяет использовать относительные пути в поиске PATH.
- Введено новое ограничение сборки, unix, которое выполняется, если целевая ОС работает на любой Unix-подобной системе.
По мере роста внедрения платформ no-code и low-code, таких как AppMaster, разработчикам важно быть в курсе последних достижений в популярных языках программирования, таких как Go. Интеграция Go с AppMaster может ускорить разработку бэкенд-приложений, обеспечивая повышенную масштабируемость и экономическую эффективность. В Go 1.19 внесены существенные улучшения, повышающие производительность, безопасность и удобство работы разработчиков, что укрепляет его позиции как жизненно важного инструмента для современной разработки программного обеспечения.