Skip to content
clice mascot

clice.io

Next Generation C++ Tooling

A language server on the surface, a real-time compilation scheduler underneath. It drives Clang over your whole project and serves editors, linters, indexers and agents from the same engine.

Runs onWindowsLinuxmacOSx64arm64

Projects

clice

clice

language server · scheduler

Compiles, indexes and answers queries for a whole project from one multi-process scheduler. The LSP is its first consumer; lint, index, query and doc follow.

catter

catter

build interceptor

Hooks every process a build spawns to capture commands, generate compile_commands.json from any build system, profile the build and patch invocations.

kotatsu

kotatsu

C++23 toolkit

The infrastructure clice is built on: a coroutine runtime over libuv, compile-time reflection, attribute-driven codecs, typed IPC with LSP bindings, options and CLI.

Why Another One?

Q

Isn’t clangd good enough?

skeptical1

It never solved the hard ones.

A file with several compile commands, a header that only makes sense inside its includer, a Clang crash taking the whole server down: clangd has carried these since day one.

clice answers them with compilation contexts, a multi-process design that keeps serving queries while a worker restarts, a dynamic module graph with shared PCH and PCM caches, and a pseudo-instantiator that keeps completion useful inside templates.

Q

Why put a scheduler inside a language server?

surprised2

Because Clang never had one.

Clang exposes a compiler, not the act of compiling a project. The language server is only the first consumer of clice’s scheduler.

clice lint, index, query, doc and format run on the same engine, and a cross-TU cache lets them skip the work clang-tidy repeats for every header.

Q

Can I use it today?

smiling3

Install the extension and go.

The binary ships inside the VS Code extension for Windows, Linux and macOS on x64 and arm64. Nightlies roll out every day, and Neovim and Zed have first-party clients too.