Skip to content

Third Party Libraries (TPLs)

Jonathan Lifflander edited this page Jul 20, 2023 · 12 revisions

The DARMA/vt project embeds several external, third-party libraries (TPLs) which can be found in vt/lib and vt/tests/extern in the source code. The TPLs are embedded/snapshotted to make it very easy for users to compile/link without requiring users to fetch external libraries with a specific version.

Part of the DARMA/vt regular maintenance includes updating the TPLs when new versions are released after testing them on the target platforms. We do not very aggressively update TPLs unless there are bug fixes/security updates or new features needed for new development to keep the code as stable as possible.

Developers

If you want to add new TPL, ensure that the library has a permissive license (non-GPL/LGPL) and we follow all license requirements. Make clear note (and receive approval) for any such changes in the PR. We are very careful not to depend on libraries that are not included in vt/lib. Due to the application use cases, our code must ship with all required libraries without having to fetch third-party dependencies (beyond standard libraries and MPI).

After such a change is approved and merged, add the TPL to the following list in either the required or optional category. Make note of the license and put a link to it in the table so it is clear.

Required Libraries (always included, always built)

Library Name Link License Type Embedded Source in DARMA/vt Description
CLI11 CLI11 (GitHub) BSD vt/lib/CLI Provides command-line argument parsing
fmt fmt (GitHub) MIT vt/lib/fmt Formatting strings for debug/informational prints
json json (GitHub) MIT vt/lib/json Encoder/decoder for json
EngFormat-Cpp EngFormat-Cpp (GitHub) MIT vt/lib/EngFormat-Cpp Engineering notation formatter
yaml-cpp YAML-cpp (GitHub) MIT vt/lib/yaml-cpp YAML cpp parser/outputter

Optional Libraries (always included, only built if enabled)

Library Name Link License Type Embedded Source in DARMA/vt Description
mimalloc mimalloc (GitHub) MIT vt/lib/mimalloc Can be optionally enabled to override the default memory allocator for debugging memory usage
fcontext (boost) fcontext (GitHub) Boost vt/lib/context/src/context Provides portable user-level threading over a wide variety of platforms
googletest googletest (GitHub) BSD vt/tests/extern/googletest Provides test framework for unit and integration tests
libfort libfort (GitHub) MIT vt/lib/libfort C/C++ library to create formatted ASCII tables for console applications