Skip to content
Projects

clice-io/kotatsu has 26 GitHub stars and 4 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 18:58 UTC. Last push 2026-11-13.

How these counts are measured

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

A C++23 async runtime with reflection-driven serialization, JSON-RPC and LSP, and cross-platform file system and process APIs

Developer Tools

README.md

Original

kotatsu

C++ Standard GitHub license Actions status

kotatsu is a C++23 async runtime with reflection-driven serialization, JSON-RPC and LSP, and cross-platform file system and process APIs. The runtime runs coroutine tasks with structured cancellation over sockets, pipes, child processes and timers. Around it are compile-time reflection and the codecs built on it (JSON, TOML, bincode, FlatBuffers), an HTTP client, a command-line parser and a test framework.

Modules

Module What it is
async Coroutine tasks and cancellation, an event loop, sockets, pipes, child processes, timers
codec Serialization driven by reflection: JSON, TOML, bincode, FlatBuffers and zero-copy blobs
cli Command lines read into plain structs as a codec backend, on an option parser modelled on LLVM's
fs Paths, files and directories on UTF-8 strings, synchronous
http An HTTP client on libcurl and the async runtime
ipc JSON-RPC peers over any transport, and the generated LSP 3.18 model
meta Compile-time reflection of structs and enums, and the annotations modules define attributes for
support Containers, outcome, UTF-8 and UTF-16, and the traits the other modules share
sys Environment, process spawning and system information, synchronous
zest A test framework that runs cases in worker processes, with checks that show both sides of a failed comparison

Everything lives in the kotatsu namespace and under include/kotatsu/. The documentation has a page per module, with its targets, an example and platform notes.

Using kotatsu

kotatsu needs a C++23 compiler; the code that includes its headers is compiled as C++23 too.

Bazel

Every commit of main that passes the Bazel build is published to the clice Bazel registry as version 0.1.0.<n>; metadata.json lists them, newest last. List the registry before the Bazel Central Registry in .bazelrc:

common --registry=https://bazel.clice.io/
common --registry=https://bcr.bazel.build/
common --cxxopt=-std=c++23 --host_cxxopt=-std=c++23

Then add the module to MODULE.bazel and depend on its targets (@kotatsu//:async, @kotatsu//:codec_json, ...) in a BUILD file:

bazel_dep(name = "kotatsu", version = "0.1.0.<n>")

CMake

Add the repository with FetchContent (or add_subdirectory), turn on the optional parts, and link the targets, named kotatsu::<module>:

set(CMAKE_CXX_STANDARD 23)

include(FetchContent)
FetchContent_Declare(kotatsu
    GIT_REPOSITORY https://github.com/clice-io/kotatsu.git
    GIT_TAG <commit>)
set(KOTATSU_CODEC_ENABLE_SIMDJSON ON)
FetchContent_MakeAvailable(kotatsu)

target_link_libraries(app PRIVATE kotatsu::async kotatsu::codec)

Building lists the targets and the options a dependent sets, and how to build without exceptions or RTTI.

Platforms

CI builds and tests every commit on:

Platform Toolchains
Linux (x64, ARM64) GCC 14, Clang 20
macOS 15 (ARM64) Apple Clang, Clang 22
Windows (x64) MSVC, clang-cl, MinGW GCC 14, and Clang with libc++ (xclang)

CI also builds without exceptions and without RTTI, and runs the tests under AddressSanitizer, UndefinedBehaviorSanitizer and ThreadSanitizer. The Bazel build is tested with xclang on the same platforms, and cross-built with it for Windows on ARM64 (MinGW), where its tests are built but not run.

Development

kotatsu's development environment comes from pixi:

pixi run build   # configure and build the debug preset
pixi run test    # unit, system and integration tests
pixi run format  # format every source file

License

kotatsu is licensed under the Apache License 2.0.