CLion Starts 2019.3 EAP: Performance Improvements, Clangd-based Code Completion & Remote Debug via gdbserver

Hi,

Today we are launching the Early Access Program (EAP) for CLion 2019.3. We plan to release it by the end of this fall and, as you may remember, it was announced to be a special Quality-targeted Release.

As usual, the EAP builds are free to use and no license is required. The main goal is to test them in all kinds of non-standard or unusual environments you may have set up, and collect and fix as many issues and regressions as possible. So go ahead and grab a fresh build to try it now!

DOWNLOAD CLION 2019.3 EAP

Build 193.3519.24 is available from our site, via the Toolbox App, or as a snap package (if you are using Ubuntu).

CLion 2019.3 EAP

Key highlights:

Clangd-based code completion

To eliminate performance issues and lags, we continue integrating with the Clangd-based engine in the areas where it provides an advantage. This time it’s code completion.

CLion has several providers for code completion, which now include Clangd. The results are shown to you as soon as they arrive, so usually the first results come from the fastest provider. Clangd however produces the results in batches by 100 options. So in the performance metrics shown below, we’ve measured the time (in ms) to get the first 100 results (or fewer, if there are less than 100 results in total). The measurements were taken on a Core i7-8750H PC with 32 GB of RAM running 64-bit Windows 10.

On regular middle-sized projects, the results turned out to be quite similar for Clangd and CLion. However, on projects with known performance issues and lags due to CLion’s code completion, the results are very encouraging.

First comes LLVM (natural choice as we tend to dogfood CLion for Clangd development in the team!):
Code completion: LLVM
For the Eigen library, the acceleration is even more exciting!
Code completion: Eigen

A similar (or even better!) boost can be observed for Boost. For example, for boost::multi_index, nearly any completion for the multi_index_container is way faster (125 ms on Clangd vs 25,000 ms on CLion’s own engine).

For the Qt library, we observed a reasonable boost as well:
Code completion: Qt
You may ask, “Why do you keep the existing CLion code completion engine at all?” The main reason is that it offers additional results that are not yet possible to achieve with Clangd-based code completion. These include, for example, showing not-yet-included symbols, providing some reasonable hints for dependent code in templates, and so on.

So now, it’s up to you to check Clangd-based code completion on your project and see what kinds of speedups you get. Let us know how it goes!

Optimizing Building/Updating symbols step and fixing UI freezes

As we’ve already shared with you, in June our team ran an internal performance week / hackathon (along with the IntelliJ Platform team), playing with several fresh and brave ideas to improve the IDE’s performance. We focused mainly on optimizing the Building/Updating symbols step. The successful experiments have made their way into this 2019.3 EAP build.

Depending on the project and system characteristics, the boost is 10% to 50%, according to our measurements. This is covered by such tickets as CPP-16552, CPP-16991, CPP-16992, and some others. Note that these results are heavily dependent on the specific project, CPU, and environment you’re using, so please let us know whether you notice any improvements in your setup.

In addition, several UI freezes have been fixed:

We will continue coming up with various performance improvements and eliminating freezes, so stay tuned!

Search only for code usages when doing a Rename refactoring

Previously, when you called up the Rename refactoring for a variable, CLion first searched for all usages of the variable, including non-code usages such as string literals and comments. Then it suggested choosing between "Rename All Usages" and "Rename Only Code Usages". This could be very time-consuming and not even needed, if you really just wanted to rename only code usages.

Starting now, the Rename refactoring can ask you to make this decision before the actual search. To switch to such behavior, go to Settings/Preferences | Editor | General | Refactorings and turn off the setting ‘Enable in-place mode’ (it’s on by default). Then, when you press Shift+F6 / ⇧F6, CLion will first suggest the Rename dialog. Clear the checkboxes in this dialog (“Search in comments and strings” and “Search for text occurrences”) so that CLion searches for code usages only:
rename dialog

Launching remote targets automatically under gdbserver

Until now, if you did not use the Full Remote Mode in CLion, but built locally and just wanted to debug an executable running on a remote machine under gdbserver, you had to launch your program under gdbserver manually. Now, the hassle is gone – CLion will do the job for you!

To get it working, create a Remote GDB Server configuration instead of using the GDB Remote Debug configuration. Fill in the credentials of your remote machine and wait for the connection to be established:
Remote GDB debug

Now, if you select this Run/Debug configuration, you can debug on a remote machine via the remote gdbserver.

Other changes

Among other changes you will find:

  • Microsoft’s predefined formatting and naming style was added to the list of predefined styles in CLion:

MS style

  • To prevent situations when virtual functions accesses the resources that are not yet initialized or have already been destroyed, CLion gets a new inspection that detects virtual functions called from constructors or destructors. (Note! The inspection works only when Clangd is enabled.)
  • CMake 3.15 is now bundled.
  • Spell Checker now works in CMake and Doxygen comments.
  • CLion now bundles the Markdown plugin. Note, that if you have a Markdown Navigator plugin installed, this might cause a known issue. As a workaround, remove the Markdown Navigator from the plugin directory and restart CLion.
  • There are lots of improvements coming from the IntelliJ Platform, like smooth mouse scrolling, a timeline for GitHub pull requests, reworked Clone dialog, and many fixes to the JetBrains Runtime. Read about these changes in the IntelliJ IDEA blog.

That’s it for now! Give this build a try and stay tuned for further fixes and improvements!

DOWNLOAD CLION 2019.3 EAP

Your CLion Team

JetBrains
The Drive to Develop

Posted in Announcement, Early Access Preview | Tagged , , , , , , | 25 Comments

CLion 2019.2.2 Bug-fix Update

Hi,

A new bug-fix update, CLion 2019.2.2 (build 192.6603.37), is now available for download from our website, via the Toolbox App, or via snap (for Ubuntu). A patch update will be available shortly. If you haven’t updated to v2019.2 yet, now’s a good time to do so.

DOWNLOAD CLION

Fixes for parameter name hints

CLion 2019.2 introduced a new feature called Parameter Hints. These are the names of function parameters for passed arguments, which are displayed in the editor in line with your code to help increase its readability.

In this bug-fix update, we’ve fixed a few issues related to Parameter Hints in CLion:

  • There is a default black-list now for C++ Parameter Hints. It includes std::min/max, std::forward, std::vector::push_back, strcmp / strncmp, and some others:

Hint blacklist

  • Parameter hints now correctly handle brace elision in aggregate initialization:

Brace ellision

  • In pack expansion, the & hint is now shown for all the parameters.
  • Now, CLion doesn’t show a hint if there’s a comment matching the hint / parameter name. It recognizes comments in the form of /*NAME=*/ (the = can be any character and NAME must match the hint for that argument).
  • A Parameter Hint is now shown before NULL.

Bundled LLDB on Catalina macOS

macOS 10.15 Catalina is gonna be released soon, so we’ve made sure the bundled LLDB works there (CPP-17126). There are still some possible warnings (CPP-17268), but they don’t seem to prevent debugging.

JetBrains Runtime update

Finally, JBR 11 has been updated and addresses the following issues:

  • Fixed the corrupted fonts on the Welcome Screen on Windows (JBR-1777).
  • Fixed the issue that caused incorrect font (italics) in the editor (JBR-1778).

The full list of JBR improvements can be found here.

IDE release notes are also available.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , , , | 4 Comments

CLion 2019.2.1 Bug-fix Update

Hi,

CLion 2019.2 was released just a few weeks ago, and now we are ready to give you the first bug-fix update. CLion 2019.2.1 (build 192.6262.62) is now available for download from our website, via the Toolbox App, or via snap (for Ubuntu). A patch update will be available shortly. If you haven’t updated to v2019.2 yet, now’s a good time to do so.

DOWNLOAD CLION

Continue reading

Posted in Announcement | Tagged , , , | 17 Comments

What’s Next? CLion 2019.3 Roadmap

CLion 2019.2 landed just a few days ago. Do check it out if you haven’t yet! It’s got a lot of cool things for Embedded developers, an experimental debugger for the MSVC toolchain, a more flexible and reliable Unused Includes check, parameter code hints, and much more. Here is a fantastic video from Phil Nash to quickly take you through the key highlights.

Meanwhile, we are moving forward and thinking through our future updates and the next release. But before we share our plans, let’s take a minute to give our sincerest thanks to the most active evaluators, who helped us make v2019.2 more stable and accurate.

Special thanks

We want to thank all the users – more than 4 thousand in total! – who participated in the 2019.2 Early Access Program. You helped us immensely with the huge variety of possible setups and configurations, and even a few general issues we somehow missed. We greatly appreciate your help!

Continuing our ongoing tradition, we present our most active EAP evaluators with a full 1-year subscription to CLion, which can be redeemed as a new subscription or an extension of a current one. So, here are the contributors that we want to give special thanks:

  • Dmytro Nezhevenko
  • Ivan Stepanov
  • Patrick Turley

You will receive a personal email with details on how to claim your license. (If for some reason you do not get an email from us within a week, ping us here in the comments!)

CLion 2019.3 roadmap

We take application performance and code quality very seriously. Following the internal performance week / hackathon that our team held together with the IntelliJ Platform team this June, we are now planning a special Quality-targeted Release. Here’s what that means in simple words:

  1. We’ll work to flesh out and implement the fresh ideas and fixes we tried during our performance hackathon.
  2. We plan to work intensively on various performance boosts, including some massive overhauls we started earlier this year. You can expect a series of blog posts covering the progress and explaining the underlying ideas, with some measurements on referenced projects so that you can compare them with your cases.
  3. We plan to focus on fixing issues and eliminating pain-points in different areas, rather than introducing new functionality. (Don’t forget to upvote the pain-points that affect you the most, so that we can prioritize them to help as many users as possible!)
  4. We still plan to continue our work in the directions we feel are important, such as covering Makefiles support and some others. Please read on for the details.

Continue reading

Posted in Announcement | Tagged , , | 44 Comments

CLion 2019.2 has landed with new functionality for Embedded Developers, experimental MSVC debugger, updated Unused Includes check, parameter hints, and much more

CLion 2019.2, the second big update this year, is here now! It brings improvements for Embedded Developers and adds more debugging abilities – including an experimental debugger for the Microsoft Visual C++ toolchain. That’s not all, there’s a fully-reworked Unused Includes check, enhancements in the editor, improved performance, and more.

CLion 2019.2 banner

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

DOWNLOAD CLION 2019.2

In brief, here are the main improvements:

Read on for the details or check out this short What’s New video by Phil Nash:

Continue reading

Posted in Announcement | Tagged , , , , , , , , | 27 Comments

CLion 2019.2 Release Candidate is Here

Hi,

Please welcome the Release Candidate for the upcoming CLion 2019.2!

To install CLion 2019.2 RC (build 192.5728.70), download it from the website, update from our Toolbox App, or use a snap package (for Ubuntu). Please note that to use CLion 2019.2 RC, you need to either have an active subscription or start a 30-day evaluation period. No patches are provided for this release candidate, but you can expect a patch from the latest 2019.1.4 update to the 2019.2 release version.

DOWNLOAD CLION 2019.2 RC

This builds brings some cosmetics updates to the recently added Peripherals View. We’ve also fixed some issues related to that view, like having to click the load button twice (CPP-16730) and some incorrect cells coloring in the table (CPP-16746).

In the 2019.2 EAP builds, we’ve enabled an experimental LLDB-based debugger for the Microsoft Visual C++ toolchain. It was also available for MinGW under the same experimental setting. However, while the debugger for MSVC is more or less stable and the improvement path is clear enough, for MinGW the quality was not satisfactory. We’ve decided to turn it off for now, even under the experimental setting, leaving only the MSVC debugger available.

The full release notes are available here.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , , | 15 Comments

CLion 2019.2 Hits Beta

CLion 2019.2 goes Beta! To install CLion 2019.2 Beta (build 192.5728.28), download it from the website, update from our Toolbox App, get it through a snap package (if you are using Ubuntu), or use a patch update.

DOWNLOAD CLION 2019.2 BETA

blog@2x

Beta builds are much more stable than EAP builds, but some issues may still occur. If you find any issues, please report them to our issue tracker. You don’t need a license to use this build.

The main highlights:

  • The updated ‘Unused includes’ check no longer hangs in a batch mode (run via run inspection by name)
  • A fix for the issue with the freezing rename refactoring when invoked from the context menu (CPP-16768)
  • A fix for the code highlighting disappearing after a file was saved when the parameter name hints were enabled (CPP-16741)

The full release notes are available here.

Your CLion Team,
JetBrains
The Drive to Develop

Posted in Announcement, Early Access Preview | Tagged , , | 32 Comments

CLion 2019.2 EAP: Peripheral View for ARM Devices

Hi,

A new CLion 2019.2 EAP (build 192.5587.18) is now available. Download the full build from our site, install it via the Toolbox App, or use a snap package for Ubuntu. A patch-update for the previous EAP build will be available shortly.

DOWNLOAD CLION 2019.2 EAP

This build introduces the Peripheral view for ARM embedded devices.

What do you need to start with it in CLion?

The Peripheral view in CLion is shown during debugging for two types of Run/Debug configurations: Embedded GDB Server and OpenOCD Download & Run. So, first, you need to have a configuration. When you run it, you’ll see the Peripherals tab in the Debug tool window with an invitation to load the .svd file:
peripherals_load

Second, you need is an .svd file, which is a standard ARM file with the definitions of peripheral registers. MCU vendors publish them along with the chip documentation, or you can find them inside various SDKs or libraries.

Select the file and the active peripherals to show:
peripherals_select_active

That’s it!
peripherals_loaded

A few notes on the Peripherals tab

You can switch between Decimal, Octal, Hex, and Binary views of the peripheral value via the context menu:
peripherals_mode

Note the peripherals are read-only for now. We plan to implement a read-write mode later.

If you need to search for a particular value, just start typing the name:
peripherals_search

On the Peripherals tab, you can also find a few useful buttons:

  • The Stop refreshing button stops the on-the-fly updates to the peripherals on stepping. It can be useful if the operation is time-consuming. And with the Refresh button, you can trigger an update manually.
  • The Configure button opens the Load .svd file dialog. By the way, you can load several .svd files at once and select the active peripherals you need from each one.
  • Export as CSV to Clipboard and Open as CSV in Editor can be useful if you want to compare peripherals from several runs or save it for the future investigation.

Last but not least, this EAP build bundles GDB 8.3.

The full release notes are available here.

DOWNLOAD CLION 2019.2 EAP

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement, Early Access Preview | Tagged , , | 6 Comments

CLion 2019.2 EAP: MSVC Debugger, Unused Includes Check, and More

Hi,

A new CLion 2019.2 EAP (build 192.5438.15) is now available. Download the full build from our site, install it via the Toolbox App, or use a snap package if you are using Ubuntu. A patch-update for the previous EAP build will be available shortly.

The main highlights:

DOWNLOAD CLION 2019.2 EAP

Continue reading

Posted in Announcement, Early Access Preview | Tagged , , , , , , , | 37 Comments

CLion 2019.2 EAP: fixes for Debugger and Parameter hints

Hi,

A new CLion 2019.2 EAP (build 192.5281.33) is now available. Download the full build from our site, install it via the Toolbox App, or use a snap package if you are using Ubuntu. A patch-update for the previous EAP build will be available shortly.

DOWNLOAD CLION 2019.2 EAP

Parameter Name Hints

The first 2019.2 EAP introduced Parameter name hints that helps with the code readability by showing the names of function parameters for passed arguments. This build brings a few important fixes for it:

  • Fixed the freezes in the IDE caused by parameter hints (CPP-16494).
  • A parameter name hint was added for an argument which is a constructor without parameters (CPP-16423):
    constructor_hints
  • A parameter name hint was added for the this pointer (CPP-16312):
    this_hints

Debugger

This EAP also brings a set of fixes in Debugger:

  • Fixed the bug with the evaluate an expression with GDB. It gets constantly re-evaluated each time the debugger refreshes the variables view (CPP-7358).
  • Fixed the issue with GDB when a variable’s value is not updated on stepping after “Set value” command (CPP-13295).
  • Fixed the GDB hangs in the case of MinGW-w64 and multi-line commands(CPP-9090).

And more

Among the other changes:

  • Commit from the Local Changes for projects that use Git or Mercurial as their version control system (see the blog post for more details).
  • Windows Defender performance warning (see the blog post for more details)
  • Remove false positives with constructors marked as unused, if created via std::make_shared.
  • Fixed the issue with the macro replacement in quick documentation which was not working when ClangFormat is enabled(CPP-16244).

The full release notes are available here.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement, Early Access Preview | Tagged , , | 11 Comments