Core#
CLP core is the low-level component that performs compression, decompression, and search.
Requirements#
- We have built and tested CLP on the OSes listed below. - If you have trouble building for another OS, file an issue, and we may be able to help. 
 
- A recent compiler that fully supports C++20 features such as - std::span 
 
- CMake >= 3.23.0 and < 4.0.0 - Minimum version 3.23.0 is required for yscope-dev-utils. 
- We constrain the version to < 4.0.0 due to y-scope/clp#795. 
 
- Task 3.44.0 - We pin the version to 3.44.0 due to y-scope/clp#1352. 
 
- uv >= 0.8 
To build, we require some source dependencies, packages from package managers, and libraries built from source.
Set up#
To initialize the project, run:
tools/scripts/deps-download/init.sh
Source Dependencies#
To get all dependencies required by CLP core, run the deps:core task:
task deps:core
The task will download, build, and install (within the build directory) the following libraries:
| Library | Version/commit | 
|---|---|
| 20250512.0 | |
| v4.13.2 | |
| v1.87.0 | |
| v3.8.0 | |
| v3.0.1 | |
| v11.2.0 | |
| v5.8.1 | |
| a722d07 | |
| v1.10.0 | |
| v4.0.0 | |
| r4.1.1 | |
| v7.0.0 | |
| v3.11.3 | |
| v3.13.0 | |
| v1.15.3 | |
| v3.36.0 | |
| v4.0.6 | |
| v0.7.0 | |
| 3abe4cc | |
| 9ed78cd | |
| v1.3.1 | |
| v1.5.7 | 
Environment#
A handful of packages and libraries are required to build CLP. There are two options to use them:
- Install them on your machine and build CLP natively 
- Build CLP within a prebuilt docker container that contains the libraries; However, this won’t work if you need additional libraries that aren’t already in the container. 
Native Environment#
See the relevant README for your OS:
Want to build natively on an OS not listed here? You can file a feature request.
Docker Environment#
You can use these commands to start a container in which you can build and run CLP:
# Make sure to change /path/to/clp/components/core and /path/to/my/logs below
docker run --rm -it \
  --name 'clp-build-env' \
  -u$(id -u):$(id -g) \
  -v$(readlink -f /path/to/clp/components/core):/mnt/clp \
  -v$(readlink -f /path/to/my/logs):/mnt/logs \
  ghcr.io/y-scope/clp/clp-core-dependencies-x86-ubuntu-jammy:main \
  /bin/bash -l
cd /mnt/clp
Make sure to change /path/to/clp/components/core and /path/to/my/logs to
the relevant paths on your machine.
Build#
- Configure the cmake project: - mkdir build cd build cmake ../ 
- Build: - make -j
Test#
task tests:integration:core
