CLion Nova 进军 C 和 C++ 开发领域
摘要
今天,我们宣布推出 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 因使用“旧版”引擎而导致的长期存在的性能和质量问题。
- 统一我们所有 C++ 工具的用户体验,这些工具包括 CLion、Rider 和 ReSharper C++。
我们将新的实验性预览版命名为 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 功能集中不存在的新功能:
- 新的重构,例如 Introduce Field(引入字段)、Introduce Namespace Alias(引入命名空间别名)、Introduce using Enumeration(引入 using 枚举),以及 Convert to Scoped Enumeration(转换为作用域枚举)。
- 新的检查、快速修复和意图,例如冗余限定符、将
auto
替换为显式类型声明,以及#include
指令的排序。 - 新的代码提示,例如预处理程序指令提示和 Push-to-Hint 模式。
显著差异
与 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
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 Classic 相比,什么在 CLion Nova 中对您的项目效果更好?
- 什么中断了您的工作流并阻止您在 CLion Nova 中使用 IDE? 这些中断是 CLion Nova 特有的,还是 CLion Classic 中也存在?
使用 CLion Nova 一段时间后,我们会请求您提交反馈表。 希望您能抽出时间填写并提交反馈表!
当然,我们的问题跟踪器也可以接收反馈,只是请注明您的问题与 CLion Nova 而不是 CLion Classic 有关。
您的 CLion 团队
JetBrains
The Drive to Develop
本博文英文原作者: