# Architecture | clice
a powerful and modern C++ language server

Skip to content

# Architecture ​

## Protocol ​

Use C++ to describe type definitions in the Language Server Protocol.

## AST ​

Some convenient wrappers for clang AST interfaces.

## Async ​

Wrapper for libuv coroutines using C++20 coroutines.

## Compiler ​

Wrapper for clang compilation interfaces, responsible for actual compilation processes and obtaining various compilation information.

## Feature ​

Specific implementations of various LSP features.

## Server ​

clice is a language server, first and foremost a server. It uses libuv as the event library, adopting a common event-driven compilation model. The main thread is responsible for handling requests and dispatching tasks, while the thread pool is responsible for executing time-consuming tasks, such as compilation tasks. Related code is located in the `Server` directory.

## Support ​

Some other utility libraries.