Release 4.1.0
Features
Thread safety
DCCL now support thread safe behavior by default using std::mutex. If you wish to default to the old behavior set -Denable_thread_safety=OFF
to CMake during build.
- Individual dccl::Codec instantiations can be be used in individual threads (this was not previously the case).
- If you are sharing a single dccl::Codec between threads, full locking is still required.
- DynamicProtobufManager is now thread safe. This requires an API change for several advanced usage methods:
msg_factory()
->msg_factory_call(...)
,user_descriptor_pool() -> user_descriptor_pool_call(...)
,simple_database()
->simple_database_call(...)
. - The singleton
FieldCodecManager
has been replaced byFieldCodecManagerLocal
which is owned by each Codec and can be accessed withCodec::manager()
.
Boost no longer a requirement
Boost is no longer required when Units support is not enabled and C++17 is used. If Units is used, boost units
, spirit
, lamda
, and bimap
(all header-only) libraries are required. If C++14 is used, boost any
is required.
Protoc plugin load file
protoc-gen-dccl
can now generate a file that loads all the generated protobufs: See #106.
Protobuf update
Protobuf 3.0.0 or newer is now required.
Consistent code formatting
The entire project is consistently formatted now using clang-format.
OS X support
CircleCI support for Mac OS X builds using Homebrew (Protobuf 3.21).
Bug fixes
Thanks
Thanks to @philboske for significant contributions to this release and @ltoohey for bug reporting.