12 и 13 сентября состоялись выпуски 4.0.0 и 4.0.1 высокопроизводительной, SIMD-оптимизированной, библиотеки simdjson.
Значительные изменения:
- Добавлен API builder для сериализации структур данных в строку JSON:
std::vector<std::vector<double>> c = {{1.0, 2.0}, {3.0, 4.0}};
std::string json = simdjson::to_json(c);
- Добавлена экспериментальная поддержка статической рефлексии стандарта C++26 (подробнее о компиляторах: p2996/README.md), позволяющая производить сериализацию и десериализацию данных пользовательских типов:
struct Car {
std::string make;
std::string model;
int64_t year;
std::vector<double> tire_pressure;
};
void f() {
Car c = {"Toyota", "Corolla", 2017, {30.0, 30.2, 30.513, 30.79}};
std::string json = simdjson::to_json(c);
}
или
struct Car {
std::string make;
std::string model;
int year;
std::vector<float> tire_pressure;
};
std::string json = R"( { \"make\": \"Toyota\", \"model\": \"Camry\", \"year\": 2018,
\"tire_pressure\": [ 40.1, 39.9 ] } )";
simdjson::ondemand::parser parser;
simdjson::ondemand::document doc = parser.iterate(simdjson::pad(json));
Car c = doc.get<Car>();
- На 10-70% увеличена скорость сериализации.
- Другие оптимизации и исправления ошибок.
- В версии 4.0.1 исправлена совместимость со старыми версиями CMake.