CLion 2019.3: A Quality-Targeted Release Focused on Performance and Some Long-Awaited Enhancements

Exciting news! CLion 2019.3, the last major update this year, has just been released!

Improving the IDE performance and fixing major bugs are always a top priority for our team. In this update we have been focusing especially on improving the performance in specific areas, eliminating UI freezes (not all, but many of them have been melted away!), and enhancing the editor and the integrations for our users!

CLion 2019.3 release

To update to this version you can use the Toolbox App, snap package (on Ubuntu), our website, or the patch-update from the latest build of 2019.2.

DOWNLOAD CLION 2019.3

If you are just looking for a quick overview of the main highlights, take a look at the list below. If you are interested in the specific details, please read on:

You can also get a good overview of this release by checking out this short What’s New video by Phil Nash:

IDE Performance

During this release cycle, there were many activities focused on improving the IDE performance, both in the IntelliJ Platform and in CLion in particular.

From the IntelliJ Platform side, a number of significant architectural changes were introduced in order to reduce the IDE startup time. These changes include but are not limited to:

  • Parallelization for some of the processes that used to run one after the other.
  • Reorganization of the classes in a way that makes the initial class loading faster.
  • Optimization of the font loading on macOS.

From the CLion side, we’ve made a massive effort to eliminate UI freezes. While there are still some freezes left (it’s mainly with some of the more complex C++ projects), a lot of others have been melted away. We’re planning to keep up the intensity of this work over the next releases, of this you can be sure! Besides this, we’ve optimized the Building/Updating symbols step by reworking some of the underlying algorithms. Depending on the specific project, CPU, and environment, you can expect a boost of somewhere between 10% and 50%, according to our calculations.

The team has also worked on improving the performance by reworking some of the current core functionality provided by the IDE. First, the Rename refactoring now has a mode where it first asks if you’d like to rename non-code usages (like occurrences in comments and strings literals) and only then performs a search for all the occurences. This, however, requires the in-place mode for Rename to be turned off (Settings/Preferences | Editor | General | Refactorings | Enable in-place mode).

What is probably the most widely used feature of any IDE or smart text editor? That’s right, code completion! To speed up the code completion in CLion, we’ve implemented an additional completion provider. It’s based on Clangd and produces results faster than the other providers in many of the h eavy cases like LLVM, Boost, Qt, or Eigen:
Code completion on Eigen
Learn more details on the measurements.

Debugger updates

CLion integrates with GDB and LLDB debuggers, and in this release we have worked on this integration to make it more user-friendly and higher-quality.

For LLDB, we’ve updated the bundled version to v9.0 and performed a major cleanup in the bundled pretty printers. As a result, the standard containers are now visualized more accurately. You can expect much better support for libc++ on macOS than for libstdcxx (let us know if you are using the latter on macOS, and specify the toolchain you use, so that we can consider making improvements). On Ubuntu, the only difference is in the unordered associative containers. Check out a detailed comparison here.

For both GDB and LLDB, CLion now supports reading .gdbinit/.lldbinit from the project root (previously CLion could only read these files from the User’s home directory). This allows you to tune the debugger’s behavior without affecting all the projects on your machine. Note that to enable this behavior, you have to explicitly allow .gdbinit/.lldbinit in your home directory:

  • For GDB:
    • Globally:
      set auto-load local-gdbinit on
      add-auto-load-safe-path /
    • Per project:
      set auto-load local-gdbinit on
      add-auto-load-safe-path C:\work\myproject\.gdbinit
  • For LLDB: settings set target.load-cwd-lldbinit true

A typical use case is to provide custom pretty printers for some data types in your project:
lldbinit

And finally, a new Remote GDB Server configuration was added which has made it possible to enable remote debugging over ssh. The main benefit over the previously added GDB Remote Debug configuration, is that CLion uploads the executable to the remote host and launches your program under the gdbserver there automatically. Read the details in our webhelp. This means there are now 3 options to connect remotely from a locally running CLion – Full Remote mode (when you build, run and execute remotely) and 2 options for a remote debug (when only the debugging is done on a remote host).

More opportunities in CMake

CMake is known to be the first-class citizen project model in CLion. Many CLion users rely on it and some users have even converted their projects to CMake to be able to work in CLion. We very much appreciate this strong support, and in this release we have addressed two of the biggest shortcomings with the CMake integration in CLion.

One way we have addressed this is, of course, with the Ninja generator! Moreover, it’s now possible to use any available generator in CMake. Just pass it to the CMake options in the CMake Profiles settings:
Ninja generator
The implementation is based on the CMake File API and, as such, is available when CMake 3.15 or higher is used.
We’d like to thank the many EAP users who gave it a try so soon after the feature was released. The feedback we got has helped us address a lot of the issues before the official release.

Another issue we wanted to address was the missing ability to configure some CMake settings globally for newly created projects in CLion. For example, a template for the generation path or some environment settings. Now you can do it with CMake Defaults! Use File | Other Settings | Preferences/Settings for New Projects…

And finally, we addressed another unpleasant issue in this release – if some CMake configurations are invalid and fail to reload, CLion won’t fail now but instead it will successfully reload all possible valid configurations. The typical use case for this is when you don’t have your remote configuration currently connected and there are several local configurations which you’d like to reload. Previously, the whole reload process would simply fail, but now the local configurations will be reloaded successfully.

Switching between Header/Source files

To switch between header and source files, CLion now offers a more effective and more accurate heuristics-based action called Go to Header/Source. Use it instead of the more general IntelliJ-platform Go to Related Symbol action.

The new action tries to locate the single destination file, and if it fails in 500 ms, then it shows an interactive popup where the new items are added (and more importantly are calculated in the background, so no UI freezes!). Then, you can select where you want to navigate to.

The Go to Header/Source search relies on several heuristics, for instance, the most recently switched file is always at the top of the list, and the file with a matching name from the same directory has priority next.
Go to Header/Source
There is only one limitation you have to keep in mind for now – the search is currently limited to direct includers/includees, as this helps to avoid interference from the same symbols from different targets.

Code coverage

While this release was mostly focused on bugs, technical debt, and performance challenges, a few features have still made it through. Code coverage – one of the most top-voted requests in our issue tracker – was addressed by adding integration with llvm-cov/gcov tools.

You can run unit tests and regular configurations with Coverage, just don’t forget to pass the special coverage compilation options. This has to be done manually, as CLion won’t willingly modify your CMake files and compilation options.

The results of the measurements can be checked in a separate Coverage tool window, or it can be done right in the editor – the coverage is indicated with color in the left-hand gutter.
Code Coverage
Read more details in our webhelp.

C++20’s Concepts

During the last couple of release cycles, we were experimenting with our Clangd-based language engine. The idea was to merge another experimental branch – Saar Raz’s clang branch with Concepts support – and build a few unique features on top of it. The idea was first discussed when we met Saar at the Core C++ conference in Tel Aviv, in May 2019, and now with CLion 2019.3, we are ready to deliver the results of this collaboration.

In CLion, the Clangd-based engine now assists with parsing and highlighting C++20’s Concepts properly. There are also a few code checks from Clang, and an Unused concept inspection implemented by the CLion team.

Still, the most impressive work was done in code completion, as CLion can now complete template type parameters that are constrained, as well as types constrained by std::is_base_of<MyBase, T>, std::is_same<Other, T> and same_as<T, U>:
Concepts completion
Besides this, there is support for Rename refactoring, Go to Definition, and Find Usages navigation actions. You can find more samples and learn about how to enable C++20’s Concepts support in the compiler in our dedicated blog post.

We’d like to thank Saar Raz for his fantastic work in Clang and his productive collaboration with our team!

Other fixes and improvements

The Spell Checker is an essential part of the IDE, which helps keep your comments, string literals and in-code documentation correct and readable. In CLion 2019.3, it is able to spell check CMake files and Doxygen comments:
Spell Checking
In addition to WSL, CLion now also supports WSL2. The configuration process in the IDE has stayed the same, just keep in mind that there are some differences in the user experience between these two subsystems.

A new inspection virtual functions called from constructors or destructors was added to catch situations where virtual functions might have access to resources that are not yet initialized or that have already been destroyed:
Virtual function call in destructor

Microsoft formatting and naming rules were added as a predefined code style option, enhancing the list with Google, LLVM, Qt, GNU, Stroustrup, and other styles.

Since CLion is based on the IntelliJ Platform, there are also VCS improvements and dozens of UI issues resolved. For those of you who use CLion as a Rust IDE, we are happy to share with you that the IntelliJ Rust plugin has had a massive update (we plan to dedicate a separate blog post to it, so stay tuned!).

And that’s it! Hopefully you are not tired from all the reading and are excited to give the new release a try now! We’d love to hear any feedback you have for us on this release!

DOWNLOAD CLION 2019.3

Your CLion Team
JetBrains
The Drive to Develop

This entry was posted in Announcement and tagged , , , , , , , , , , . Bookmark the permalink.

72 Responses to CLion 2019.3: A Quality-Targeted Release Focused on Performance and Some Long-Awaited Enhancements

  1. Hi Clioners

    I’m using Clioin now all my projects normally 10 hours a day or more…
    I’m using it with the context of embedded and remote development over ssh on docker backends on cloud platforms.

    I have to develop/ maintain relatively big codebase 3200 cmake targets … ~100’000 files.
    Unfortunately the “upstanding headers” in CMake parsing step now just takes 30min but it now uses all my 16 cores up it executes up to 1500 download parallel???. So during this time, the local os is completely blocked.

    Is there a way to get it fixed ?.

  2. Taw says:

    Great, but still waiting for this: https://twitter.com/taw_moto/status/1198993075122688001
    I’ve got 40 likes 😀

  3. Taw says:

    In my toolbox, after update, it’s written “CLion 2019.3 Updating to EAP”
    https://ibb.co/BCyfQ7R

    And it’s there for 15 minutes at least, although there is nothing to update.
    I tried restarting Toolbox and it’s still there

    • Anastasia Kazakova says:

      pls contact the toolbox support, I guess they will need some details from you.

    • Phil Nash says:

      In fact this is behaving correctly. It just means you have it set to “update to release and EAP”. Since it has now updated to release it will, from here, update to EAP.

      I do agree it’s a little confusingly worded and/ or formatted and we could do better – I’m raising it with the toolbox team to see if we can tweak it.

      • Tano says:

        Hi Phil, sorry but it’s confusing, the message means that in that moment it is updating to the EAP, which is not correct. It will update in jan 2020 to EAP, not now.
        If a new version appears, I will update manually to the EAP only if I want (like I do for 3 years), it’s not an auto-update, so I don’t think that message is useful at all.
        Thanks

  4. Roman says:

    Thanks for great release! Ninja build was long awaited (but unfortunately it works well for me only under windows). Switch header source solves some problems with navigation (but unfortunately “navigate to definition” is still broken). LLDB is now more usable in Linux (but still not a complete replacement for GDB).
    Hopefully 2020.0 will be more “Quality-Targeted”, 2019.3 feels more like “More new features + more bugs related to new features”.

    • Anastasia Kazakova says:

      Regarding Ninja on non-Windows, I guess you have a ticket submitted?
      As for LLDB on Linux, what’s missing from your point?
      Anyway, thanks for the feedback!

  5. Jon says:

    Was hoping to see ctest integration…

  6. Frank Niessen says:

    The update from .2 to .3 has destroyed some of my settings; For now I can see that the window size and state (fullscreen) and the settings for the toolbar (external tools are gone) has been affected. I hope these are the only settings that were destroyed for now.

    • Anastasia Kazakova says:

      Could you please submit a bug report and attach the settings from .2? We’ll try to reproduce on our side. Thanks

  7. Roman says:

    Is it possible to see fully expanded macro? Qtrl+Q shows only first expansion.

    • Anastasia Kazakova says:

      It should show the final substitution. Could you please provide an example?

      • Roman says:

        Solved the problem. It turned out that boost headers was in “Ignore files and folders” list, after I’ve enabled Boost headers, macros are fully expanded.
        But that brings another problem: I’m disabling most files and headers, because Clion is too slow on startup. But I’m doing it quite randomly. Still waiting for CPP-16352, so I can analyze why Clion is slow and disable slow headers more selectively.

        • Roman says:

          Interesting that code completion for Boost works even if Boost headers are ignored. So looks like Clangd is ignoring CLion settings.
          That is why I did not noticed that they were disabled. I guess macro expansion feature is implemented using Clion own parser, that ignores selected directories.

  8. Matt Hurd says:

    Quite a few code navigation and error highlighting issues as regressions from 2019.2.5; presumably clangd integration. It looks like many other people have also noticed this also upon reviewing the support logs.

  9. Eric says:

    Just updated to 2019.3 Stable and the app hangs when opening on the splash screen. Console launch shows the following:

    ./clion.sh
    OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
    2019-12-01 09:48:32,815 [ 2335] ERROR – nsions.impl.ExtensionPointImpl – com.intellij.docker.DockerCloudType PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6 [Plugin: Docker]
    com.intellij.diagnostic.PluginException: com.intellij.docker.DockerCloudType PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6 [Plugin: Docker]
    at com.intellij.serviceContainer.PlatformComponentManagerImplKt.createPluginExceptionIfNeeded(PlatformComponentManagerImpl.kt:661)
    at com.intellij.serviceContainer.PlatformComponentManagerImplKt.access$createPluginExceptionIfNeeded(PlatformComponentManagerImpl.kt:1)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.createError(PlatformComponentManagerImpl.kt:575)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.createInstance(ExtensionComponentAdapter.java:42)
    at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.java:63)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:442)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:398)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensionList(ExtensionPointImpl.java:238)
    at com.intellij.openapi.extensions.ExtensionPointName.getExtensionList(ExtensionPointName.java:43)
    at com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationTypesRegistrar.componentsInitialized(DeployToServerConfigurationTypesRegistrar.java:19)
    at com.intellij.idea.ApplicationLoader$callAppInitialized$2.run(ApplicationLoader.kt:703)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:222)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:201)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:193)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: java.lang.ClassNotFoundException: com.intellij.docker.DockerCloudType PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:77)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getImplementationClass(ExtensionComponentAdapter.java:80)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.createInstance(ExtensionComponentAdapter.java:39)
    … 15 more
    2019-12-01 09:48:32,819 [ 2339] ERROR – nsions.impl.ExtensionPointImpl – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 09:48:32,820 [ 2340] ERROR – nsions.impl.ExtensionPointImpl – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 09:48:32,820 [ 2340] ERROR – nsions.impl.ExtensionPointImpl – OS: Linux
    2019-12-01 09:48:32,832 [ 2352] ERROR – nsions.impl.ExtensionPointImpl – com.intellij.docker.conversion.DockerRunConfigurationConverterProvider PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6 [Plugin: Docker]
    com.intellij.diagnostic.PluginException: com.intellij.docker.conversion.DockerRunConfigurationConverterProvider PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6 [Plugin: Docker]
    at com.intellij.serviceContainer.PlatformComponentManagerImplKt.createPluginExceptionIfNeeded(PlatformComponentManagerImpl.kt:661)
    at com.intellij.serviceContainer.PlatformComponentManagerImplKt.access$createPluginExceptionIfNeeded(PlatformComponentManagerImpl.kt:1)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.createError(PlatformComponentManagerImpl.kt:575)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.createInstance(ExtensionComponentAdapter.java:42)
    at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.java:63)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:442)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:398)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensionList(ExtensionPointImpl.java:238)
    at com.intellij.idea.ApplicationLoader$startApp$7$1.run(ApplicationLoader.kt:226)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:222)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:201)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:193)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: java.lang.ClassNotFoundException: com.intellij.docker.conversion.DockerRunConfigurationConverterProvider PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:77)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getImplementationClass(ExtensionComponentAdapter.java:80)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.createInstance(ExtensionComponentAdapter.java:39)
    … 12 more
    2019-12-01 09:48:32,833 [ 2353] ERROR – nsions.impl.ExtensionPointImpl – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 09:48:32,837 [ 2357] ERROR – nsions.impl.ExtensionPointImpl – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 09:48:32,837 [ 2357] ERROR – nsions.impl.ExtensionPointImpl – OS: Linux
    2019-12-01 09:48:32,838 [ 2358] ERROR – nsions.impl.ExtensionPointImpl – Plugin to blame: Docker version: 193.5233.109
    2019-12-01 09:48:32,838 [ 2358] ERROR – nsions.impl.ExtensionPointImpl – Last Action:
    2019-12-01 09:48:32,838 [ 2358] ERROR – nsions.impl.ExtensionPointImpl – Plugin to blame: Docker version: 193.5233.109
    2019-12-01 09:48:32,838 [ 2358] ERROR – nsions.impl.ExtensionPointImpl – Last Action:
    2019-12-01 09:48:32,958 [ 2478] ERROR – ntellij.idea.ApplicationLoader – Can’t find bundle for base name resources.DockerBundle, locale en_US
    java.util.MissingResourceException: Can’t find bundle for base name resources.DockerBundle, locale en_US
    at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
    at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689)
    at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593)
    at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:1284)
    at com.intellij.AbstractBundle.getResourceBundle(AbstractBundle.java:70)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getActionsResourceBundle(ActionManagerImpl.java:229)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processGroupElement(ActionManagerImpl.java:676)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionsChildElement(ActionManagerImpl.java:1020)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerPluginActions(ActionManagerImpl.java:487)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.(ActionManagerImpl.java:139)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:44)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateClassWithConstructorInjection(PlatformComponentManagerImpl.kt:505)
    at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:52)
    at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
    at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
    at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:29)
    at com.jetbrains.cidr.lang.actions.OCActionsManager.componentsInitialized(OCActionsManager.java:12)
    at com.intellij.idea.ApplicationLoader$callAppInitialized$2.run(ApplicationLoader.kt:703)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:222)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:201)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:193)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
    2019-12-01 09:48:32,960 [ 2480] ERROR – ntellij.idea.ApplicationLoader – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 09:48:32,960 [ 2480] ERROR – ntellij.idea.ApplicationLoader – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 09:48:32,960 [ 2480] ERROR – ntellij.idea.ApplicationLoader – OS: Linux
    2019-12-01 09:48:32,961 [ 2481] ERROR – ntellij.idea.ApplicationLoader – Last Action:
    2019-12-01 09:48:33,035 [ 2555] ERROR – m.PlatformProjectOpenProcessor – Fatal error initializing plugin Docker
    com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing plugin Docker
    at com.intellij.ide.plugins.PluginManager.handleComponentError(PluginManager.java:55)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.handleInitComponentError(PlatformComponentManagerImpl.kt:247)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.registerComponents(PlatformComponentManagerImpl.kt:113)
    at com.intellij.openapi.project.impl.ProjectImpl.registerComponents(ProjectImpl.java:250)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.initProject(ProjectManagerImpl.java:313)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.convertAndLoadProject(ProjectManagerImpl.java:624)
    at com.intellij.platform.PlatformProjectOpenProcessor.prepareProject(PlatformProjectOpenProcessor.java:315)
    at com.intellij.platform.PlatformProjectOpenProcessor.lambda$openExistingProject$0(PlatformProjectOpenProcessor.java:241)
    at com.intellij.platform.ProjectUiFrameAllocator$run$1$1.run(ProjectFrameAllocator.kt:77)
    at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:247)
    at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:888)
    at com.intellij.openapi.progress.impl.CoreProgressManager$5.run(CoreProgressManager.java:441)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:163)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:585)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:531)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:59)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:150)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$null$4(ApplicationImpl.java:441)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:221)
    at com.intellij.util.ConcurrencyUtil.lambda$underThreadNameRunnable$3(ConcurrencyUtil.java:209)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:238)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: com.intellij.diagnostic.PluginException: com.intellij.docker.DockerFileDetector PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6 [Plugin: Docker]
    … 26 more
    Caused by: java.lang.ClassNotFoundException: com.intellij.docker.DockerFileDetector PluginClassLoader[Docker, 193.5233.109] com.intellij.ide.plugins.cl.PluginClassLoader@1324d4c6
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:77)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.registerComponent(PlatformComponentManagerImpl.kt:203)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.registerComponents(PlatformComponentManagerImpl.kt:109)
    … 23 more
    2019-12-01 09:48:33,036 [ 2556] ERROR – m.PlatformProjectOpenProcessor – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 09:48:33,037 [ 2557] ERROR – m.PlatformProjectOpenProcessor – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 09:48:33,037 [ 2557] ERROR – m.PlatformProjectOpenProcessor – OS: Linux
    2019-12-01 09:48:33,037 [ 2557] ERROR – m.PlatformProjectOpenProcessor – Plugin to blame: Docker version: 193.5233.109
    2019-12-01 09:48:33,037 [ 2557] ERROR – m.PlatformProjectOpenProcessor – Last Action:
    java.lang.NoClassDefFoundError: Could not initialize class com.intellij.openapi.wm.impl.GlobalMenuLinux
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$startup$4(PlatformImpl.java:257)
    at javafx.graphics/com.sun.glass.ui.Application.invokeAndWait(Application.java:468)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:349)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:257)
    at javafx.graphics/com.sun.glass.ui.Application.lambda$run$1(Application.java:157)
    at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
    at java.base/java.lang.Thread.run(Thread.java:834)
    2019-12-01 09:48:33,153 [ 2673] ERROR – pplication.impl.LaterInvocator – null
    java.lang.ExceptionInInitializerError
    at com.intellij.openapi.wm.impl.IdeRootPane.updateMainMenuVisibility(IdeRootPane.java:310)
    at com.intellij.openapi.wm.impl.IdeRootPane.(IdeRootPane.java:123)
    at com.intellij.openapi.wm.impl.ProjectFrameHelper.preInit(ProjectFrameHelper.java:117)
    at com.intellij.openapi.wm.impl.ProjectFrameHelper.(ProjectFrameHelper.java:91)
    at com.intellij.platform.ProjectUiFrameAllocator.initNewFrame(ProjectFrameAllocator.kt:119)
    at com.intellij.platform.ProjectUiFrameAllocator.access$initNewFrame(ProjectFrameAllocator.kt:51)
    at com.intellij.platform.ProjectUiFrameAllocator$run$1$1$1.run(ProjectFrameAllocator.kt:72)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:906)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:779)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:422)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:687)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
    at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:963)
    at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:193)
    at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:179)
    at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:455)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:453)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:82)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:250)
    at com.intellij.platform.ProjectUiFrameAllocator$run$1.run(ProjectFrameAllocator.kt:64)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:149)
    at com.intellij.platform.ProjectUiFrameAllocator.run(ProjectFrameAllocator.kt:62)
    at com.intellij.platform.PlatformProjectOpenProcessor.openExistingProject(PlatformProjectOpenProcessor.java:234)
    at com.intellij.ide.RecentProjectsManagerBase.openProject(RecentProjectsManagerBase.kt:379)
    at com.intellij.ide.RecentProjectsManagerBase.reopenLastProjectsOnStart(RecentProjectsManagerBase.kt:467)
    at com.intellij.idea.IdeStarter$main$4.run(ApplicationLoader.kt:533)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
    at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:107)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:116)
    at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
    at com.intellij.idea.IdeStarter.main(ApplicationLoader.kt:523)
    at com.intellij.idea.ApplicationLoader$startApp$8$1.run(ApplicationLoader.kt:242)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
    at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:241)
    at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
    at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:906)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:779)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:422)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Caused by: java.util.MissingResourceException: Can’t find bundle for base name resources.DockerBundle, locale en_US
    at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
    at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689)
    at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593)
    at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:1284)
    at com.intellij.AbstractBundle.getResourceBundle(AbstractBundle.java:70)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getActionsResourceBundle(ActionManagerImpl.java:229)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processGroupElement(ActionManagerImpl.java:676)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionsChildElement(ActionManagerImpl.java:1020)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerPluginActions(ActionManagerImpl.java:487)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.(ActionManagerImpl.java:139)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:44)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateClassWithConstructorInjection(PlatformComponentManagerImpl.kt:505)
    at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:52)
    at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
    at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
    at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:29)
    at com.intellij.openapi.wm.impl.GlobalMenuLinux.(GlobalMenuLinux.java:205)
    … 66 more
    2019-12-01 09:48:33,154 [ 2674] ERROR – pplication.impl.LaterInvocator – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 09:48:33,154 [ 2674] ERROR – pplication.impl.LaterInvocator – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 09:48:33,154 [ 2674] ERROR – pplication.impl.LaterInvocator – OS: Linux
    2019-12-01 09:48:33,155 [ 2675] ERROR – pplication.impl.LaterInvocator – Last Action:
    2019-12-01 09:48:33,264 [ 2784] ERROR – nsions.impl.ExtensionPointImpl – Can’t find bundle for base name resources.DockerBundle, locale en_US
    java.util.MissingResourceException: Can’t find bundle for base name resources.DockerBundle, locale en_US

  10. Alex says:

    After upgrading to 2019.3 I no longer can start the IDE. Clion is just stuck at splash screen. The log files are full of messages like:

    2019-12-01 21:56:46,692 [ 4605] ERROR – execution.ExecutorRegistryImpl – CLion 2019.3 Build #CL-193.5233.103
    2019-12-01 21:56:46,692 [ 4605] ERROR – execution.ExecutorRegistryImpl – JDK: 11.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
    2019-12-01 21:56:46,692 [ 4605] ERROR – execution.ExecutorRegistryImpl – OS: Mac OS X
    2019-12-01 21:56:46,693 [ 4606] ERROR – execution.ExecutorRegistryImpl – Last Action:
    2019-12-01 21:56:46,770 [ 4683] INFO – #com.intellij.AbstractBundle – Cannot load resource bundle from *.properties file, falling back to slow class loading: resources.DockerBundle
    2019-12-01 21:56:46,771 [ 4684] ERROR – nsions.impl.ExtensionPointImpl – [Plugin: JavaScript]
    com.intellij.diagnostic.PluginException: [Plugin: JavaScript]
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateExtensionWithPicoContainerOnlyIfNeeded(PlatformComponentManagerImpl.kt:522)
    at com.intellij.serviceContainer.BaseKeyedLazyInstance.createInstance(BaseKeyedLazyInstance.java:57)
    … stack trace …
    Caused by: java.lang.ExceptionInInitializerError
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateExtensionWithPicoContainerOnlyIfNeeded(PlatformComponentManagerImpl.kt:519)
    … 23 more
    Caused by: java.util.MissingResourceException: Can’t find bundle for base name resources.DockerBundle, locale ru_RU
    at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
    … stack trace …

    Tried re-installing multiple times. 2019.2.5 works nice. Before that I had EAP version installed side-by-side with 2019.2, and it was removed after upgrading the latter to latest release version.
    Has anyone else faced same issue? Is there a resolution to this problem?

  11. Eric says:

    While debugging code I tried expanding the storage on an eigen matrix and clion suddenly hangs completely and I’m unable to do anything but force kill the entire program. Expanding m_storage on an eigen matrix just shows collecting data… I’ve let it sit for 10 minutes now and nothing.

  12. Mario says:

    I update to 2019.3, then all my code shows error(maybe header files analysis error).
    Then I reinstall 2019.3, the error still persists.
    Then I install 2019.2, everything is OK.
    My computer is MacOS, and I use ssh remote feature to develop linux app.

  13. Andrew Smith says:

    The new version of CLion seems to make practically everything red (typically ‘use of undeclared identifier’/etc errors). Navigation works fine (even for things that are red). It appears to incorrectly think that all my user-defined classes are in the “std” namespace, as putting “std::” in front of anything makes the red go away. I need to turn off clangd error reporting for CLion to be usable at all (at which point all the red goes away).

    CLion 2019.2 works great. Is this a known issue with CLion 2019.3?

  14. Eric Larivière says:

    For Remote GDB Server, will only the binary be uploaded? Or built shared library and dependencies as well?

  15. Roman says:

    “Commit changes” window is very slow in this release, ~3 seconds wait to see a diff of file. Is this a known issue?

  16. Jason says:

    On Clion 2019.3, menu Tool > Resync with Remote host is gone. Please add this menu back, this is the only way to pull header files back from the unit on demand.

    • Vasily Romanikhin says:

      @Jason you can disable clion.remote.resync.system.cache registry option (Help->Find Action->type “Registry”). In this case Tool > Resync with Remote host will be available in menu.

  17. Alex says:

    Please tell me, when will the CLion finally learn to fully work with Qt? In debug mode, it still does not show for example the components of a QMetaObject, QString. Debug mode does not help at all.
    Thx.

  18. Alex says:

    What is missing:
    CLion does not know how to parse macros, it cannot generate code from macros.
    For example, in a Qt project, you need not override but q_override.
    From Q_PROPERTY CLion is not able to generate slots and signals.
    This is just a couple of points that CLion does not know how to work with. I can describe for a long time) just open Qt Creator and that’s it)
    Or, for example, before compiling a project for signals, CLion writes that there is no implementation, and only when the project build passes only then does it stop writing warning.

    • Anastasia Kazakova says:

      This is likely because CLion parses Qt project as a regular C++ project, not knowing any specific things about the Qt code. For sure, Qt Creator is a native IDE for things like that. But you are welcome to describe such cases in our tracker, so that we know what the users are expecting for Qt projects.

  19. Roman Popov says:

    Found new Jetbrains Mono font in this release. It is nice. Probably worth mentioning.

  20. Ernst says:

    is there some settings to decrease CPU load?
    when I’m writing this comment , clion + clangd utilize CPU 99%.
    where clangd -45.95% and clion – the rest.
    the project was loaded at morning (~7 hours ago) and clion is currently in a background, no actions with it.
    I just want to free the CPU capacity for other processes , at least when I don’t use clion.
    also memory usage is extremely high – 3Gb, VS with the same loaded project uses ~500Mb. Qt Creator less than 400. by the way – last one does also uses clang engine and it doesn’t CPU for up to 99%.
    it would be okay for clion if this provides me with instant auto-complete, but usually the typing is faster than waiting for a tips, which take ~5-15 seconds just for simple popup with class members :(

Leave a Reply

Your email address will not be published. Required fields are marked *