Skip to content

clice-io/clice

Repository files navigation

clice

C++ Standard GitHub license Actions status Documentation Ask DeepWiki Discord

A C++ language server written from scratch on LLVM/Clang, with selected components ported from clangd. clice redesigns key architectural decisions to solve long-standing problems in C++ tooling.

Why clice?

Some problems in C++ tooling require architectural changes that cannot be easily retrofitted into existing language servers. clice addresses these from the ground up:

Template intelligence — Type vec2[0]. inside a template body and get full completions. clice uses pseudo-instantiation to resolve dependent types through nested typedefs and template specializations without needing concrete type arguments. Types like std::vector<std::vector<T>>::reference resolve to std::vector<T>&, enabling completion, hover, and go-to-definition inside generic code.

Compilation context — A first-class concept in clice. For source files, switch between different compilation commands (e.g. different build configurations). For header files, switch which source file provides the including context (preprocessor state, preceding declarations). This handles non-self-contained headers and context-dependent macros naturally, with automatic context switching as you navigate.

C++20 named modules — Parallel module compilation driven by a dependency-aware compile graph with interest-counted cancellation. Pre-compiled module interfaces (BMIs) are cached across editor sessions, so reopening a project skips redundant builds. The LSP layer provides module name completion on import statements and module-aware semantic highlighting.

Getting Started

Install

Download the latest binary from the releases page, or build from source.

Platforms: Linux (x64, ARM64), macOS (x64, ARM64), Windows (x64, ARM64)

Release channels:

Channel Version Where to get it
Stable even minor, e.g. v0.2.0 releases page + VS Code Marketplace
Nightly odd minor, e.g. v0.1.2026071902 GitHub pre-releases + Marketplace pre-release channel (Switch to Pre-Release Version on the extension page)
Per-commit untagged artifacts on the latest green main CI runs

The versioning rule is the VS Code Marketplace convention: even minor = stable, odd minor = pre-release. Nightly patch numbers encode the UTC build time as YYYYMMDDHH (year, month, day, hour — e.g. 2026071902 is 2026-07-19 02:00 UTC), so newer is always higher; a nightly is published only when main gained commits, and nightlies older than 30 days are removed. Every published binary is the exact one that passed the full test suites — releases promote CI builds rather than rebuilding.

For the freshest bits, every green main CI run attaches installable artifacts (binaries and platform vsix) to its run page, so a fix can be tried the moment it merges (GitHub login required for artifact downloads).

Each release also ships *.symbols packages: if clice crashes, attach the newest server log to an issue and the matching symbols let us reconstruct the exact stack. The log location is printed at startup in your editor's clice output panel (Session log directory: — by default under ~/.cache/clice/<workspace>-<hash>/logs/).

Editor Setup

Editor Setup
VS Code Install the clice extension from the Marketplace
Neovim Add editors/nvim to your runtime path: vim.opt.rtp:append("/path/to/clice/editors/nvim")
Zed Load editors/zed as a local extension
Other Any LSP client works — point it at clice serve

Project Setup

clice reads a compilation database to understand your project. For CMake:

cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

By default clice searches the workspace root and its immediate subdirectories (e.g. build/) for compile_commands.json. See configuration for custom paths and other build systems.

Note

clice is in beta on the road to its first stable release: nightlies are ready to try today. Bug reports via issues are welcome.

Documentation

Full docs at docs.clice.io/clice covering configuration, architecture, and the feature checklist.

Contributing

See the contribution guide or join our Discord.

pixi run build   # configure + build
pixi run test    # unit + integration + smoke tests

About

A next-generation C++ language server for modern C++, focused on high performance and deep code intelligence

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages