News Releases

CLion Nova Explodes onto the C and C++ Development Scene

Read this post in other languages:

Update: CLion Nova is now available in CLion Classic

TL;DR

Today, we’re announcing a free early preview of CLion, which uses the ReSharper C++/Rider C++ language engine instead of the CLion “legacy” engine. The Preview build is available via our dedicated Toolbox App feed. At some point in 2024, depending on the results of the feedback collected, CLion Nova will be merged into CLion. Until then, the Preview build will be free to use and can be installed in parallel with your usual CLion (Classic) installation.

Update

CLion Nova

Prehistory

The first C++ engine by JetBrains was designed for AppCode, our IDE for iOS and macOS developers. It was part of the IntelliJ Platform, initially written in Java and later also in Kotlin. The approach and the architecture of the engine serve many languages in IntelliJ-based IDEs well; however, this design turned out not to be the best fit for the C++ language specifically.

To more quickly align with the evolution of C++ and to separate the engine and IDE processes, a clangd-based engine was later added to CLion. Built on our custom branch of clangd, this engine detects any warnings and errors, shows them in the editor, and suggests quick-fixes, as well as performing highlighting, completion, and certain navigation actions. It’s also used for things like data flow analysis and MISRA checks. Meanwhile, CLion’s “legacy” engine is responsible for other code insight features like refactorings. You can see a detailed “list of responsibilities” in our CLion documentation.

Clangd has many advantages, but it isn’t very helpful when it comes to project-wide refactorings and actions. We prototyped a clangd-based indexer and even implemented an experimental Find Usages on top of it, which you can enable and evaluate in CLion.

Another alternative developed by JetBrains for C++ is the language engine used in ReSharper C++ and Rider (for game development in C++). There is also a communication protocol in place that makes it possible for an IntelliJ-based IDE like Rider to communicate with the stand-alone backend process serving as a language engine. We have now adapted this protocol and the original engine to CLion as well!

Goals

In this new and experimental solution, we’re focused on the responsiveness, accuracy, and performance of the IDE. There are two main goals we have in mind:

  • Addressing the long-standing performance and quality issues of CLion caused by the usage of the “legacy” engine.
  • Unifying the user experience across all of our C++ tools, i.e. CLion, Rider, and ReSharper C++.

CLion Nova About

We named our new experimental preview CLion Nova, and the current version of CLion is now CLion Classic. In the future, we plan for CLion Nova to be merged into CLion Classic. No new product is envisaged.

Benefits and enhancements

CLion Nova still uses two C++ language engines: a clangd-based one and the one used by ReSharper C++/Rider. Most of the features of CLion Classic should work exactly the same in CLion Nova.

The most notable benefits in terms of performance in CLion Nova are:

  • Faster highlighting speeds, especially in the case of incremental code updates
  • A more responsive UI
  • Faster Find Usages
  • Significantly fewer freezes and hangs in refactorings
  • Faster test indexing

This unification also brings some new functions to CLion Nova that aren’t included in CLion Classic’s feature set:

Sorting includes

Notable differences

Unlike CLion Classic, CLion Nova doesn’t use clangd for core IDE features like code completion or highlighting. However, the JetBrains’ clangd fork is still running alongside the new engine for various tasks (ClangFormat, Clang-Tidy, MISRA checks, data flow analysis, etc.).

There are a few things that will look and feel new to CLion Classic users when they start using CLion Nova:

  • Some of the ways the IDE reacts when the user is typing are different.
  • Some UI elements and settings related to code insight features might look unusual or be found in unfamiliar locations.
  • Some code-related settings might have different default values in CLion Nova. On the first launch, CLion Nova will migrate some of your per-project and per-application settings from CLion Classic, but not all of them.
  • Switching between different language configurations (i.e. Debug/Release) might require more time for the code insight engine to catch up. There is also no option to switch resolve context per file.
  • ReSharper C++ is Windows-only, while Rider is cross-platform. Still, the ReSharper C++/Rider engine might not support non-Windows environments as seamlessly as a Windows one. It’s worth reporting such cases to us if you come across them.

Type conversion hints settings

There’s also a list of currently missing functionality:

  • Toolchains: Several options exist to set up remote work in CLion. Remote work with local sources is supported in CLion Nova, while remote work with a thin client (Gateway) is not yet available.
  • Languages: Objective-C language, CUDA (RSCPP-613, CPP-26144), and some vendor-specific compiler extensions aren’t yet supported.
  • Some intentions and quick-fixes like Simplify statement are not supported at present.
  • Some less popular refactorings are also missing. We plan to reintroduce the Move (CPP-35867) and Inline Parameter refactorings (CPP-35868) at a later date.
  • JetBrains’ AI Assistant is not yet available for CLion Nova. (FIXED)

How to install CLion Nova

CLion Nova is a free early preview build available only via the Toolbox App:

Toolbox app

CLion Nova is an Early Access Preview build, which means a login is required, but you can use it for free until CLion Nova merges into CLion. We’ll be publishing regular updates to CLion Nova, which will also be available via the Toolbox App.

Compared to CLion Classic, CLion Nova brings a more responsive UI, better overall IDE performance, and increased feature quality, especially with C++ code refactorings. Try it now and let us know what you think!

Share your feedback

CLion Nova marks a big change and requires detailed testing in various environments. So we’re asking you, our users, for help! Given that you have a variety of environments and use cases, we want you to test out CLion Nova and share your experiences with us.

We are specifically interested in your thoughts on:

  • What works better on your project in CLion Nova compared to CLion Classic?
  • What interrupts your workflow and prevents you from using the IDE in CLion Nova? Are these interruptions CLion Nova-specific, or are they also present in CLion Classic?

After using CLion Nova for some time, you’ll be asked to submit a feedback form. We’d be grateful if you can spare the time to do so!

Feedback

And, of course, our issue tracker is also open for receiving your feedback – just don’t forget to mention that your issue relates to CLion Nova and not CLion Classic.

GET VIA TOOLBOX APP

Your CLion team
JetBrains
The Drive to Develop

image description