Go 1.24 это значительный релиз, который привносит множество улучшений, направленных на повышение производительности, безопасности и удобства работы разработчиков

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2024-12-24 12:31

разработка по

Эти нововведения делают язык Go ещё более мощным и эффективным инструментом для разработки современных приложений.

Повышение производительности

Общий прирост производительности составляет 2–3%, благодаря снижению нагрузки на процессор в ряде репрезентативных тестов.

Достигнуто это за счёт новой встроенной реализации map, более эффективного выделения памяти для мелких объектов и обновлённой внутренней реализации мьютексов времени выполнения. Однако результаты могут различаться в зависимости от конкретного приложения.

Постквантовая криптография

Новый пакет crypto/mlkem, реализующий механизмы ML-KEM-768 и ML-KEM-1024.

ML-KEM — это система постквантового обмена ключами, которая раньше была известна как Kyber и стандартизирована в FIPS 203. Данное обновление готовит Go к будущим вызовам в области криптографии.

Улучшенное шифрование TLS

Теперь поддерживается Encrypted Client Hello (ECH) в протоколе TLS. Для активации этой функции необходимо заполнить поле Config.EncryptedClientHelloKeys, что повысит уровень конфиденциальности и безопасности при установлении TLS-соединений.

Новая Swiss Table Map

Для повышения производительности map введена новая реализация на основе Swiss Tables. Её можно отключить с помощью флага сборки GOEXPERIMENT=noswissmap.

Обновление Sync Map

Повышена эффективность модификации данных в sync.Map. Модификации непересекающихся наборов ключей гораздо менее склонны к конфликтам на больших map, и больше не требуется никакого времени на разгон для достижения низкой загрузки от map. Если вы столкнетесь с проблемами, вы можете вернуться к старой реализации, используя GOEXPERIMENT=nosynchashtriemap.

### Расширенная поддержка JSON-маршалинга

Добавлен новый тег omitempty для более гибкого пропуска нулевых значений полей структур при сериализации в JSON. Поле с этим тегом будет пропускаться, если его значение равно нулю. Если у типа поля есть метод IsZero() bool, он будет использован для проверки значения.

Расширенное маршалирование JSON

Новая опция тега omitempty для более интеллектуального пропуска полей структуры во время маршалирования JSON. При маршалировании поле структуры с опцией omitempty будет пропущено, если его значение равно нулю. Если тип поля имеет метод IsZero() bool, он будет использоваться для определения того, равно ли значение нулю.

Очистка времени выполнения

Введение функции AddCleanup для замены SetFinalizer для лучшего управления ресурсами. В отличие от SetFinalizer, она не воскрешает объект, к которому прикреплена для финализации, и к одному объекту может быть прикреплено несколько очисток. Новый код должен предпочитать AddCleanup вместо SetFinalizer.

Директивы Tool в go.mod

Улучшено отслеживание исполняемых зависимостей с использованием директив tool в go.mod. Это устраняет необходимость в предыдущем обходном решении добавления инструментов в виде пустых импортов в файл, условно названный “tools.go”.

Доступ с ограничением по каталогу

Новый тип os.Root для контролируемых операций с файловой системой.

Тип os.Root предоставляет возможность выполнять операции с файловой системой в пределах определенного каталога, предотвращая доступ за пределы указанного пути.

Улучшения тестирования

Новый пакет testing/synctest для тестирования параллельного кода. Функция synctest.Run запускает группу горутин в изолированном "пузыре", а функция synctest.Wait ожидает, пока все горутины в текущем пузыре не заблокируются. Этот пакет является экспериментальным и должен быть включен путем установки GOEXPERIMENT=synctest во время сборки.

Кэш сборки

Исполняемые файлы go run теперь кэшируются для более быстрого выполнения. Это делает повторные выполнения быстрее за счет увеличения размера кэша.


Источник: vk.com

Комментарии: