Early Access Program News

CLion starts 2017.3 EAP

Hi everyone,

We are glad to say that the Early Access Program for CLion 2017.3 is now open. The release is scheduled for the end of this year, and there are so many things planned!

CL_20173_EAP_blog

For now, please feel free to download the build and check the new features and enhancements that are already included. Your feedback is very welcome.

Download CLion 2017.3 EAP

This build (173.2099.3) addresses issues in several major areas, including C++ parser and debugger, it also provides better support for unit testing and a more flexible toolchains configuration. Let’s see what’s inside:

Unit testing: easy to run and debug from the gutter

If you use Google Test or Catch framework for unit testing on your project, you may benefit from the built-in test runner in CLion, which provides a progress bar, a tree view of all the tests running, information about the status, duration, and output stream. There is also the ability to easily sort and rerun tests, export/import testing results, and navigate to the test’s sources. This EAP now makes it easier to run tests and review results by adding special test icons to the editor’s left gutter:

test_icons_cut

You can run the tests using these icons. Besides, they show the status of the tests – success or failure, so you always know, when looking through the code of your tests if they failed recently or not:

test_status

Debugger: GDB 8.0

CLion 2017.3 EAP comes with GDB 8.0 bundled. Among other things, this brings fixes to several major issues and inconveniences.

Since bundled GDB is now built with multiarch support, it can be used for remote cross-platform debug in various Linux/Windows and embedded cases. For example, target Linux from the IDE running on Windows. There is no need to find/build another GDB version for this.

Previously, there was a bug with Application output on Windows, which redirected you to a separate console window instead of the default Run window when debugging (CPP-8175). The most critical case here was debugging the unit tests. Updating to GDB v8 helped to fix the bug, so now the output is printed to the default Run window for both, Run and Debug. (Bear in mind, that on Windows, CLion uses bundled GDB when MinGW32 is selected as the toolchain.)

Several other bugs were also addressed, like “LZMA support was disabled at compile time” error and incorrect rvalue references rendering.

C++ language engine improvements

List initialization improvements

We’ve promised a big overhaul in the problematic areas of CLion’s language engine, which parses, resolves and highlights the issues in your code, as well as provides info for the context search, navigation, and refactorings. Following the plan, we’ve started with the list initialization.

This work addresses lots of issues, most of which are linked to CPP-8143. Like for example:

  • some false “no matching constructor” error,
  • some false “too many arguments” and “too few arguments” errors,
  • invalid “parameter type mismatch” error for boost weak pointer initialization,
  • failed resolve for members of auto variables initialized with uniform initialization,
  • false “Invalid initializer” error with C99 union initializers,
  • and many others.

We definitely appreciate your feedback, and your reports on any issues you find (we expect some regressions here due to the massive changes).

Support for __COUNTER__

__COUNTER__ macro is now properly supported in CLion, which means CLion increments its value properly in the language engine and doesn’t show invalid duplicate declaration errors now:

counter_macro

Unique_ptr related issues (GCC7)

In case of using GCC7 one may encounter various issues with unique_ptr. CLion 2017.3 EAP comes with the proper support for it, and thus issues with unique_ptr such as incorrect “parameter type mismatch” and false “applying operator ‘->’ to … instead of a pointer” are now fixed:

unique_ptr

Invert if condition

One very common refactoring pattern is to invert the condition in the if clause and flip the if-else blocks. It can be used, for example, to simplify complex code using multiple nested if statements. CLion now provides a code intention that can do that:

modernize

Other improvements

In case you have include directives inside namespaces, which is a typical case for JUCE library, you will be glad to know that code completion, navigation and refactorings now work correctly for the symbols from such headers:

modernize

Besides, CLion 2017.3 EAP comes with the support for C++11 friend declaration syntax (CPP-3680).

Toolchains

Upd. CLion 2017.3 was released! Checked the final UI and description in the release blog post.

With this EAP we’ve started working on a configurable list of toolchains. When done, it should allow you to use different CMake/debugger or MinGW/Cygwin/Microsoft Visual C++ toolchains for different projects or configurations (ready in this EAP), and conveniently switch compilers, environment settings, etc (not yet ready).

The work has just recently started, but we want to present this current state to you within this EAP build. Let’s look at what is now supported.

In Settings/Preferences | Build, Execution, Deployment | Toolchains you can now add several toolchain configurations in addition to the Default one.

Default toolchain (macOS case):
default_toolchain

Extra toolchain configured:
nondefault_toolchain

For now you can change:

  • CMake
  • Debugger

On Windows this comes with an ability to select the environment – MinGW, Cygwin or Microsoft Visual C++ (keep in mind that MSVC support is still experimental and is available under clion.enable.msvc setting in the Registry):
toolchain_windows

Now, when you have several toolchains configured, you can go to CMake settings under Settings/Preferences | Build, Execution, Deployment | CMake and select different toolchains for different CMake configurations, for example, one toolchain for Debug, another one for Release:
cmake_configurations

Note that currently the CMake configuration should be named differently (CPP-8466).

These CMake configurations are now available for selection in Run/Debug Configurations:
run_debug_config

Besides this, on Windows CLion now works correctly with tools without providing a full path, for example, custom compiler path. The same logic as platform shell is used to find an executable.

That’s it for now! Check the full release notes here. More changes are coming with further EAP builds – stay tuned.

Download CLion 2017.3 EAP

Your CLion Team
The Drive to Develop

Discover more