Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2022. The current version is 1.89.0.
These libraries are not comparable. The output of the simdjson parser is a read-only structure. In other words, it can't be changed, and the only way to create one is by parsing a JSON string. On the other hand, Boost.JSON allows you to modify the container holding the parsed JSON, or even build a JSON document from scratch through the container interface.
The purpose of this library is to enable algorithms which implement JSON
functionality in their public interfaces to be interoperable, by providing
a value
type that meets the bar for vocabulary type suitability. Parsing directly
into a user defined type offers some advantages but is not the goal of
the library. However, users who wish to parse directly into their own
types may implement a custom handler for this purpose.
Using standard allocators would require that value be declared as a class
template, which would impose an additional compilation burden. By avoiding
the template, most of the function definitions in the library can be
excluded from the headers and emitted in a separate static or dynamic
library.
storage_ptr over polymorphic_allocator?
polymorphic_allocator treats
the memory resource as a reference with respect to ownership. Boost.JSON
uses a reference counted smart pointer container to simplify the lifetime
management of memory resources. In addition to being reference counted,
storage_ptr
can function as an uncounted reference wrapper around a memory_resource.
string instead of std::string?"
The string provided by the library uses the storage_ptr allocator model,
has the same interface on all C++ versions, and has an optimized class
layout to keep the size of JSON values small. string also implements an improved
interface that replaces extraneous overloads with ones that use string_view.