最近,我们宣布推出 CLion 的一个免费早期预览版,它使用 ReSharper C++/Rider C++ 语言引擎而不是 CLion 的“旧版”引擎 。预览版可以通过我们的专属 Toolbox App 源获取。2024 年,根据反馈结果,CLion Nova 将合并到 CLion 中。在此之前,预览版可免费使用,并与通常的 CLion (Classic) 并行安装。
JetBrains 的第一个 C++ 引擎为 AppCode 而设计,这是我们面向 iOS 和 macOS 开发者提供的 IDE。它为 IntelliJ 平台的一部分,最初使用 Java 编写,后来也使用 Kotlin 编写。引擎的方式和架构可以很好地服务于基于 IntelliJ 的 IDE 中的许多语言,然而,这种设计并不是特别适合 C++ 语言。
为了更快地与 C++ 的发展保持一致,并分离引擎和 IDE 进程,基于 clangd 的引擎后来被添加到 CLion 中。这个引擎基于我们的 clangd 自定义分支,可以检测警告和错误并在编辑器中显示,建议快速修复,以及执行高亮显示、补全和特定导航操作。它也用于数据流分析 和 MISRA 检查等。同时,CLion 的“旧版”引擎负责其他代码洞察功能,例如重构。我们的 CLion 文档 提供了详细的“职责列表”。
clangd 有很多优势,但对于项目级重构和操作,它的作用不是很大。我们设计了一个基于 clangd 的索引器原型,甚至在它之上实现了一个实验性 Find Usages (查找用法),您可以在 CLion 中启用和评估该功能 。
JetBrains 为 C++ 开发的另一个替代方案是 ReSharper C++ 和 Rider(用于 C++ 游戏开发)中使用的语言引擎。还有一种通信协议,使 Rider 等基于 IntelliJ 的 IDE 能够与充当语言引擎的独立后端进程进行通信。我们现在也已将此协议和原始引擎适配到 CLion!
在这个新的实验性解决方案中,我们重点关注 IDE 的响应性、准确度和性能。我们有两个主要目标:
我们将新的实验性预览版命名为 CLion Nova ,而当前版本的 CLion 为 CLion Classic 。未来,我们计划将 CLion Nova 合并到 CLion Classic 中。设想中没有新产品。
CLion Nova 仍然使用两种 C++ 语言引擎:一种是基于 clangd 的引擎,另一种是 ReSharper C++/Rider 使用的引擎。 CLion Classic 的大部分功能在 CLion Nova 中应该完全相同。
CLion Nova 在性能方面的显著优势:
更快的高亮显示速度,特别是对于增量代码更新
响应更快的 UI
更快的 Find Usages (查找用法)
重构中的冻结和挂起显著减少
更快的测试索引
这种统一还为 CLion Nova 带来了 CLion Classic 功能集中不存在的新功能:
include 排序
与 CLion Classic 不同,CLion Nova 不使用 clangd 来实现代码补全或高亮显示等核心 IDE 功能。不过,JetBrains 的 clangd 分支仍然与新引擎一起运行,用于各种任务(ClangFormat、Clang-Tidy、MISRA 检查、数据流分析等)。
CLion Classic 用户开始使用 CLion Nova 时将获得的新体验:
当用户输入时,IDE 的一些反应方式有所改变。
与代码洞察功能相关的某些 UI 元素和设置可能看起来不一样,或位于不常用的位置。
某些与代码相关的设置在 CLion Nova 中可能具有不同的默认值。首次启动时,CLion Nova 将从 CLion Classic 迁移一些项目特定和应用程序特定的设置,但不是全部。
在不同语言配置(例如, 调试/发布)之间切换可能需要更多时间让代码洞察引擎跟上进度。也没有选项用于切换每个文件的解析上下文。
ReSharper C++ 仅适用于 Windows,而 Rider 可跨平台。不过,ReSharper C++/Rider 引擎可能无法像对 Windows 那样无缝支持非 Windows 环境。如果您遇到这样的情况,请向我们报告。
类型转换提示设置
当前缺少的功能的列表:
工具链 :在 CLion 中,可以通过多个选项设置远程工作 。CLion Nova 支持使用本地源进行远程工作,但使用瘦客户端(Gateway)的远程工作尚不可用。
语言 :Objective-C 语言、CUDA(RSCPP-613 、CPP-26144 )和某些针对特定供应商的编译器扩展程序还不受支持。
Simplify statement (简化语句)等意图和快速修复目前还不受支持 (CPP-35879 )。
一些不太热门的重构也未加入。我们计划以后重新引入 Move (移动)(CPP-35867 ) 和 Inline Parameter (内联形参)重构 (CPP-35868 )。
JetBrains 的 AI Assistant 尚不适用于 CLion Nova。
CLion Nova 是免费的早期预览版,只能通过 Toolbox App 获取:
CLion Nova 是抢先体验预览版,因此需要登录,但您可以免费使用,直到 CLion Nova 合并到 CLion 中。我们将定期通过 Toolbox App 发布 CLion Nova 更新。
与 CLion Classic 相比,CLion Nova 具有响应更快的 UI、更好的整体 IDE 性能和更高的功能质量,特别是 C++ 代码重构。 立即试用,并告诉我们您的想法!
CLion Nova 标志着一个巨大变化,需要在多种环境中接受细致的测试。因此,我们需要您的帮助!鉴于您有多种环境和用例,我们希望您测试 CLion Nova 并与我们分享您的体验。
我们特别感兴趣的是您对以下问题的想法:
使用 CLion Nova 一段时间后,我们会请求您提交反馈表。希望您能抽出时间填写并提交反馈表!
当然,我们的问题跟踪器 也可以接收反馈,只是请注明您的问题与 CLion Nova 而不是 CLion Classic 有关。
您的 CLion 团队
JetBrainsThe Drive to Develop
本博文英文原作者:Anastasia Kazakova
CLion 是用于 Windows、Linux 和 macOS 上 C 或 C++开发的智能 IDE。CLion 了解现代 C++ 标准并提供预处理程序支持。它还集成了 GDB/LDB 和一套单元测试框架。