import{_ as a,c as r,o as t,ae as o}from"./chunks/framework.l7bN90nj.js";const d=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"design/architecture.md","filePath":"en/design/architecture.md"}'),i={name:"design/architecture.md"};function n(s,e,c,l,h,p){return t(),r("div",null,[...e[0]||(e[0]=[o('<h1 id="architecture" tabindex="-1">Architecture <a class="header-anchor" href="#architecture" aria-label="Permalink to &quot;Architecture&quot;">​</a></h1><h2 id="protocol" tabindex="-1">Protocol <a class="header-anchor" href="#protocol" aria-label="Permalink to &quot;Protocol&quot;">​</a></h2><p>Use C++ to describe type definitions in the <a href="https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/" target="_blank" rel="noreferrer">Language Server Protocol</a>.</p><h2 id="ast" tabindex="-1">AST <a class="header-anchor" href="#ast" aria-label="Permalink to &quot;AST&quot;">​</a></h2><p>Some convenient wrappers for clang AST interfaces.</p><h2 id="async" tabindex="-1">Async <a class="header-anchor" href="#async" aria-label="Permalink to &quot;Async&quot;">​</a></h2><p>Wrapper for libuv coroutines using C++20 coroutines.</p><h2 id="compiler" tabindex="-1">Compiler <a class="header-anchor" href="#compiler" aria-label="Permalink to &quot;Compiler&quot;">​</a></h2><p>Wrapper for clang compilation interfaces, responsible for actual compilation processes and obtaining various compilation information.</p><h2 id="feature" tabindex="-1">Feature <a class="header-anchor" href="#feature" aria-label="Permalink to &quot;Feature&quot;">​</a></h2><p>Specific implementations of various LSP features.</p><h2 id="server" tabindex="-1">Server <a class="header-anchor" href="#server" aria-label="Permalink to &quot;Server&quot;">​</a></h2><p>clice is a language server, first and foremost a server. It uses <a href="https://github.com/libuv/libuv" target="_blank" rel="noreferrer">libuv</a> 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 <code>Server</code> directory.</p><h2 id="support" tabindex="-1">Support <a class="header-anchor" href="#support" aria-label="Permalink to &quot;Support&quot;">​</a></h2><p>Some other utility libraries.</p>',15)])])}const f=a(i,[["render",n]]);export{d as __pageData,f as default};
