CLion 2018.2 released: clangd, Gradle and compilation database projects, Google Sanitizers, and database support

Since CLion 1.0 first came out in April 2015, it has been growing steadily. Still, there are many areas for improvement, and we feel a responsibility – both to our current customers and those still waiting for some critical functionality to be added before they adopt CLion – to make progress in these areas. Hopefully, this release moves us one step closer to making good on that promise.

In this release, we’ve done our best to deliver some very important new capabilities for both groups. On the one hand, CLion comes with an experimental complementary clangd-base language engine and a set of important performance improvements. On the other, it introduces support for several new project models, which may open the door to a public project model API in the future.

800x400_blog@2x

Read on for more details (or don’t), but make sure to grab your free 30-day trial to evaluate all the new features and enhancements:

For a quick overview of the new features and enhancements, watch this video from Phil Nash:

Download CLion 2018.2

Continue reading

Posted in Announcement | Tagged , , , , , , | 56 Comments

CLion 2018.2.2 EAP

Hi,

CLion 2018.2.2 EAP (build 182.4129.15) is now available. Get it now from our Confluence page:

Download CLion 2018.2.2 EAP

Please, note that this EAP build requires an active subscription (or you can start a 30-day evaluation period). A patch-update will be available shortly (in case you are using CLion 2018.2.1).

This build includes the following improvements:

  • Performance improvement for CMake projects generation/loading.
  • When debugging on Windows, if you prefer to run the app in the separate console, not in the one integrated into CLion (which happens by default for GDB version 8.0 and higher), you can turn it on in Registry via the cidr.debugger.gdb.workaround.windows.forceExternalConsole setting.
  • Clangd-based language engine got a few improvements:
    • Correct handling of header search paths for non-CMake projects (CPP-13715).
    • Better diagnostic in case of unresolved includes (CPP-13498).
    • Performance optimization (CPP-13729).
  • Several issues related to enums were fixed in the CLion’s own language engine: CPP-7797, CPP-4957, CPP-6138

Full release notes are available here.

Your CLion Team

JetBrains
The Drive to Develop

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

Working with Makefiles in CLion using Compilation DB

One of our most frequent feature requests for CLion is the ability to use project or build systems other than CMake. There are many good reasons for needing to use something different – but if you could only pick one we still feel CMake is the best choice. That’s not because we think it is perfect (although it’s worth noting that some of the issues that people have with it may be addressed by focusing on “Modern CMake”). Instead it’s because CMake is in very widespread use – especially in the open-source world, where it has become the de-facto standard.

CMake also has the advantage that it is a meta-build system. It can generate build files for other major build systems. In fact that is really the only way works, although CLion uses it in a way that mostly hides that from you by default (generating Makefiles behind the scenes).

While this is a great starting point, we do want to support other build systems and project formats and work has been progressing over the last couple of releases towards fully decoupling CMake. The initial results of that ongoing work have been: support for Cargo (for Rust projects) in 2018.1, a third-party plug-in for Bazel, and, in 2018.2, Gradle C++ projects and the ability to open Compilation Database JSON files. This is just the start, but is also a lot more useful already than you may realise. To find out why we need to look at what a Compilation Database actually is.
Continue reading

Posted in Tips'n'Tricks | Tagged , , , | 3 Comments

CLion 2018.2.1 update enables clangd on Windows

Hi,

CLion 2018.2 release has happened just recently. And today we are happy to announce that the first bug-fix update 2018.2.1 is now available. If you haven’t yet upgraded to CLion 2018.2, good time to do so right now!

Get a fresh build from our website, use Toolbox app or snap packages (in the case of Ubuntu) to update. A patch-update will be available shortly for those using CLion 2018.2.

Download CLion

Clangd-based language engine on Windows

In this build the experimental clangd-based language engine is finally enabled by default on Windows (previously we enabled it by default on Linux and macOS)! It’s still used only to show errors and warnings in the editor, however that means that you get more accurate error highlighting on all platforms by default.

If you experience any issue with it, report it to our tracker, customize the settings or turn the engine off in Settings/Preferences | Languages & Frameworks | C/C++ | Clangd.

And more

Other fixes include:

  • A fix for a UI freeze when sanitizers are used (CPP-13341).
  • Fixed poor performance of VCS repository detection (related to symlinks).

Full release notes are available by the link.

If you are interested in what’s coming in CLion 2018.3, check the preliminary roadmap here.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , , | 10 Comments

What to expect? CLion 2018.3 roadmap

Hi,

A big CLion 2018.2 release has happened just recently. Have you tried the new version yet? If not, get your free 30-day trial on our site now. Clangd, new project models, Google Sanitizers, and many other goodies are waiting inside!

Meanwhile, we’ve already discussed and planned future improvements for CLion and would like to share our plans with you. But first, let’s follow our good tradition and thank our evaluators!

Special thanks

We’d like to thank all evaluators for helping us ship so many great new improvements in CLion 2018.2. The huge variety of your projects and setups made this task much easier for us! These 3 contributors to CLion’s Early Access Program deserve a special mention:

  • Sebastian Hofstetter – we’d like to especially thank Sebastian not only for detecting a clangd issue on Windows, but also for his detailed investigation which led to easy and quick understanding of the problem on our side.
  • Tesla Ice Zhang
  • Alexey Klimkin

In appreciation of your efforts, we present each of you with a free 1-year subscription for CLion (to extend your current subscription or get a new one). You will receive a personal email with details on how to claim your license. (If for some reason you do not get any email from us within a week, ping us here in the comments.)

CLion 2018.3 roadmap

We’re keeping focus on the major directions outlined previously, but we now have a clearer vision of particular areas and tasks.

Note: The following is a preliminary plan; we cannot guarantee that all of the features listed below will be included in CLion 2018.3.
  • C++ Support:
    • Clangd-based language engine requires some polishing of the current code, fixes on Windows, and several general pain-points. We’ll also consider moving other code insight features (at least some local ones) to this language engine, one by one.
    • Bug fixing in the current language engine. Better C++17 knowledge will likely be also added to CLion’s own engine.
  • IDE performance:
    We’ll continue our incremental job of fixing UI freezes and improving performance across the board.
  • Remote development:
    The first prototype is under development and we really hope to include it in v2018.3. The target system will likely be limited to Linux.
  • Project Models:
    • Improve compilation database integration in CLion.
    • Add an ability to build/run projects from compilation database through user-defined commands.
    • Investigate other project models and continue our work on project model API in CLion.
  • Formatter:
    • Integrate clang-format as a separate tool for explicit code reformatting.
    • Consider importing formatting settings from the clang-format files.
  • Debugger:

As usual, your feature requests and suggestions are welcome in our tracker.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , , | 36 Comments

Rust plugin update: language support improvements, new quick-fixes, improved debugger and more

Hi,

CLion 2018.2 was released just recently. Along with the release, the Rust plugin has had an update! In this blog post, we’d like to highlight some of the main improvements in the plugin.

However, before we do that, let me briefly remind you about the current state of the Rust plugin:

  • It’s available in all our IntelliJ-based IDEs.
  • It relies on the Cargo build system, and CLion is no exception here!
  • The debugging feature for Rust code is currently only available in CLion.

Here we listed earlier the features in the Rust plugin. What’s new for Rust with the 2018.2 update?

Language support

There is a set of language support improvements. We’ll highlight the most important:

  • Pattern-matching on references got some attention in the language (RFC 2005), and now it is supported properly in the IntelliJ Rust plugin, which means the types are inferred correctly.
  • The expansion of declarative macros guarantees that you can now get better code insight when using macros. For example, the completion works:
    Macro Expansion
    The best use of it is for error handling via error-chain crate based on macros.

    Keep in mind its limitations – if the impl block is generated with the macro on its own, then such completion won’t work as the IDE currently is not aware of its expansion.

Continue reading

Posted in Announcement | Tagged , | 10 Comments

CLion 2018.2 Release Candidate 3

Hi,

A new CLion 2018.2 Release Candidate is now available (build 182.3684.76)!

Please note that to use CLion 2018.2 RC3 you need to have an active subscription (or start a 30-day evaluation period).

Download CLion 2018.2 RC3

Our Early Access Program lets development community closely participate in discussions devoted to our products and identify issues that were possibly overlooked by our team. Unfortunately, one of such issues – CPP-13704 – is related to the new experimental clangd-based language engine on Windows. Since we can’t provide a reliable solution quickly, we decided to turn clangd-based language engine off by default on Windows. You still can enable it in Settings/Preferences | Languages & Frameworks | C/C++ | Clangd, but in this case mind the bug.

This has an unfortunate consequence – argument selection defects inspection was implemented on top of clangd-based language engine (this solves a performance issue and some others). That means that on Windows the inspection is not available unless you turn on the clangd in CLion’s settings.

Full release notes are here.

Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , , , | 8 Comments

CLion 2018.2 Release Candidate 2

Hi,

Welcome the 2nd release candidate (build 182.3684.46) for CLion 2018.2!

As we are getting closer and closer to the official release, we are now mostly working on the final fixes and improvements. If you notice any problem at all, please report it to our tracker.

Download CLion 2018.2 RC2

Please note that to use CLion 2018.2 RC2 you need to have an active subscription (or start a 30-day evaluation period).

This build highlights include:

  • An experimental Clangd-based language engine got several improvements:
    • On Windows: incorrect errors on LLVM project were removed (CPP-13502) and some false errors in case of OpenMP usage were fixed (CPP-13626).
    • Invalid code ranges in case of Tab character used in the file were fixed (CPP-13631).
    • A regression was fixed: non-existing C functions in C files are highlighted, allowing create from usage fix.
  • Default C++ standard used when creating a new project in CLion is now C++14 (it was C++11 before).

Full release notes can be found here.

Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , , , | 4 Comments

CLion 2018.2 Release Candidate

Hi,

Please welcome the first Release Candidate for the upcoming CLion 2018.2!

Get the build (182.3684.12) from our website or use Toolbox app or snap packages (in the case of Ubuntu) to update. A patch-update will be available shortly for those using the previous EAP build. No license is required and the build is free to use, but it will expire within 30 days of the build date.

Download CLion 2018.2 RC

Here are the highlights:

  • An experimental complementary Clangd-based language engine is now enabled on Windows by default (previously it was done on macOS and Linux). Check more details about available settings and known limitations in this blog post.
  • Fixes for GDB:
    • Debugger pretty-printers are now used when displaying pointers to structures in CLion (CPP-7276).
    • Passing of the program arguments containing non-trivial escaping on Windows is now fixed (CPP-13272).
  • Fixes for LLDB:
    • Values of the unordered_map are now displayed correctly in CLion (CPP-4845).
    • Unsigned char (uint8_t) is no longer treated as signed (CPP-13174).

Full release notes are available by the link.

Your CLion Team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , , , , | Leave a comment

CLion 2018.2 EAP: argument selection defects inspection

Hi,

Please welcome CLion 2018.2 EAP (build 182.3569.10)!

As usual, a patch-update will be available shortly for those using the previous EAP build, and you can also use Toolbox app or snap packages (in the case of Ubuntu) to get this build. No license is required and the build is free to use, but it will expire within 30 days of the build date.

Download CLion 2018.2 EAP

New inspection: argument selection defects

With this new inspection CLion can detect situations when wrong arguments are passed to a function call (for example, the wrong order of the arguments of the same type). The algorithm relies on various heuristics and some description can be found here. If argument and parameter names are meaningful, the results can be really impressive and useful:
arguments_swap

The inspection settings are located in Settings/Preferences | Editor | Inspections | C/C++ | General | Argument selection defects:
arguments_settings

Mind that the inspection is working on top of the experimental clangd-based language engine, so it requires the clang-tidy via a clangd option to be turned on. Among other limitations, note that the inspections is not triggered for the following cases:

  • At least one of the parameters have one or two letters in the name (to avoid false positives).
  • At least one of the parameters contain “swap/inverse/rotate/backward/flip” substrings.

Other changes

Besides, this build brings the following improvements:

  • It fixes the issue with failing build with WSL due to whitespace in path.
  • It bundles CMake v3.12.
  • If the compilation database for the project you try to open in CLion includes some incorrect compile command, CLion now reports a corresponding error.

It’s also worth mentioning that previous EAP build enabled clangd as an additional C++ language engine in the experimental mode and your feedback and issue reports are very important at this stage.

Full release notes are available by the link.

Your CLion Team
JetBrains
The Drive to Develop

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