CAPIO-CL — Cross-Application Programmable I/O Coordination Language
Platform support
| OS / Arch | |||
|---|---|---|---|
| YES | YES | YES | |
| No CI/CD support | YES | N.A. |
Documentation
CAPIO-CL is a novel I/O coordination language that enables users to annotate file-based workflow data dependencies with synchronization semantics for files and directories. Designed to facilitate transparent overlap between computation and I/O operations, CAPIO-CL allows multiple producer–consumer application modules to coordinate efficiently using a JSON-based syntax.
For detailed documentation and examples, please visit:
Overview
The CAPIO Coordination Language (CAPIO-CL) allows applications to declare:
- Data objects, I/O dependencies, and access modes
- Synchronization semantics across different processes
- Commit policies for I/O objects
At runtime, CAPIO-CL’s parser and engine components analyze, track, and manage these declared relationships, enabling * transparent data sharing* and cross-application optimizations.
Building
Requirements & dependencies
- C++17 or greater
- Cmake 3.15 or newer
- Python3 to bundle CAPIO-CL json schemas into target binaries
- danielaparker/jsoncons to parse, serialize and validate CAPIO-CL JSON config files
- GoogleTest for automated testing
- pybind11 when building python wheels
- CALF for both logs and CLI messages
jsoncons, GoogleTest and pybind11 are fetched automatically by CMake — no manual setup required.
Steps
Clone
git clone https://github.com/High-Performance-IO/CAPIO-CL.git
mkdir -p CAPIO-CL/build && cd CAPIO-CL/build
cmake ..
make
By default, this will:
- Build the "libcapio_cl" static library
- Build the "CAPIO_CL_tests" executable (GoogleTest-based)
- Build the "py_capio_cl" python bindings (pybind11)
Integration as a Subproject
CAPIO-CL can be included directly into another CMake project using:
include(FetchContent)
#####################################
# External projects
#####################################
FetchContent_Declare(
capio_cl
GIT_REPOSITORY https://github.com/High-Performance-IO/CAPIO-CL.git
GIT_TAG main
)
FetchContent_MakeAvailable(capio_cl)
#####################################
# Include files and directories
#####################################
target_include_directories(${TARGET_NAME} PRIVATE
${capio_cl_SOURCE_DIR}
)
#####################################
# Link libraries
#####################################
target_link_libraries(${PROJECT_NAME} PRIVATE
libcapio_cl
)
When included this way, unit tests and python bindings are not built, keeping integration clean for external projects.
Python Bindings
CAPIO-CL now provides native Python bindings built using pybind11.
These bindings expose the core C++ APIs (Engine, Parser and Serializer), directly
to Python, allowing the CAPIO-CL logic to be used within python projects.
Install from PyPI
CAPIO-CL is available on PyPI! Simply run
pip install py_capio_cl
Building the Bindings
You can build and install the Python bindings directly from the CAPIO-CL source tree using:
pip install --upgrade pip
pip install -r build-requirements.txt
python -m build
pip install dst/*.whl
This will build the Python wheel and install it into your current environment using an ad-hoc build environment, which is downloaded, installed, and configured in isolation. A faster way to build and install CAPIO-CL is to use native system packages and then run from within the CAPIO-CL root directory:
pip install .
This assumes that all build dependencies not fetched by cmake are available.
API Snapshot
A simplified example of CAPIO-CL usage in C++:
#include "capiocl.hpp"
int main() {
capiocl::Engine engine;
engine.newFile("Hello_World.txt")
engine.print();
// Dump engine to configuration file
capiocl::Serializer::dump(engine, "my_workflow", "my_workflow.json")
return 0;
}
The py_capio_cl module provides access to CAPIO-CL’s core functionality through a high-level Python interface.
from py_capio_cl import Engine, Serializer
engine = Engine()
engine.newFile("Hello_World.txt")
engine.print()
# Dump engine to configuration file
Serializer.dump(engine, "my_workflow", "my_workflow.json")
Notes
- All GET endpoints expect a JSON body containing the targeted file path.
- The API is intended for local control and orchestration, not public exposure.
Developing team
| Name | Role | Contact |
|---|---|---|
| Marco Edoardo Santimaria | Designer and Maintainer | email | Homepage |
| Iacopo Colonnelli | Workflows Expert and Designer | email | Homepage |
| Massimo Torquati | Designer | email | Homepage |
| Marco Aldinucci | Designer | email | Homepage |
Former Members
| Name | Role | Contact |
|---|---|---|
| Alberto Riccardo Martinelli | Designer | email | Homepage |
Release files for py-capio-cl 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_capio_cl-2.0.0.tar.gz | 1.2 MB | Details |
Built distributions (wheels)
Total release size: 62.1 MB
Release files / py_capio_cl-2.0.0.tar.gz
| Download URL | py_capio_cl-2.0.0.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14e20d040647bed37e4c79d953c8422dab320343ca5e68af7ed27626684f5218
|
|
BLAKE2b-256 checksum How to use checksums |
7dde30a37e8ad754de9a7009bb3b1140622e70ce20766dda78cf63fdee1ff328
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_capio_cl-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b67b95e6802cc219f960af3c4606279a5e45ec31fad4a2e7bc4e4064d59a90aa
|
|
BLAKE2b-256 checksum How to use checksums |
e9f556758396cf7780204663125bf53561e379cd68499cab7af4b9aa989dd4ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | py_capio_cl-2.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4691ab304d97a56ff5e5e4ad1b2433e83eaaab21382e1b9b7e9c8212d272ed3d
|
|
BLAKE2b-256 checksum How to use checksums |
ae1c347d48b89243ac92b634751d1d79c413e8288a64ecef8b59ef4e16d65994
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp314-cp314-macosx_15_0_arm64.whl
| Download URL | py_capio_cl-2.0.0-cp314-cp314-macosx_15_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.14 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
246e430d7fee874c6ecaadc654ab583237b8456e0102124cf0cac9af1569453d
|
|
BLAKE2b-256 checksum How to use checksums |
da0da09a5a0ed0d0e30b158054c559fa87127934ecb0c86714cc7f5ba8d2d6d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_capio_cl-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
12e2cd5f94528d36cd3407152a88eef6e58c38b49ef77efa1c5903bde0e26c47
|
|
BLAKE2b-256 checksum How to use checksums |
a949546d68c991be54028b1a2459161a6f3ba7e90259a45ddb9fdb169bcaff99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | py_capio_cl-2.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
e6a5fe1a59454b580e53befcfbae3e00157c4f9dc8c819f364fc2894d5d9ddf9
|
|
BLAKE2b-256 checksum How to use checksums |
3db330bb578a0f0f72ad614130ce008b50de25074ac87311d653c8f7b740c750
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp313-cp313-macosx_15_0_arm64.whl
| Download URL | py_capio_cl-2.0.0-cp313-cp313-macosx_15_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.13 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
16cc244522dd363ecd52b925e5d9b271df4eb6b24f1cf933f3a6accc5acff9ba
|
|
BLAKE2b-256 checksum How to use checksums |
b1f8b420e5d043a22e1ff5da1a2b665df1859d5747d4647834b77dfa482ec1a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_capio_cl-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
53134e5ef8fc3d373c6306730be0cfa83f826cab8f2af60b023a80a3355891be
|
|
BLAKE2b-256 checksum How to use checksums |
329a6452a8071ed67e0c4816bb3488860cc23762ed1abe5462fdf1cf7b3c14f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | py_capio_cl-2.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fae408a3dc16fb301f69c5fa9580f9e0e5cf05580712df4296cc2d4c5777211b
|
|
BLAKE2b-256 checksum How to use checksums |
c234e5cf792da1d752699950810408f4cc52bc6b38ebb9f2148463801e116257
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp312-cp312-macosx_15_0_arm64.whl
| Download URL | py_capio_cl-2.0.0-cp312-cp312-macosx_15_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.12 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8879548ea73be51c9572f10eaf97c0a2f918fbad78cba78fc5b688546235f41e
|
|
BLAKE2b-256 checksum How to use checksums |
65090c22ef1265ac8e1d8bceed6d83b42f5cb003647f7b0e3229e2fb38bf08f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_capio_cl-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e5f1a21d3861cff21c06a17f49109a14f0b3acde0f3f7b61713aabfcc03d00cd
|
|
BLAKE2b-256 checksum How to use checksums |
3c27390e299be3c9029edfbd1281eaded23cf0c2e5f609b1cfa768cf779eb955
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | py_capio_cl-2.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
dcde919337a49453168e047c597cd57161866cbc6f6136f4574c872d299e61c0
|
|
BLAKE2b-256 checksum How to use checksums |
ec3167ee9e426a3bf9490df82705d2005396b3aaaf2ca2a9c108f27b7f33667b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp311-cp311-macosx_15_0_arm64.whl
| Download URL | py_capio_cl-2.0.0-cp311-cp311-macosx_15_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.11 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a908e0cb9052b5d1bd185c5a69035258c7ac684fff916f818e0061cb7c34e880
|
|
BLAKE2b-256 checksum How to use checksums |
753595a7970471f24ba1812175ec2f3f426bffa1c139154d9543910563821d7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_capio_cl-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2cc2cb53eab53dc40e6554928d61ac189555be8a89dd3e0f6bcd4e4a0802d561
|
|
BLAKE2b-256 checksum How to use checksums |
d9dad3d605454135c0b9b374dd70ea26b1d4af108fddb2c480aeb0043f607a05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | py_capio_cl-2.0.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d3e7c21881f32fe35c9cd7a73f403f7d5147191c8ee7310d1fd9136667e5b6b8
|
|
BLAKE2b-256 checksum How to use checksums |
76d4d04943fc0d8163dfeb480c8951cdabf9fad59748c9dbc9a7474ef47c27bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / py_capio_cl-2.0.0-cp310-cp310-macosx_15_0_arm64.whl
| Download URL | py_capio_cl-2.0.0-cp310-cp310-macosx_15_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.10 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1d357b0fc0a9ccc656f9ab60b6260a17dad79d4be0e0341683b5766ad4f9f812
|
|
BLAKE2b-256 checksum How to use checksums |
17e712428bc977fffd3dbb67354c01278a29e8071e5623984c09c5e96536183e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|