- Breaking: Remove some overloads that probably aren't a good idea.
- Don't support AddValue of `char` (ASCII text). It's too easy to mix up
with `unsigned char` (UINT8) or `signed char` (INT8), and it's not
obvious that it is ASCII-only. Instead, use `std::string_view`.
- Don't support AddValue of `std::string`. It forces a dependency on
full-STL with very little benefit. Instead, use `std::string_view`.
- Fix building on WIN32.
- EnableZeroInitializeMemory() mode was broken. Fixed by removing
"realloc" mode.
- Update minimum CMake because old version gives warnings on Windows.
- Update Catch2 because old version doesn't build on latest Linux.
- Minimize public header dependencies. Public header should only `#include`
headers to satisfy itself (should not `#include` headers to satisfy the
needs of any .cpp file) and should bend over backwards to minimize the
things that it needs.
- Minimize implementation dependencies. For example, JsonBuilder doesn't
need to depend on `uuid.h`. Only Linux tests need it, and that's just
to make sure we interoperate correctly with `uuid_t`.
- Restore link-time customization of `throw` behavior.
- Restore SAL annotations. In Linux they are no-ops, but they're still there
for documentation and for static checking of Windows builds.
- Fix ABI to implementation-independent.
- Free functions specify calling convention.
- `JsonTime` now specifies its frequency and epoch instead of using
"whatever this STL's system_clock is using". (I picked FILETIME values.)
- `JsonUuid` now specifies byte order. (Big-endian.)
- JsonValue's bitfield no longer relies on implementation-defined behavior.
- Add raw access to the ABI value for `JsonTime`.
- Fix up incorrect comments, fix some inefficient code in JsonRenderer.