Forwarded from Golang
🌀 Go 1.25 приносит мощный апгрейд JSON-библиотеки:
Что изменилось:
● Прямая работа с
Новые функции
● Потоковая обработка JSON
Появился модуль
● Гибкая настройка
Теперь функции
-
-
-
-
-
Пример:
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
encoding/json/v2
— переработанная с нуля система сериализации с гибкой настройкой, высокой скоростью и новым APIЧто изменилось:
● Прямая работа с
io.Writer
и io.Reader
Новые функции
MarshalWrite
и UnmarshalRead
позволяют писать и читать JSON напрямую, без создания Encoder/Decoder. Это упрощает потоковую работу и уменьшает аллокации.● Потоковая обработка JSON
Появился модуль
jsontext
с функциями MarshalEncode
и UnmarshalDecode
, которые читают и пишут JSON по одному объекту за раз. Это критично для систем, обрабатывающих большие JSON-потоки, например, в Kubernetes.● Гибкая настройка
Теперь функции
Marshal
и Unmarshal
принимают опции, напрямую влияющие на формат вывода и поведение парсера:-
OmitZeroStructFields(true)
— пропускать нулевые поля -
StringifyNumbers(true)
— числа как строки -
MatchCaseInsensitiveNames(true)
— имена полей без учёта регистра -
FormatNilMapAsNull(true)
— nil`-карты как `null
-
WithIndent(" ")
— отступы в JSONПример:
json.Marshal(
user,
json.OmitZeroStructFields(true),
json.StringifyNumbers(true),
jsontext.WithIndent(" "),
)
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
GOEXPERIMENT=jsonv2
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
🔥26👍7❤6
🔬 Go-HEP — библиотеки и инструменты для анализа данных в физике высоких энергий
go-hep — это набор библиотек на языке Go, созданных для упрощения и ускорения HEP-анализа (High Energy Physics). Проект предоставляет всё необходимое, чтобы читать, обрабатывать и визуализировать физические данные — и всё это с помощью удобного, параллельного и надёжного кода на Go.
🧩 Что входит:
• Чтение/запись ROOT-файлов
• Построение гистограмм
• Event loop системы
• Матричные и векторные вычисления
• Нативная реализация на Go без C/C++-биндингов
📚 Документация: доступна через GoDoc
📬 Форум: ~sbinet/[email protected]
💡 Подробнее: [go-hep.org](https://go-hep.org)
🎯 Зачем это нужно:
Анализ данных в HEP требует мощных инструментов. Одно из ключевых условий — это работа с форматом ROOT. Go-HEP предоставляет этот уровень совместимости, позволяя встраивать свои анализы в существующие пайплайны HEP-сообщества.
⚡ Почему Go:
Go даёт:
• высокую скорость
• удобный параллелизм через goroutines
• развитую экосистему и простую поддержку CI/CD
• чистую архитектуру и масштабируемый код
🧠 Go-HEP позволяет физикам сосредоточиться на анализе, а не на инфраструктуре.
🔗 GitHub: github.com/go-hep/hep
📜 Лицензия: BSD-3
🤝 Как помочь: go-hep.org/contributing
#golang #HEP #science #physics #opensource
go-hep — это набор библиотек на языке Go, созданных для упрощения и ускорения HEP-анализа (High Energy Physics). Проект предоставляет всё необходимое, чтобы читать, обрабатывать и визуализировать физические данные — и всё это с помощью удобного, параллельного и надёжного кода на Go.
🧩 Что входит:
• Чтение/запись ROOT-файлов
• Построение гистограмм
• Event loop системы
• Матричные и векторные вычисления
• Нативная реализация на Go без C/C++-биндингов
📚 Документация: доступна через GoDoc
📬 Форум: ~sbinet/[email protected]
💡 Подробнее: [go-hep.org](https://go-hep.org)
🎯 Зачем это нужно:
Анализ данных в HEP требует мощных инструментов. Одно из ключевых условий — это работа с форматом ROOT. Go-HEP предоставляет этот уровень совместимости, позволяя встраивать свои анализы в существующие пайплайны HEP-сообщества.
⚡ Почему Go:
Go даёт:
• высокую скорость
• удобный параллелизм через goroutines
• развитую экосистему и простую поддержку CI/CD
• чистую архитектуру и масштабируемый код
🧠 Go-HEP позволяет физикам сосредоточиться на анализе, а не на инфраструктуре.
🔗 GitHub: github.com/go-hep/hep
📜 Лицензия: BSD-3
🤝 Как помочь: go-hep.org/contributing
#golang #HEP #science #physics #opensource
go-hep.org
Writing HEP software with ease and Go
❤9👍2🌚1