CLion starts 2018.1 EAP: WSL support, C++17 if with initializer, CMake and project view changes

Anastasia Kazakova

Hi all,

We are back from our holidays, and it’s time to start CLion 2018.1 EAP!
CLion_2018_1_EAP_blog@2x

Our plans for this release are really promising and today we are happy to present to you a couple of great new additions to CLion:

Download CLion 2018.1 EAP

Using Linux toolchain on Windows in CLion

If you develop on Windows but use Linux toolchain to build your project, you can now use Windows Subsystem for Linux (WSL) development environment support in CLion. After configuring WSL on your machine, you can simply select WSL in Build, Execution, Deployment | Toolchains, provide proper credentials and that’s it! Here you can find a detailed blog post about the configuration details (including a special script that can help you to configure the WSL in case a Ubuntu distribution is used and a list of current CLion limitations and known issues). There is a short video which demonstrates the setup and a working sample:
https://www.youtube.com/watch?v=xnwoCuHeHuY

C++ support improvements

If and switch with initializers from C++17

When you put an initializer before an if or switch statement, it pollutes the ambient scope, or you have to introduce an explicit scope to keep the code clean. C++17 allows adding an initializer to the condition in the if and switch statements, which is a much more accurate and cleaner solution. CLion now can parse and resolve such statements correctly:
if_init

Refactor hierarchies reliably

There was an issue with some rename and change signature refactorings that were not updating functions in other inheritance branches (so completely ignoring sibling functions). That made these refactorings unreliable in such cases. The issue is now fixed. For example, Rename updates all necessary functions in all branches:
rename

And more

As a temporary workaround until some critical issues with Unused import statement inspection are fixed, we’ve disabled it in the default inspection profile.

Besides this, the build fixes an issue with the incorrect severity highlighting (CPP-1795, CPP-8301, CPP-11257). Now, if you change the severity of the inspection (Error, Warning, Weak Warning, etc.), the color in the IDE’s right gutter will be updated accordingly.

CMake changes: open single file/open folder, load CMake

The process of decoupling CMake from CLion has started, and now you can open any folder or file in CLion (use File | Open menu or Open option on a Welcome screen). Be careful, CLion still needs a project to properly understand your code and provide you with smart features (like navigation, completion, refactorings, etc.). However, if you wish to open some C/C++ files in CLion for simply reading the code, that will be enough.

CLion will notify you that the project is missing and will suggest loading the CMakeLists.txt file:
no_cmake_project

Note, that the CMake tool window and CMake tools menu won’t bother you until you load a proper CMake project in CLion – they all are hidden. When you select a CMakeLists.txt file, CLion will load it as a project file. If you select the wrong CMake file by mistake, you can always call Tools | CMake | Unload CMake project action.

There is also an important note about project root – when you load a CMake file into CLion, a directory containing this CMakeLists.txt is considered a new project root directory. You’ll see an IDE notification if it’s not matching your currently opened directory and you can change it via Tools | CMake | Change Project Root.

Alternatively, you can create a new CMakeLists.txt from scratch via Create New File (Alt+Insert on Windows/Linux, ⌘N on macOS):
new_cmake

For your convenience, there is a new file template for CMakeLists.txt file available in CLion, which you can edit in Editor | File and Code Templates.

Scopes in Project View and Find in Path

CLion 2018.1 EAP includes the ability to use scopes to filter the project view and limit a Find in Path search. CLion comes with a few predefined scopes. For example:

  • Project Files – all files within the project root, w/o the excluded folders
  • Project Source Files – Source files from the CLion perspective (all intellisense features work)
  • Project Non-Source Files – Files located in the project directory, that are not sources from the CLion perspective, which means files that are not included into the loaded CMake (intellisense features are disabled)
  • Problems – currently empty, will show analyzer errors later (CPP-11252)
  • Changes files – in case of VCS, all changed files

Users can also create their own scopes to use in the Project View and Find in Path.

By default, Project View opens Project, which includes all project files, including generated folder (like cmake-build-debug) and other excluded folders:
project_view

In the dropdown you can now select any predefined or custom scope:
Project_view_selector

In case you select any scope different from Project, in the context menu, the Edit Scopes action becomes available. It allows you to create and configure custom scopes:
configure_scope

You can use it later in Project view:
custom_scope_view

Mind that the colors have changed: source files became blue (previously not greyed out), non-source files now have regular colors (previously greyed out).

All predefined and custom scopes are also available in Find in Path to help you limit the search:
find_in_path_scope

Performance improvements: incremental highlighter

When you edit code inside a small function body in a huge file, you will now notice a significant performance boost – CLion updates the file highlighting incrementally, and local changes (in a function body) don’t affect the whole file highlighting.

Objective-C/Objective-C++ support

In this EAP we enabled Objective-C/Objective-C++ support in CLion. Which means it’s now possible to work with files in these languages which are added to your CMake project. The following features are now available in CLion:

  • Full Objective-C/Objective-C++ languages support coming from AppCode
  • All Objective-C inspections from AppCode (with the except of clang analyzer set)
  • Key-value coding support
  • Objective-C live templates, as well as File and Code templates for Objective-C
    .m/.mm file extensions in the list of C/C++ source files extensions
  • Code style/color schemes, however one needs to enable this in the Registry in clion.enable.objc.settings

MSVC

If you have Microsoft Visual C++ compiler installed on your machine, you can use it in CLion. And from now you don’t even need to turn on Registry setting for this. The functionality is available on Windows by default. Go to Build, Execution, Deployment | Toolchains to select VS development environment.

That’s it! Full release notes are available by the link. Download and try the build (181.3007.15) right now and share your feedback with us!

Download CLion 2018.1 EAP

Your CLion Team
JetBrains
The Drive to Develop

Comments below can no longer be edited.

40 Responses to CLion starts 2018.1 EAP: WSL support, C++17 if with initializer, CMake and project view changes

  1. Henry Borchers says:

    January 24, 2018

    Ooo! This looks neat. I can’t wait to try WSL support. Great job.

    I know it’s not a priority to implement the MSVC debugger but do you have any update on it? It’s pretty neat being able to use MSVC in CLion for when I need it (writing C/C++ extensions for Python for Windows) but without access to the debugger, it limits the use.

    Otherwise, I can’t have enough CLion in my life.

    • Anastasia Kazakova says:

      January 24, 2018

      We are considering various options regarding the MSVC debugger. However, nothing decided yet.

  2. Mike says:

    January 24, 2018

    This is great! Super excited about WSL, and I’d also love to be able to use MSVC debugger. Also, if there’s any way to get MSVC projects to build in parallel, that would literally save me 30 minutes per day of sitting and starting at the Clion build log…

  3. Tano says:

    January 24, 2018

    1. The “scopes” feature is not available for old (bug-less) “Find in Path”?
    I would be great to use the new ones, but I wait for the bugs to be fixed: IDEA-170658, IDEA-182269, IDEA-170662, etc
    Thank God you kept the old “Find in Path”, also.

    2. Also why the new Project arrow is so nicely placed on MacOS near the other icons and on Linux/Windows is in the middle of the bar? It’s the first time I see an icon in the middle of the bar and it’s ugly as hell.
    https://imgur.com/a/zxaQ7

  4. Kirill Sapozhnikov says:

    January 25, 2018

    Thanks for release.
    CPP-7635 is a very debatable decision. Reconsider this please. There is already an issue CPP-11834. I am sure that user should decide whether to hide or not to hide build window.

    • Anastasia Kazakova says:

      January 25, 2018

      Feel free to elaborate on the need for such behavior in YT: https://youtrack.jetbrains.com/issue/CPP-11834#comment=27-2681519

      • Tano says:

        January 29, 2018

        Wow this is really horrible, why are you keeping breaking things? I just opened a window regarding this issue, but I see it’s already there.
        Horrible, really horrible.

  5. Arthur says:

    January 25, 2018

    Great work !! And well done for WSL integration, are you working on enabling Clion’s valgrind features on Windows thanks to WSL toolchain, and if yes, what’s the current status ?

  6. Tano says:

    January 30, 2018

    Are there Win 32-bit versions?
    I just downloaded CLion on my Win 32bit machine and it does not work.

    • Anastasia Kazakova says:

      January 30, 2018

      No, CLion’s system requirements are limited to 64bit systems only

  7. Jennifer Kuiper says:

    February 1, 2018

    @Anastasia How do I create an Objective-C project? Or is that too far fetched?

    • Jennifer Kuiper says:

      February 1, 2018

      Or is this an early April Fools joke gone bad? 😉

    • Anastasia Kazakova says:

      February 1, 2018

      CLion’s main target is still C and C++, so you can just open/create/add Obj-C files into your C/C++ project. If you need to work with an Xcode/Obj-C project, AppCode is still a better choice.

      • Jennifer Kuiper says:

        February 1, 2018

        OK, fair enough. I will use AppCode then 🙂

  8. Jennifer Kuiper says:

    February 1, 2018

    BTW, will Kotlin Native and Swift plugins be removed? They are not available now.

    • Anastasia Kazakova says:

      February 1, 2018

      This is a temporary issue with the EAP versions of Swift and Kotlin/Native plugins. Stable/release versions are available. We are investigating the issue with the EAP.

  9. Gerry High says:

    February 5, 2018

    Is there a fix to get Kotlin Native working in the EAP? I don’t see any options to create a new project in Kotlin.

    • Anastasia Kazakova says:

      February 5, 2018

      For now, it’s not yet available. Will be restored in EAP in a couple of weeks. You can use it in the stable version for now (2017.3.3)

  10. Jakub says:

    February 17, 2018

    Hey, i see WSL so i have question:

    When Remote SSH Run/Debug will be available ?

    My project run in jetson tx2 so develop from macOS will be great!

    Thanks

    • Anastasia Kazakova says:

      February 18, 2018

      WSL is a first step in this direction. And it’s implemented via ssh, so you could expect proper remote/ssh support soon, hopefully, this year.

      • Jakub says:

        February 18, 2018

        Anastasia – you made my day!

        Thanks. Waiting 😉

  11. Ernst says:

    February 21, 2018

    wsl toolchain doesn’t work when ubuntu console is not started.
    I was previously working with VIsualGDB extension for Visual Studio –
    it didn’t require me to install ssh server there (actually no any manual step),
    it (extensioin) does even install there all required toolchains and tools
    and it didn’t require me to start and keep ubuntu/bash console.
    as I remember even app output was in VS debug output.

    I’d recommend your devs to look and try this tool for future own improvements in clion for wsl

    • Anastasia Kazakova says:

      February 22, 2018

      Our implementation of WSL is a first step in the remote dev support direction, so we intentionally implemented it via ssh. This will be reused for remote dev in future.

  12. melon says:

    February 23, 2018

    I think support toolchain from SSH likes eclipse-PTP is better than WSL, more simple and universal, don’t you ?

    • Anastasia Kazakova says:

      February 23, 2018

      WSL is exactly the first step in this direction. That’s why it’s done via SSH. Full remote toolchain support will follow later, using the same architecture.

      • melon says:

        February 24, 2018

        Great! When could you possibly finish this?

  13. cristi says:

    February 25, 2018

    It would be nice if we could select the compiler we want to use for WSL. It seems for the moment we’re stuck with GCC 5.4 that comes by default and we’re unable to switch to a newer version (basically making the C++17 features useless).

    • Vasily Romanikhin says:

      February 26, 2018

      I’ll just duplicate my answer from different discussion around WSL:

      1. As temporarily solution you could try to replace default path to the tool (cmake, gcc, etc) using symlinks.

      2. Here’s the issue for your requirement: https://youtrack.jetbrains.com/issue/CPP-12196

  14. btel says:

    March 2, 2018

    Is there any plan to release community edition like IntelliJ IDEA?

    • Anastasia Kazakova says:

      March 2, 2018

      No such plans for now.

  15. Goktan says:

    March 21, 2018

    “Performance improvements” -> easy to write but hard to achieve I guess.

    I am using the latest EAP and it is still slow, I mean unbearably slow and also recently started freezing other stuff on my computer.
    This is the case for a long time and many people around me are looking for alternatives as nothing gets better despite lots of complaints/tickets/provided logs/etc… so far.

    Maybe you should consider taking a break for features for a while and focus on making the product usable in the simplest form. I think pressing a key and seeing it appears on the screen without waiting 30 secs is the most important feature which an IDE should have.

    • Anastasia Kazakova says:

      March 22, 2018

      We are working on performance constantly. But of course there are still cases when freezes happen (we can’t cover all types of projects and all issues at once, sorry we’d really love to, but that’s impossible; however we’ll be happy to check your case to see what’s going on there). Current performance improvements are focused around typing in the IDE. If you still experience freezes while typing, please send us the thread dumps generated automatically and located in the log directory (Help | Show Logs)

  16. Uwe Ehmann says:

    October 3, 2019

    Still hugh perfomance problems using WSL. Are you really working on it?

    • Anastasia Kazakova says:

      October 3, 2019

      What version are you using (CLion)? Performance problems mean “slow” or “freezes”?

      • Uwe Ehmann says:

        October 4, 2019

        Version 2019.1.4

        It depends on the action if the IDE is slow or freezes:

        The IDE is slow when

        1. Resolving references, like finding usages, definitions and declarations.
        2. Code completion suggestions wrt. member functions and variables.

        The IDE freezes when
        1. Debugging using GDB and data of variables get inspected. A popup window indicates “Resolve operation requires more time…” which never disappears. After around 10 – 15s the IDE kind of unfreezes and the cancel button can be pressed.

        • Anastasia Kazakova says:

          October 4, 2019

          First of all, do you see such issues on local (non WSL) projects?
          Also, could you please try with the recent stable release aka 2019.2.3? Or maybe even better with the recent 2019.3 EAP build (it’s free to use by the way)?

          • Uwe Ehmann says:

            November 28, 2019

            I haven’t tried neither a newer build nor a local setup since a normal windows setup was no option for me. The issues appeared in projects where I used the C++ Eigen library as an include which is an extensive header only library. Projects without it went fine so far.

            • Anastasia Kazakova says:

              November 29, 2019

              I would recommend you trying the recently released 2019.3. It includes many improvements for Eigen among others

Subscribe

Subscribe for updates