内容提要
作者正在开发C++语言服务器clice,旨在解决现有语言服务器(如clangd)的问题。clice通过改进模板支持、头文件上下文和C++20模块支持,提升代码补全和编译效率。项目经过几个月的设计与开发,仍需时间完善,欢迎读者提出建议。
关键要点
-
作者正在开发C++语言服务器clice,旨在解决现有语言服务器的问题。
-
clice通过改进模板支持、头文件上下文和C++20模块支持,提升代码补全和编译效率。
-
clice的名字来源于作者的头像alice,首字母替换为C/C++的c。
-
项目经过几个月的设计与开发,仍需时间完善,欢迎读者提出建议。
-
开发新语言服务器的原因是现有的clangd存在许多问题,特别是在模板支持和性能方面。
-
作者在研究clangd时发现了多个问题,决定自己开发一个新的语言服务器。
-
clice的主要改进包括更好的模板支持、头文件上下文和完全支持C++20模块。
-
clice将支持头文件上下文,能够根据不同源文件的上下文处理头文件。
-
clice将提供编译器和构建系统无关的C++20模块支持,解决模块重复编译的问题。
-
clice设计了一种更高效的索引格式,能够快速响应查询请求。
-
clice使用C++20的协程设施进行异步编程,提升代码可读性和性能。
-
clice实现了增量编译,减少了频繁修改文件时的解析时间,提高用户体验。
延伸问答
clice语言服务器的主要目标是什么?
clice旨在解决现有语言服务器(如clangd)在模板支持和性能方面的问题。
clice相较于clangd有哪些主要改进?
clice提供更好的模板支持、头文件上下文和完全支持C++20模块,提升代码补全和编译效率。
clice的名字来源是什么?
clice的名字来源于作者的头像alice,将首字母替换为C/C++的c。
为什么作者决定开发新的语言服务器而不是改进现有的?
作者发现clangd存在多个问题,特别是在模板支持和性能方面,决定自己开发一个新的语言服务器以解决这些问题。
clice如何处理头文件上下文?
clice支持根据不同源文件的上下文处理头文件,能够自动和用户主动切换头文件的状态。
clice如何实现增量编译?
clice通过使用预编译头文件(PCH)机制,缓存未修改的代码段,从而减少频繁修改文件时的解析时间。