Привет, Хабр! Спешим поделиться радостной новостью – мы выпустили первый в этом году релиз нашей кросс-платформенной IDE для C и C++, CLion 2017.1!

image


Наши планы, как обычно, немного превосходят наши возможности и ресурсы. Но в этот релиз нам удалось успеть почти все из запланированного. Если вкратце:

  • Поддержка C++14 (всё кроме constexpr)
  • Начальная поддержка C++17 (мы начали с самой востребованной возможности – nested namespaces)
  • Возможность конвертировать тип переменной в auto
  • Во время отладки программы, при отсутствии файлов с исходным кодом можно переходить на код на дизассемблере (disassembly view)
  • Поддержка фреймворка для юнит-тестирования Catch
  • Значительное ускорение отклика редактора при печати кода (Zero Latency Typing)
  • И, наконец, экспериментальная поддержка компилятора Microsoft Visual C++!

И это еще не все! Читайте подробности ниже.

Кстати, попробовать все новые возможности можно на небольшом демо-проекте, который мы специально подготовили для этих целей.

C++14 и C++17


Уже совсем скоро стандарт C++17 будет официально принят и C++ сообщество примется активно обсуждать и строить планы на C++19/20. Поэтому в версии 2017.1 мы постарались полностью поддержать все текущие (и официально принятые) стандарты современного C++.

Сначала мы закончили с constexpr из C++11, а затем принялись за C++14, а именно поддержали следующие возможности:

  • auto return type,
  • generic lambdas,
  • variable templates, and
  • generalized lambda captures.

Поддержка в данном случае заключается в корректном парсинге и резолве соответствующих конструкций языка (как вы помните, парсер у CLion свой) и, как следствие, в корректной подсветке кода, навигации, рефакторингах, автодополнении и корректной работе анализатора кода.

Типичный пример – использование generalized lambda captures, которое раньше приводило к тому, что весь код лямбды некорректно подсвечивался как неиспользуемый. Теперь, как видите, все хорошо:

image

Еще один пример – это использование auto для возвращаемого типа. В предыдущих версиях CLion не мог корректно вывести тип переменной vec, а значит и предложить корректное автодополнение:

image

Таким образом, из непокрытых возможностей стандарта C++14 остался только constexpr. И уже начата работа в направлении C++17: поддержаны nested namespaces. Полный список поддерживаемых в CLion возможностей современных стандартов C++ можно найти по ссылке.

Make auto


С появлением современных стандартов в C++ произошло много значительных изменений. Код на современном C++ существенно отличается от кода на C++ образца 98-го или даже 2003 года. И чем активнее язык развивается, тем актуальнее встает вопрос преобразования кода “старого” в “новый”. А что как не IDE может помочь справиться с этой задачей? Рефакторинги и другие преобразования кода – это как раз то, что мы в JetBrains очень любим.

Работа в этом направлении только началась, и идей у нас много. А пока что мы добавили возможность конвертации типа переменной в auto:

image

Обратная замена тоже может быть реализована и даже есть в планах (CPP-8555).

PCH


Precompiled headers (PCH) – это общепринятый способ сэкономить на времени компиляции, если в проекте используются большие заголовочные файлы или просто какой-то набор таких файлов используется очень часто. Притом эти файлы меняются редко. В такой ситуации есть смысл скомпилировать их единожды и в дальнейшем просить компилятор переиспользовать имеющуюся информацию.

В такой ситуации IDE должна разобраться, какие PCH передаются при компиляции, найти их и прочитать символы из этих заголовочных файлов, которые могут понадобиться для основного кода проекта.

Теперь CLion так умеет. Относится это как к PCH, так и к заголовочным файлам, передаваемым через опцию компиляции -include. То есть соответствующие классы, функции, и т. п. из таких заголовочных файлов корректно понимаются:

image

Обратите внимание, что для GCC есть небольшие ограничения, связанные с техническими особенностями реализации.

Дизассемблирование в отладчике


Один из самых популярных запросов в нашем трекере – возможность показа ассемблерного кода при отладке. В версии 2017.1 мы реализовали две важные возможности, связанные с этим запросом:

  • Подсветка синтаксиса кода на Ассемблере в редакторе (работает только для диалекта AT&T) для файлов с расширением .s и .asm, или любых других, сконфигурированных в Settings | Editor | File Types | Assembly Language.
  • Показ кода на дизассемблере (disassembly view) во время отладки при переходе на вызов, для которого нет исходных текстов программы.

image

Работает disassembly view пока только для GDB. По коду на дизассемблере можно походить, чтобы лучше понять, что именно делает программа и, возможно, найти проблему, ради которой и запускался отладчик. Поставить точки останова в таком коде пока нельзя.

На будущее запланирована возможность показа кода на дизассемблере даже в том случае, когда исходные коды программы имеются (CPP-9091).

Catch


Для C++ существует огромное множество тестовых фреймворков: Google Test, CppUnit, CppTest, Boost, QtTest и другие. CLion поддерживает Google Test уже довольно давно. А в версии 2017.1 появилась поддержка Catch. Почему именно Catch?

  • Catch очень легко начать использовать. Чтобы подключить Catch к своему проекту, достаточно скачать и добавить в проект один единственный заголовочный файл. Удобно, не правда ли?
  • Тест-кейсы в Catch достаточно гибкие и удобные.
  • Автор фреймворка Catch, Phil Nash, с осени прошлого года работает с нами в компании JetBrains в роли девелопер-адвоката C++ продуктов компании. Так что параллельно с поддержкой Catch в CLion дорабатывался и сам фреймворк. Что, конечно, существенно помогло разработке.

Основное в поддержке – специальное окно с выводом результатов тестов (test runner). Если для запуска используется специальная Run/Debug конфигурация – Catch – то вывод результатов будет осуществляться туда:

image

Помимо удобного представления результатов, в этом окне можно:

  • перезапустить все тесты или только упавшие;
  • сортировать тесты по имени или по длительности прохождения;
  • посмотреть/перейти на код конкретного теста;
  • посмотреть вывод каждого конкретного теста и сообщения об ошибках;
  • перенести результаты текущего запуска тестов в файл;
  • посмотреть предыдущие запуски тестов по истории, которая сохраняется автоматически.

Кстати, в конфигурациях работает автодополнение для тегов, которые используются в тестах. Это помогает быстрее настроить набор тестов, которые надо запускать в рамках конфигурации.

Подробнее об особенностях и преимуществах Catch и его интеграции в CLion можно почитать в нашем англоязычном блоге.

Компилятор Microsoft Visual C++


Вероятно, одна из самых интересных возможностей этой версии. По-крайней мере, для пользователей на Windows. Дело в том, что раньше CLion работал только с GCC/Clang и на Windows приходилось устанавливать MinGW, MinGW-w64 или Cygwin. А они, в свою очередь, не всегда легко и понятно конфигурируются при установке, да и имеют ряд неудобств в целом. Так что пользователи на Windows вполне резонно просили нас поддержать компилятор Microsoft Visual C++. Что мы и сделали в 2017.1, правда пока в экспериментальном режиме.

Чтобы попробовать, надо включить соответствующую опцию в Registry:

  • Откройте диалог Find Action (Shift+Ctrl+A на Linux/Windows, ??A на macOS)
  • Введите Registry
  • Выберите и откройте редактор Registry
  • Начните вводить clion.enable.msvc – CLion найдет подходящую опцию в списке
  • Включайте и пользуйтесь MSVC!

image

Теперь в настройках тулчейнов у вас появится возможность выбрать компилятор Microsoft Visual C++:

image

Поддерживаемые версии Visual Studio – 2013, 2015, 2017 – находятся и определяются автоматически.

Тут стоит оговориться, что работает MSVC по-прежнему через CMake (в качестве генератора в котором используется NMake вместе обычных Makefiles). То есть msbuild не поддержан. CLion предоставляет настройки архитектуры, платформы и версии в Build, Execution, Deployment | CMake:

image

Из важных ограничений стоит еще отметить: отсутствие отладчика и отсутствие поддержки специфических расширений языка от Microsoft. В остальном, мы будем рады, если те, кто был заинтересован в поддержке компилятора Microsoft Visual C++, попробуют его и поделятся с нами своими отзывами.

Zero-latency typing


Про zero-latency typing рассказывать можно довольно долго. Но мы лучше предложим читателям ознакомится с детальным исследованием этого вопроса от нашего коллеги.

В версии 2017.1 по умолчанию включили соответствующий режим, который до этого (в течение полугода) был в тестовом режиме. Само же решение позволяет уменьшить количество перерисовок редактора, тем самым уменьшая задержку между непосредственно печатью кода и его отрисовкой на экране.

Плагины


Версия CLion 2017.1 включает в себя полезные обновления таких плагинов как Swift, Go, Settings Repository и не только.

Если говорить про Swift, то на изменения стоит обратить внимание тем, кто использует или планирует использовать CLion в качестве Swift IDE на Linux. Благодаря команде AppCode в плагине появились новые возможности:

  • шаблон для создания нового Swift проекта, с предварительно заполненным файлом CMake и Package.swift;
  • ошибки, предупреждения и возможные исправления от анализатора кода на основе SourceKit;
  • возможность генерации типа переменной уже после ее использования.

image

Изменения Go плагина были направлены на приведение его в соответствие с Gogland, отдельно стоящей IDE на базе платформы IntelliJ для этого языка.

А плагин для хранения настроек IDE в репозитории, наконец, был “забандлен” в саму IDE.

И многое другое


В версии 2017.1 произошло еще немало других изменений. Так, например, Find in Path (текстовый поиск по проекту или любому выбранному скоупу) доступен в виде popup-окна с удобным предпросмотром результата:

image

А в окне логов от системы контроля версий (для Git и Mercurial) появилась возможность использовать регулярные выражения и выбирать учитывать ли или наоборот игнорировать регистр.

Вот здесь небольшая демонстрация новых возможностей CLion 2017.1:


Если вам стало интересно, качайте 30-дневную бесплатную пробную версию, а в разделе цен можно узнать о стоимости подписки.

Следите также за статьями и обновлениями в нашем англоязычном блоге. Мы будем рады ответить на любые ваши вопросы в комментариях.

Ваша команда JetBrains CLion
The Drive to Develop
Поделиться с друзьями
-->

Комментарии (61)


  1. Daffodil
    31.03.2017 20:26
    +7

    Так а отладчик под Windows вообще планируется? Просто я не вижу особого смысла в IDE без возможности отладки.

    В общем пока единственным способом кросплатформенной разработки под Windows остается Visual Studio, благо поддежка MSVC в CMake есть уже давно.


    1. Antervis
      31.03.2017 21:01
      +1

      В общем пока единственным способом кросплатформенной разработки под Windows остается Visual Studio

      а чем плох QtCreator?


      1. Daffodil
        31.03.2017 21:24
        +1

        QtCreator не плох. В нём просто меньше фичей чем в Clion или VisualStudio с Visual Assist/ Re-sharper. Ну и медленно работает на больших проектах. А к хорошему быстро привыкаешь и назад на QtCreator уже не хочется.


    1. stigger
      31.03.2017 22:10
      +1

      Отладка на Windows конечно же есть.


    1. anastasiak2512
      31.03.2017 23:07

      Отладчик на Windows есть, как уже заметили. Но не в случае MSVC тулчейна. Мы смотрим сейчас, какие есть варианты в этом случае. WinGDB как один из вариантов. Но вообще пока понимания нет четкого.

      Вообще довольно много было запросов от пользователей именно на компилятор. Но согласна, что отладчик в случае такого тулчейна тоже важен. Думаем.


      1. Daffodil
        01.04.2017 00:16

        Ну вот в том же QtCreator сделана интеграция с CDB: https://github.com/qtproject/qt-creator/tree/master/src/plugins/debugger/cdb

        Вообще возможность собрать что-то нажав кнопку из IDE не так важна. IDE это прежде всего средство работы с кодом и gui для дебагера.


        1. anastasiak2512
          01.04.2017 22:19
          +1

          Последнее верно не для всех, как мы видим по запросам от пользователей.
          К тому же, подсветка кода (читай, парсинг) может зависеть от используемого компилятора. Хочется ведь, чтобы IDE понимала и подсвечивала код так же, как это потом при компиляции будет делать компилятор.


  1. joedm
    31.03.2017 21:40

    Осталось сделать Memory View.


    1. anastasiak2512
      31.03.2017 23:09

      Вот про это речь?


      1. joedm
        01.04.2017 00:18
        +1

        Да, про это. Очень нужная вещь.
        Только сделайте, пожалуйста, возможность иметь несколько окон Memory View, а не одно. Иногда бывает нужно просматривать память по нескольким указателям одновременно.


        1. anastasiak2512
          01.04.2017 22:19

          Спасибо, учтём.


  1. luckychess
    31.03.2017 23:09

    Очень порадовало обновление, раньше CLion был на нашем проекте практически непригодным к использованию из-за всяких C++14 фишек, в некоторых файлах чуть ли не каждая третья строка была подчёркнута красным. Сейчас же буквально пара мест таких осталась.
    Кстати, мне показалось, что поменялся шрифт по умолчанию, мне старый больше нравился. Ну да это мелочи.


    1. anastasiak2512
      31.03.2017 23:09

      А какая ОС? не линукс случаем?


      1. luckychess
        01.04.2017 09:51

        Да, он самый.


      1. dimack
        01.04.2017 22:19

        Тоже новый шрифт не нравится, очень тонкий стал, раньше был гораздо лучше, у меня ubuntu.


        1. anastasiak2512
          01.04.2017 22:23

          Там на линуксе бага закралась. Как раз в JDK нашей кастомной. Будет фикс в апдейте первом. А пока есть workaround


  1. exchg
    31.03.2017 23:10

    а зачем Clion генерирует codeblocks project file ?


    1. anastasiak2512
      31.03.2017 23:11

      Мы вызываем CMake с выводом в формате CodeBlocks, который в свою очередь разбираем/парсим, чтобы зачитать информацию о проекте. Этот формат вывода в CMake наиболее информативен для нас.


      1. Daffodil
        01.04.2017 00:19

        А на CMake server-mode не смотрели?


        1. anastasiak2512
          01.04.2017 22:24

          Немного смотрели. Более детально планируем в скором времени поглядеть


  1. ShaltaiBoltai
    31.03.2017 23:11
    -3

    Поддержка MSVC — это замечательно. Особенно, если на Linux :) :) :) :) Ибо на Windows тяжеленная IDE, работающая на Java (я достаточно работал на NetBeans, чтобы сполна насладиться быстродействием подобных IDE), особо не нужна — MSVC вполне неплохо работает в составе Visual Studio. А, учитывая наличие Community Edition, как-то вообще пропадает желание даже пробовать IDE на Java за $89 каждый год.


    1. joedm
      01.04.2017 00:28

      А вот соглашусь с последним предложением. Почему нельзя купить приложение раз и навсегда? Пусть оно даже не получает других обновлений кроме багфиксов. Допустим, мне не нужны С++17 фичи, я пишу на чистом С и мне будет достаточно того, что уже есть? Пусть оно стоит дороже, чем по подписке, но чтобы мне не мозолил глаза счётчик «до полночи осталось две минуты».


      1. fogone
        01.04.2017 09:21
        +4

        Так ведь можно же, текущая лицензия так и работает, только получаешь то приложение за которые заплатил, без обновлений.


      1. anastasiak2512
        01.04.2017 22:27

        Можно, так и работают наши лицензии. Называется это perpetual fallback. Если заплатили за год или год платите непрерывно, то такое получаете. То есть бессрочную лицензию на ту версию, с которой начался год и баг-фикс апдейты на неё. Без обновлений на следующие версии.


        1. joedm
          02.04.2017 22:24

          anastasiak2512, fogone спасибо за разъяснения.


  1. Tim06ka
    31.03.2017 23:12

    Пожалуйста, сделайте отдельные рабочие папки для разных IDE (.idea для идеи, .clion для силиона и так далее).
    Постоянно приходится придумывать костыли или открывать проект заново с удалением папки .idea (у нас в команде разработка java — jni — c++). И подскажите, есть ли баг на эту тему, а то не смог найти?


    1. anastasiak2512
      31.03.2017 23:14

      Мне кажется, что тикета такого не было. Но обсуждения этой проблемы ведутся. Пока нет простого решения, как разделить сеттинги, но мы думаем в этом направлении.


  1. respect1
    31.03.2017 23:14

    Круто! Давно не хватало такой фичи как Find in path popup window. Также очень понравилось Catch integration and PCH.

    Планируете ли вы такую же поддержку Boost.Test как и с Google Test и Catch?


    1. anastasiak2512
      31.03.2017 23:17

      Спасибо на добром слове. Рады, что Вам понравилось.

      Boost тесты есть в планах, но видимо не ближайших (их пока не активно просили).


  1. DistortNeo
    31.03.2017 23:18

    Раз появилась поддержка MSVC, то интересно, появится ли возможность одновременной работы с C# и C++ в одной IDE (Rider + CLion в одном флаконе)?


    1. anastasiak2512
      31.03.2017 23:18

      Нет, пока нет таких планов.


  1. DaylightIsBurning
    01.04.2017 03:55
    +1

    возможность конвертации типа переменной в auto
    в этом как раз особой потребности нет, быстрее «auto» напечатать, а вот в обратную сторону…


    1. anastasiak2512
      01.04.2017 22:28

      Это если пишите код с нуля, а если у вас «старый» код уже есть? Тогда может быть полезно.


      1. DaylightIsBurning
        02.04.2017 12:40

        не совсем понимаю, что вы имеете в виду? Если у меня уже есть старый код, проще нажать ctrl+Backspace, auto, чем кликать «replace with auto».


        1. 0xd34df00d
          02.04.2017 21:51

          Ctrl+Backspace сотрет предыдущий токен, коих в хитровывернутом типе может быть много.


  1. Overlordff
    01.04.2017 11:25
    -1

    Здравствуйте, планируется ли добавление нативной системы сборки?


    1. anastasiak2512
      01.04.2017 22:29
      +1

      Поясните, пожалуйста, что имеете в виду под нативной системой сборки?


      1. Overlordff
        04.04.2017 01:59

        Сборка полностью внутри IDE, без необходимости использовать CMake или другую стороннюю систему.


        1. anastasiak2512
          04.04.2017 02:03

          В ближайшее время — скорее нет. Соб-но, мы рассматриваем две альтернативы на ближайшее время в контексте билд систем: какая-то другая (Makefiles?) или «никакая» (то есть проект из директории, типа как в студии json-проекты). Но в любом случае пока:
          * есть пробелы в СMake поддержке, которые надо доделать, прежде чем делать что-то еще
          * ресурсы команды ограничены, а есть еще другие важные задачи


          1. DarkEld3r
            04.04.2017 10:56

            или «никакая» (то есть проект из директории, типа как в студии json-проекты)

            Не совсем понял, можно разжевать как это работать будет?


            1. anastasiak2512
              04.04.2017 12:27
              +1

              Это возможность открывать проект из директории с сорсами, не закладываясь ни на какую билд-систему.


              1. DarkEld3r
                04.04.2017 14:08

                То есть, просто "для просмотра", без возможно собрать проект, так? А какая-нибудь навигация при этом доступна будет?


                1. anastasiak2512
                  04.04.2017 15:02
                  +1

                  Нет, рассматривается именно возможность со сборкой и пр. Так например в VS есть поддержка json формата описания проекта. Это примерно оно. Описывается header search пути и пр, чтобы IDE могла понять.


                  1. DarkEld3r
                    04.04.2017 15:04

                    Тогда я не понимаю в чём тут разница с "нативной системой сборки", как хотел erlordff, ну да ладно. (:


                    1. anastasiak2512
                      04.04.2017 15:07

                      Так я и не говорю, что это не похоже на то, что хочется. Я как раз говорю, что рассматривают ся на первую реализацию два варианта — такое вот или Makefiles.


  1. Alesh
    01.04.2017 13:30

    Круто, если бы не прожорливость и некоторые забавные нюансы, то цены бы не было этой IDE.
    Приведу пример «забавного нюанса», что бы не быть голословным) В CLion как вы наверно знаете добавлен плагин поддержки разработки в Python. Вау, воскликнут разработчики совмещающие эти два языка в проектах! Но если они эти два языка совмещают с помощью cython — их ждет большой облом, ибо даже нет подсветки синтаксиса .pyx, хотя в PyCharm с этим все хорошо.


    1. anastasiak2512
      01.04.2017 22:32
      +1

      Cython пока не успели (запрос в трекере).


  1. raidhon
    01.04.2017 14:32

    Когда вы уже плагин к IDEA завезете, третий год пошел с EAP?
    Говорили сделаем, но не с первой версии, уже версий сменилось ого го го.
    А то так и прыгаешь с IDE на IDE.
    Хоть для android добавьте, в Android Studio уже давно поддержка, а в IDEA и не пахнет.


    1. anastasiak2512
      01.04.2017 22:42
      -1

      Это сложный вопрос и задача не самая очевидная. Попытаюсь пояснить:

      • Исторически CLion появился из AppCode, который делался как отдельная IDE по своим причинам. Поэтому сейчас, чтобы сделать плагин, нужно чуть больше усилий.
      • Нам пока не очень понятно, что именно в плагин переносить — только поддержку языка или CMake тоже. Отрезать языковую поддержку от CMake сейчас не так просто. Это будет делаться, когда начнём работать над альтернативной системой сборки помимо CMake.
      • Не очень понятны случаи использования кроме Андройд разработки, про которую ниже.
      • Ну и про Android Studio: там C++ поддержка из CLion, но скрученная с Андройд разработкой. Нам в IDEA получается это надо у себя реализовывать. А зачем, если есть AS и она на базе IntelliJ платформы и так.


      Ну то есть, мы планируем, но это точно не первоочередная задача. И там ещё много вопросов.


      1. raidhon
        01.04.2017 23:11

        Про Android Studio я в курсе что использованы наработки Clion.

        По поводу что переносить в плагин, все переносите, весь функционал Cmake и поддержку всех плагинов от Clion.

        Зачем это делать.
        Да все просто, вам нужно руководствоваться тем что будут пользоваться IDEA, а не Android Studio.
        Больше продаж лучше бизнесу.
        Сейчас я использую IDEA как главную IDE так как к ней есть плагины для Python, Ruby и node.js.
        Android Studio как все догадались для android и Clion для плюсов.
        Но честно меня уже задолбало прыгать из IDE в IDE каждую настраивать.

        Меня бы очень устроило( думаю и не меня только, в моей компании программисты будут в восторге ) чтобы IDEA поддерживала оставшиеся языки из других IDE C++ и C#.
        Хотя бы плюсы добавьте очень просим!!!

        Пусть будет не 49.90$, а 60$ зато сэкономите мне время и нервы.
        Нужен комбайн который умеет все или почти все.


        1. anastasiak2512
          02.04.2017 02:12

          А у вас Python, Ruby, Node.js и C++ на одном проекте? Или это все же разные проекты?


          1. raidhon
            02.04.2017 14:21

            И да и нет.
            Практически везде применяется микросервисная архитектура и программисты их пишут кто на чем хочет и умеет.
            Поэтому отделить где тут один проект, а где другой сложно, очень много пересечений.
            Ещё есть микросерсисы на Go, Scala и даже на Rust недавно сделали и ко всему этому куча php сайтов.
            Часто меняешь задачи, сегодня ты пишешь на Go, а завтра у тебя задача по Node.js.
            В основной массе набраны Full Stack программисты удаленщики, часто со знанием нескольких языков и платформ.

            Вот такие у нас пироги.


            1. anastasiak2512
              03.04.2017 02:21

              Интересно, спасибо.


  1. borisko
    02.04.2017 14:41

    А появилась ли возможность удалённой компиляции/отладки?


    1. anastasiak2512
      03.04.2017 02:22

      Удаленная отладка в случае использования GDB/gdb server есть уже пару релизов как. Удаленной компиляции пока нет.


  1. Rimma2192
    04.04.2017 01:44
    +1

    Немного пожалуюсь, если позволите.
    Очень часто виснет намертво в сложном коде. При написании кода на данном участке завис аж 4 раза.

    template <typename... Output, typename... Input, std::size_t... I>
    constexpr auto apply_cast_impl(std::tuple<Input...> t, std::index_sequence<I...>)
    {
        return std::make_tuple(boost::lexical_cast< typename std::tuple_element<I, std::tuple<Output...> >::type >(get<I>(t))...);
    }
    
    template <typename... Output, typename... Input>
    constexpr auto apply_cast(std::tuple<Input...> t)
    {
        return apply_cast_impl<Output...>(t, std::make_index_sequence<sizeof...(Output)>{});
    }
    


    Частенько надолго подвисает при попытке вытащить возможные входные параметры для функции. Я не ругаю, что он не может дать адекватную подсказку, ибо код люто шаблонизирован, однако хотелось бы делать такие вещи в фоновом потоке, чтобы не мешать работе.

    Очень жду поддержку С++17, особенно structured bindings, так как временные переменные, вытащенные этим образом затем не видны во всё контексте функции, что выражается в подчёркивании всего кода функции. Остальное можно перетерпеть, так как подчёркивает только саму непонятную конструкцию)


    1. anastasiak2512
      04.04.2017 01:59

      Спасибо за подробный и интересный фидбек!

      Посмотрела на пример — у меня не повисло вроде. Пробовала на макоси, CLion-у у меня выделено 4Гб памяти (по дефолту — 2Гб). Завела задачку поизучать. Но было бы круто, если Вы бы смогли последить за памятью. File | Settings | Appearance & Behavior | Appearance | Show memory indicator. Ну и попробовать увеличить память, если она практически вся по индикатору используется.


      1. Rimma2192
        04.04.2017 10:25

        8 Гб выделено, когда clion намертво зависал память особо не менялась, в среднем ~1.5 Gb.
        Стоит всё на ubuntu 16.04.
        Кстати, когда стояла preview версия, постоянно шли ошибки по stack overflow при построении или при разборе ast, видимо нужно переписывать рекурсивные алгоритмы в тех местах, где дерево может очень большое


        1. anastasiak2512
          04.04.2017 12:17

          А можно вас попросить в тикет thread dumps & логи положить. Если был фриз, IDE автоматически thread dumps генерирует. Лежат в Help | Show Logs


          1. Rimma2192
            04.04.2017 12:52

            Посмотрела, 71 папка threadDumps-freeze. Вам любой подойдёт? Просто уже не вспомню по дате, какой относился к вышеприведённому коду

            Заголовок спойлера
            image


            1. anastasiak2512
              04.04.2017 13:01

              Если проблема недавно случилась, то тогда можно какие-то из последних приложить.