CLion 1.1 roadmap & ACCU 2015

Hi everyone,

Last week’s CLion 1.0 release brought lots of excitement, along with a shower of comments and suggestions. After celebrating this milestone, we processed all of your feedback to lay out a plan of moving forward to make CLion a better C/C++ IDE.

Summer is a good time to take a deep breath, sit back and polish all the smart features we introduced in v1.0. We plan to release CLion 1.1 by the end of summer, focusing on these areas:

  • Code style changes will cover formatter fixes and various bundled coding styles schemes. This is the perfect time to share your favorite one(s). Post them in the comments below!
  • Debugger improvements will include LLDB integration.
  • Continuing to work on CMake support, we will finish most cases for completion and navigation in CMake files. We’ll also going to fix slightly unexpected behavior where header files aren’t listed in CMakeLists.txt and not included into the project.
  • Autoimport will evolve to hopefully become your indispensable assistant.
  • Last but not least, we’ll continue testing CLion on huge projects to fix freezes and improve the performance.

CLion 1.1 will also include lots of bug-fixing. Your votes for issues in our tracker can help set the right priorities.

Things can change but we’ll try to follow this plan.

We know you are waiting for integration with other build systems, Google Test and more additional tools. They will definitely come to CLion, though not in v1.1. We do appreciate your patience. Stay tuned and follow our updates!

ACCU 2015

In case you’ll be in Bristol this week, don’t miss the fantastic ACCU 2015 conference. Do stop by our booth or simply catch someone from the team in the venue to chat, share ideas, ask for demos, and learn a trick or two from our CLion and ReSharper C++ team members. See you there!

Develop with pleasure!
The CLion Team

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

83 Responses to CLion 1.1 roadmap & ACCU 2015

  1. Apurva Mehta says:

    I think for C++, having great automatic support for the Google C++ style guide would be pretty useful, since it is becoming quite popular.

  2. Javier says:

    Favorite Code Style: Google C++ Style Guide

  3. Tengiz Sharafiev says:

    How about this one http://www.barrgroup.com/Coding-Standard ? It’s standard for embedded C development.

  4. Yury V. Zaytsev says:

    Will there be point releases with batches of bugfixes that are ready for consumption in between?

    Also, regarding build system support, you might wish to consider the route that many tools have taken in the past, like clang-analyzer. The idea is to override the C/C++ compiler executables by providing smart compiler wrappers, and this way collect all the calls to the compilers, no matter which build system is actually used. After that you can use compiler dependency generation (“-M”) flags to get the information about the rest of the files, or rely on your own front-end for this kind of analysis, whichever you deem to be more appropriate.

    The benefit of this scheme is in that you’ll automagically gain baseline support for *any* build system out there, and then you’ll only need to add custom code to specifically support the most requested ones in addition to CMake.

    • Anastasia Kazakova says:

      > Will there be point releases with batches of bugfixes that are ready for consumption in between?
      Sure, just as we usually do.

      Thanks for the suggestion. This could be a possible solution and we’ll compare it to other variants we have.

  5. Alexander Bychuk says:

    please, add support for astyle

  6. X5 says:

    Need a cpp plugin for Idea to use android NDK,hope it will come in the future:)

    • Anastasia Kazakova says:

      Not sure how CLion-based plugin for IntelliJ IDEA is connected with android NDK. In the nearest CLion is not going to support Gradle and other Android-related features.

      • Kirill says:

        CLion could possibly just-edit C\C++ sources in an android NDK project without full support (build + debug)

        We are developing an android project in the IDEA currently and it has java and C\C++ source files.

        • Anastasia Kazakova says:

          CLion relies on a build-system, that is CMake for now and takes all the information for correct resolving out of there. So you can possibly import your sources into CMake project with CLion, tune the build system (some specific linking, include header paths, etc.) and then it will be possible.

  7. Terence Martin says:

    The lack of 32 bit support and using regular make as a build system is a real killer, but c’est la vie. Is there any chance of adding Objective-C support (presumably taken from AppCode) to CLion? (We use gcc/clang and GNUstep to write server software at my company, stuff that was originally ported from NeXT).

    • Anastasia Kazakova says:

      Really not sure about Objective-C. Do you use them both in one code base? AppCode is for iOS/OS X development mainly, still supports Objective-C, Swift, C and C++. While CLion is cross-platform and works with GCC and clang. And we not sure what can be a common use case to unite these two.

      • Terence Martin says:

        Yeah our primary code base is Obj-C under Linux, using clang to compile and gnustep to provide the foundation libraries.

        I figured it would be a bit of a long shot, but I thought I’d ask anyway. We’re definitely in the minority using this combination of platform and language.

      • Semi Essessi says:

        we have this problem. we work fully cross platform with C/C++ as code making up the bulk of projects.

        iOS and OS X necessitate a little Objective-C or Swift and Android necessitates a little Java – having one IDE for this that doesn’t suck (Eclipse is very close, but it is an utterly awful as a tool) would be a great help, even though we are likely to always use Visual Studio (die-hards refuse to move) and Xcode (Apple do their best to force it on you), having one consistent development environment is even more useful.

        AppCode doesn’t solve this problem for us, but CLion is close… maybe a better solution would be IntelliJ Ultimate, but it seems lacking in features too.

        • Anastasia Kazakova says:

          What’s the problem with AppCode for you? C/C++ support is committed to both products, so it’s actually the same. Which build system do you use?

  8. Rapmdubdab says:

    Please, please, add remote compiling or at least remote deployment!

  9. Tomas says:

    Firstly, I would like to thank you so much for your work and enthusiasm, the IDE is fantastic fruits of your labour!

    Please consider replacing default Google C++ Style. You should definitely use the Almman formatting^1 style so-called ANSI C++, since it contributes to better readability and maintainability.

    When achieving implementation of Almman style (and hope also other styles) you can take inspiration from source formatter called Artistic Style^2. It is very nice and useful if you will want for example create a default set of style sheets and let to users to choose their favourite.

    [1] http://en.wikipedia.org/wiki/Indent_style#Allman_style
    [2] http://astyle.sourceforge.net/astyle.html#_Quick_Start

    • Anastasia Kazakova says:

      Thank you very much for your suggestions. We’ll have a look!

    • Michael Hofmann says:

      I completely second that. I find the Google style very problematic in a number of aspects, including but not limited to variable/class naming, brace placement and allowed line lengths. Not to mention a few other incomprehensible things, like the no-non-const-refs rule for function arguments.
      Allman-style at least improves on the Google style w.r.t. brace placement – it’s a start.

      Luckily CLion is pretty flexible in its options, although a few important ones are missing.

      For example, it would be highly desirable (i.e. so all team members can follow our in-house style guide) to be able to decide w.r.t. function declarations/definitions whether or not to separate a) template specifiers, b) the (optional) inline keyword, c) their return type, and d) the function name/arguments by line breaks. As in:

      template // possible break (always / if too long / never)
      inline // possible break (always / if too long / never)
      LongTypeName // possible break (always / if too long / never)
      LongClassName::foo(LongTypeName a, AnotherLongTypeName b)
      {
      // …
      }

      • Anastasia Kazakova says:

        Thank you for the comment.

        Some of the existing options look like serving your suggestions: Editor | Code Style | C/C++
        – Wrapping and Braces tab | Function parameters settings
        – Wrapping and Braces tab | Templates settings

        Any other missing settings you can add to our issue tracker as feature requests. Please, describe there the expected behaviour of the option.
        https://youtrack.jetbrains.com/issues/CPP

  10. qqiangwu says:

    http://www.stroustrup.com/Programming/PPP-style-rev3.pdf

    This is the style recommended by Bjarne Stroustrup in his book Programming -- Principles and Practice Using C++ for new C++ programmers. Hopefully it will be supported in CLion. I’ve used it for several years.

  11. Ivan says:

    How to customize dictionary and menus to a foreign language ?
    Is there a guide ?
    Thanks

  12. R. K. says:

    Plugin for IDEA please! Even if it costs additionally!

    • Anastasia Kazakova says:

      What’s your use case for it? Simply having all in one place?

      • R. K. says:

        Indeed. Working with project that is using multiple languages is much easier with all-in-one solution. For example python or php application backed by native extension module.

      • Ivo Costa says:

        I already paid for an Intellij Utilmate license that costs twice as much as anything else, and I continue to pay for it every year. It was the Ruby plugin that already saved me from paying an additional Rubymine license or moving back to Eclipse for that kind of work.

        I don’t limit my self to a single technology and already in the past did integrations of C libraries with Java through JNA.

        From IntelliJ Ultimate page:
        “PHP, Python and Ruby.”

        Each of these already has a dedicated IDE by Jetbrains and still got support in IntelliJ one way or another.

        Maybe I don’t have good use case (JNA is an extreme case), but still as a IntelliJ Ultimate licence holder I’d like to know why would I not have access to a C/C++ plugin

        • Anastasia Kazakova says:

          Thank you for your comment. We do plan to integrate CLion as a plugin to IntelliJ IDEA, still we think that now we have quite a lot of tasks that have a higher priority for the team. Like language parsing fixes, performance, LLDB support and general debugging improvements, maybe Python, Makefiles or any other build system support, doxygen, etc.
          We are asking about use cases to know if there are any bilingual case except for Android (that we already know about). Just in case we are missing smth important.

          • Chris johnson says:

            The project I work on is mostly c, Cpp, some linux kernel driver development, make, plus some python, bash scripts, gtest, gmock, golang, a REST based Web ui etc. I don’t think that is atypical of a major embedded linux development. Would love to use intellij, from my experience of it from java server, Web app.
            I think your best bet would be to add it to intellij, plus my big corporation already buys Intellij licences. Right now I can’t do much with clion, especially with the linux kernel so it’s back to visit and eclipse.

          • Chris Krycho says:

            The Python and C/C++ development stack is extremely common in scientific computing; having a CLion-based plugin for IDEA would be extremely helpful for this. All of those combos are therefore important: CLion absolutely should support Python development, and PyCharm should be able to run the CLion plugin. This is especially important since the project files conflict with each other, making it difficult to have a CLion and IDEA or PyCharm project in the same location.

          • Edwin Cettinich says:

            I’m looking for one IDE which can handle multiple languages, mostly C++ and Python.

            Eclipse: too bad performance.
            Visual Studio: mainly fixed on the Windows system. No chance. We also support other platforms (Desktop-Linux, Embedded Linux) and compilers.
            NetBeans: last test was years ago. There is no official and professional Python support.
            PyCharm: very good in Python (in fact the best I know). Very poor in C++ (via plugin).

            You asked for Non-Android use cases with 2 and more languages? Here are two:

            One of our projects is a program with different processes in a client-server architecture. Client processes (C++) communicate with server processes (C++, Python) and vice versa. Communication is defined in IDL. Scripts are in Shellscript when we run on Linux and in VBScript when we run on Windows. Beside that XML and Json structures and makefiles are used.

            Another project consists of programs at different stages. The Output of one stage is the input on the next stage. In each stage we have a bunch of programs. The flow through the stages and which program is activated on each stage is very dynamic. All the programs are written in C++ and Python. Shellscript and Python is the glue for all these.

            I would highly appreciate one IDE being able to support multilingual projects.
            As Chris wrote it is obviously not possible to have two editors (CLion and PyCharm/IDEA) opened at the same time on the same project files.

            I’m planning to get some licenses now, but I’m really not sure which program I should use.

          • Anastasia Kazakova says:

            Thanks for such a detailed reply. Python plugin is planned for CLion: https://youtrack.jetbrains.com/issue/CPP-434. Unfortunately won’t come to CLion 1.2 this Fall, but we hope to get it quite soon on board.

  13. Anton says:

    Thank you for your job, you do the best IDE in this world.

    I’d like to see Qt Coding Style:
    https://wiki.qt.io/Qt_Coding_Style
    https://wiki.qt.io/Coding_Conventions

  14. Pingback: CLion 1.0.1 Update | JetBrains CLion Blog

  15. Yury says:

    1. I would like to ask you to think about making style identification “Keyword” more specific, because now it’s absolutely useless. Classes, class access types, data types, namespaces etc. etc., are all using same style which makes styling ugly and hardly readable.

    2. Again i would ask about nice and good Declaration info. Because now we had several not so helpful function – quick definition, quick documentation.
    Use of Definition and Declaration is obvious – it’s standard, but the quick versions are working not the best way. I described problem here https://youtrack.jetbrains.com/issue/CPP-3152#u=1429704419521

    3. Can’t get the logic of your indent styling. Are you using absolute indention parameters against the parent structure instead of using indention against the previous indention instance?

    I want a style like this:

    namespace Bar
    {
    class Foo
    {
    public:
    Foo();
    virtual ~Foo();
    };
    }
    if (isFoo)
    {
    Foo();
    }
    elseif
    {
    return 0;
    }

    But i can’t achieve it. I can’t move neither members of the class against access type without making global indention bigger(what i don’t want), neither i can’t move the content of “if” directives against the indented braces. Looks like your indention is pretty messed up.

    From what i can imagine it should contain one single parameter – Indention size. And a two lists – 1. The words and symbols that should be indented 2. Rules of exceptions what SHOULD NOT be indented – which would be the actual Settings.

    I would appreciate if you give advice how can i achieve the above mentioned style in case i haven’t understood the Indent settings right.

    Best regards,
    Yury.

    • Yury says:

      Sorry the formatting was lost after i sent it.

      namespace Bar
      {
      ….class Foo
      ….{
      ……..public:
      …………Foo();
      …………virtual ~Foo();
      ….};
      }
      if (isFoo)
      ….{
      ……..Foo();
      ….}
      elseif
      ….{
      ……..return 0;
      ….}

      • Anton Makeev says:

        1) Please follow https://youtrack.jetbrains.com/issue/CPP-417.
        But frankly speaking it’s not in our shot-list since we do not see the value of such highlighting (I’m not saying that there is none, though): in all our IDEs, the semantic highlighting is applied to the symbols (actual names of classes, namespaces etc), not to the keywords. But, we are open for the discussion and examples (in the issue).

        2) We are planning to support various documentation formats (like Doxygen), and your request fits nicely into it.

        3) Could you please file a bug report/request for the formatting with more examples? We discuss it there, since it’s more convenient form.

        • Yury says:

          Not sure if i understand you correctly.

          1. There’s no semantic highlighting in CLion or did i miss something – i guess not. Semantic highlighting is in KDevelop for example(i would suggest you at least to take a look at it) – what Clion does is called Syntax highlighting which is absolutely different things. And if proper and customizable code representing is not the main goal of your IDE than i don’t understand why people should use it at all. It’s basic features that pretty much standard for 5 years. You made a new IDE in 2015 with no Semantic highlighting and telling programmers that they don’t need separate styling of language structure? That’s weird. And i’m not the only one. https://youtrack.jetbrains.com/issue/CPP-417

          2. What i’m talking about is not a documentation system like Doxygen but area in the bottom which would have info on type/declaration file/and args of the functions, classes etc etc. Now you have spawning new window for each call of Quick definition with 1\3 of needed info. I would like a constant info without any spawning windows.

          3. Sure. https://youtrack.jetbrains.com/issue/CPP-3250

          Thank you for replies.

          Best regards,
          Yury.

          • Anastasia Kazakova says:

            Yury, talking about semantic highlighting, we are still undecided. Though a feature request exists in our tracker – https://youtrack.jetbrains.com/issue/CPP-778.

            Right now CLion highlights all context usages of a symbol when placing a caret on it, or you can highlight them in a more discoverable way with Highlight Usages in File action and then navigate to the next/prev usage by Find Next/Find Previous action.

  16. Milan Stastny says:

    I would like to see the Kernel code style
    https://www.kernel.org/doc/Documentation/CodingStyle

  17. Louis Thomas says:

    Name Styles:
    * UpperCamelCase
    * lowerCamelCase
    * UPPER_SNAKE_CASE
    * lower_snake_case
    * UPPERSMASHCASE
    * lowersmashcase

    • Anastasia Kazakova says:

      Could you provide more details – where do you want to use this – in completion, code generation?

  18. Steve Bush says:

    I would like to see better Cmake support. My workflow is build, test, install. When I use the Cmake generator for Visual Studio I get project for updating Cmake config, tests, and install based on my CmakeLists.txt. I would like to see Clion support the test and install scenarios better.

  19. Alejandro says:

    Hi, how about support for cuda, opencl,opengl and msbuild??

    • Anastasia Kazakova says:

      We have it in some future plans. Feel free to upvote to increase the priority:
      CUDA – https://youtrack.jetbrains.com/issue/CPP-866
      OpenCL – https://youtrack.jetbrains.com/issue/CPP-1070
      msbuild – https://youtrack.jetbrains.com/issue/CPP-819

      • Stephen Karasek says:

        Tried to log in and +1, but can’t. I’d love to buy your products, since you topped Komodo IDE in most metrics. However, since it’s easier to do Python/Django and C all-in-one with them, I’m afraid I’ll have to go with them. CUDA needs a myriad of add-ons with them, but with some effort it IS doable.

        If you had CUDA or OpenCL, it would be a major point in your favor. Komodo doesn’t exactly***, but it’s easier to do what I need to in a single IDE as opposed to having to use two (really three without CUDA or OpenCL support).

        • Anastasia Kazakova says:

          Do you have a YouTrack account? What error do you get while logging?

          By the way, the EAP of the upcoming v1.5 brings Python support to CLion: http://blog.jetbrains.com/clion/2016/01/clion-1-5-eap-python-attach-local/

          • Stephen Karasek says:

            Wow glad I checked this again; thanks for the link! (I do have a youtrack account, but login wasn’t working for some reason).

            No specific error, just I often seem to find myself after the first phase of a project trying to make the computation bits faster and re-usable. Putting both Python and C in a single environment makes this a no-brainer for non-parallel development.

            Simplicity is a good thing, so CUDA takes the cake for GPGPUs. And the ability to debug with support (manually with some integrated assistance, instead of extremely painstakingly manually) would be a huge help, certainly worth switching over dev environments for.

            I’ll give this one a shot- no reason not to now. CUDA support would make this something that the rest of my team would mass-migrate to, if included! In the meantime, we will have to keep using Eclipse (PTP) + PyDev for parallelization work…

          • Anastasia Kazakova says:

            Thanks for the feedback. Stay tuned!

          • Stephen Karasek says:

            (in case that wasn’t clear- NOT a fan of Eclipse, but it’s the only dev env that works in Linux with Nsight…)

  20. Alexey says:

    Use 1.0.1, found an annoying issue in code formatter:
    The code like:
    private:
    BYTE * m_pPool; // the base pool of the whole
    BYTE * m_pCursor; // write point in the pool
    BlobHeader_t * m_pCurrentWriteBlob; // start of the last blob…

    it always automatically reformat, replacing all the tabs to the spaces (between the declaration and the comment). Any settings about tab/space flavour influents only to the leading (indent) tabs, but the next ones will be replaced just always.

    • Alexey says:

  21. jeremy says:

    Another bilingual case: I write code in interleaved python, cython and C/C++ for performance reasons. Where I need intense performance, I use C or C++. Where I would prefer convenience and rapid iteration (or need to do heavy string processing), I use python. And I glue this all together with cython and CMake.

    Right now, I write all of the code in PyCharm for python and vim for C/C++. But I’d definitely swap to CLion if there was some integration between PyCharm and CLion.

  22. Cees de Groot says:

    With regards to the plugin – it seems that the whole licensing model just got overhauled, and now I dunnow what to to. There doesn’t seem to be a community edition for CLion (I only do hobby development in C/C++ – often AVR/Arduino by the way), so am I now going to pay for Ultimate and CLion only to find out in half a year there’s a free plugin (like the Ruby, Python plugins that are bundled with Ultimate)? Doesn’t make me willing to part with money at this point.

  23. Alex says:

    In my daily work we use both Java and C++ (different components, JNI) and it will be very usefull to have one IDE for both. Is there any plan to have CLion plugin for IDEA?

    • Anastasia Kazakova says:

      For JNI you can use Android Studio now. It includes C/C++ support based on CLion.
      CLion plugin for IntelliJ IDEA is planned, but not in the nearest or upcoming plans, since we have quite a lot of things with higher priority in the queue.

  24. Ovais Reza says:

    What I would like to see templates, to quickly setup projects. If I want to develop Kernel module, most of the stuff should be pretty standard and I should be able to start quickly with a template.

Leave a Reply

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