- In-memory key value store
- concurrent tree based on Masstree
- Easy to use due to Header only libirary.
- CMake
>= 3.10 - C++ Compiler
>= C++17 - build related libararies - on Ubuntu, you can install with following command. Please check in advance whether ubuntu.deps is correct.:
sudo apt update -y && sudo apt install -y $(cat build_tools/ubuntu.deps)
# retrieve third party modules
git submodule update --init --recursiveFROM ubuntu:22.04
RUN sudo apt update -y && sudo apt install -y $(cat build_tools/ubuntu.deps)mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
ninjaavailable options:
-DBUILD_BENCHMARK=OFF- Never build benchmark programs (default:
ON)
- Never build benchmark programs (default:
-DBUILD_TESTS=OFF: never build test programs
default :ON-DBUILD_DOCUMENTS=OFF: never build documents by doxygen
default :ON-DBUILD_STRICT=OFF- don't treat compile warnings as build errors
default :ON-DCMAKE_INSTALL_PREFIX=/path/to/yakushima/installed-DFORMAT_FILES_WITH_CLANG_FORMAT_BEFORE_EACH_BUILD=ON: use formatting for source files
default :OFF- for debugging only
-DENABLE_SANITIZER=OFF: disable sanitizers (requires-DCMAKE_BUILD_TYPE=Debug)
default :ON-DENABLE_UB_SANITIZER=OFF: enable undefined behavior sanitizer (requires-DENABLE_SANITIZER=ON)
default :ON-DENABLE_COVERAGE=ON: enable code coverage analysis (requires-DCMAKE_BUILD_TYPE=Debug)
default :OFF
- for bench
-DENABLE_JEMALLOC=ON: enable including jemalloc header for using as memory allocator via ld_preload.
default :OFF-DPERFORMANCE_TOOLS=ON: enable tooling to measure benchmark performance.
default :OFF
You can use one sanitizer from
- address for AddressSanitizer
- leak for LeakSanitizer
- thread for ThreadSanitizer
- undefined for UndefinedBehaviorSanitizer
- memory for MemorySanitizer.
ctest -VSee how_to_use.md for details on how to use.
ninja doxygenRun cmake with -DENABLE_COVERAGE=ON and run tests.
Dump the coverage information into html files with the following steps:
cd build
mkdir gcovr-html
GCOVR_COMMON_OPTION='-e ../third_party -e ../test -e ../bench'
gcovr -r .. --html --html-details ${GCOVR_COMMON_OPTION} -o gcovr-html/yakushima-gcovr.html
Open gcovr-html/yakushima-gcovr.html to see the coverage report.