Вышла бета-версия Go 1.16

Предстоящее обновление языка программирования Go 1.16 с открытым исходным кодом включает поддержку процессора Apple, улучшения базовой библиотеки и среды выполнения. Релиз стабильной версии намечается на февраль 2021 года.
Библиотека
Изменения в основной библиотеке в Go 1.16 включают новый embed пакет, который предлагает доступ к файлам, встроенным в программу во время компиляции, через //go:embed директиву. В библиотеку также были внесены незначительные изменения и обновления. Изменения варьируются от устаревания crypto/dsa до обновления unicode пакета до Unicode 13.0.0.
В основной библиотеке также улучшены файловые системы. Новый io/fs пакет определяет абстракцию для деревьев файлов, доступных только для чтения fs.FS. Интерфейс и стандартные пакеты библиотек были адаптированы для использования интерфейса при необходимости. Новый embed.FS тип реализует fs.FS, так же как это делает zip.Reader. Новая os.DirFS функция обеспечивает реализацию fs.FS, поддерживаемых деревом файлов операционной системы. Со стороны потребителя новая http.FS функция преобразует объект fs.FS в http.Handler. Кроме того, html.template и text/template пакеты получили ParseFS функции и методы чтения шаблонов с fs.FS. Для тестирования кода, который реализует fs.FS, новый testing/fstest пакет предоставляет TestFS функцию. Она проводит проверку и сообщает о типичных ошибках. Он также обеспечивает простую реализацию файловой системы в памяти MapFS, которая может быть полезна для тестирования кода, принимающего fs.FS реализации.
Среда выполнения
Go 1.16 также вносит улучшения в среду выполнения. Новый runtime/metrics пакет представляет стабильный интерфейс для чтения метрик, определенных реализацией. В Linux среда выполнения Go теперь по умолчанию быстро освобождает память для операционной системы с использованием MADV_DONTNEED. Это означает, что статистика памяти на уровне процесса, такая как RSS, будет более точно отражать объем физической памяти, используемой процессами Go. Системам, которые в настоящее время используются GODEBUG=madvdontneed=1 для улучшения поведения мониторинга памяти, больше не нужно устанавливать эту переменную среды.
В Go 1.16 также исправлено несоответствие между Race-детектором и моделью памяти Go. Детектор более точно следует правилам синхронизации каналов модели памяти. Таким образом, он может сообщать о забегах, которые ранее были пропущены.
О выпуске первой бета-версии было объявлено 17 декабря. Текущая линейка выпусков Go 1.15 появилась в августе. В прошлом году языку программирования Go исполнилось 10 лет, а в июне 2020-го он попал в список самых высокооплачиваемых языков программирования по версии Stack Overflow.
Другие изменения
- 64-разрядный процессор ARM-архитектуры на MacOS, также известный как Apple Silicon, поддерживается с G00S=darwin, GOARCH=arm64. Как и darwin/amd64 порт, darwin/arm64 поддерживает порт ОЦП, внутренние и внешние ссылки, c-archive, c-shared и pie режимы сборки. Go 1.16 добавляет ios/amd64 порт, предназначенный для симулятора iOS, работающего в macOS на базе AMD64. Раньше это неофициально поддерживалось darwin/amd64 с помощью ios набора тегов сборки.
- Компилятор может встраивать функции с немаркированными for циклами, значениями методов и переключателями типов. Инлайнер также может обнаруживать больше встраиваемых вызовов.
- Улучшения компоновщика сокращают использование ресурсов и улучшают ремонтопригодность кода. Это часть плана по модернизации компоновщика.
- Режим с поддержкой модулей включен по умолчанию.
- Команда go поддерживает включение статических файлов и файловых древ как часть окончательного исполняемого файла с помощью новой //go:embed директивы.
- Новая GOVCS переменная среды ограничивает инструменты управления версиями, которые go команда может использовать для загрузки исходного кода. Это снижает проблемы безопасности с помощью инструментов, которые обычно используются в надежных средах с проверкой подлинности.
- Go 1.16 – последний выпуск, который будет работать на MacOS Sierra. Go 1.17 потребует MacOS 10.13 High Sierra или новее.
См. также
Российский разработчик создал неофициальную версию Clubhouse для Android
26.02.2021 1775 VKuser24342747 0
Масштабное обновление Trello: пять новых видов досок и интеграция с Google Docs
25.02.2021 2846 user1015646 0
Видеоигра на базе нейросетевого генератора текстов стала бизнес-консультантом
25.02.2021 1732 VKuser24342747 1
В ближайшие годы возрастет потребность в персонале центров обработки данных
24.02.2021 1943 SKravchenko 0
Rustоманы из Долины: Google, Microsoft, Huawei, Mozilla и AWS основали фонд поддержки языка программирования
16.02.2021 1596 user1015646 0
Украинская команда FireWay одержала победу в хакатоне NASA Space Apps Challenge 2020
05.02.2021 1962 SKravchenko 2
Microsoft участвует в разработке цифрового паспорта вакцинации от Covid-19
02.02.2021 1746 capitan 3
Что нового в Chrome 88: проверка надежности паролей и поддержка профилей
01.02.2021 2218 user1015646 0
280 символов для науки: Twitter откроет доступ ученым к архиву твитов
29.01.2021 1477 VKuser24342747 1