CLion 2023.2 reimagines PlatformIO integration, improves support for vcpkg, includes the AI Assistant feature, weaving it naturally into some of the core IDE user workflows, and improves the experience of low-level, remote, and embedded debugging.
CLion 2023.2 includes the AI Assistant feature, weaving it naturally into some of the core IDE user workflows. In C and C++, it explains the selected code, suggests how to better refactor that code fragment, or finds potential problems with it. It also generates commit messages and explains CMake errors.
Low-level debugging is easier with CLion 2023.2, which brings the ability to inspect the registers of the current frame. You can also see register values inlined right in the disassembly view. A major update to the Attach to Process dialog enables attaching to remote and WSL processes.
PlatformIO is an open-source platform that helps embedded developers with their projects. CLion 2023.2 integrates natively with the platform. The IDE works directly with the platformio.ini file, tracking changes in it and updating the project information accordingly.
vcpkg is one of the most widely adopted package managers in C++. When working with vcpkg, there are two approaches – Classic mode and Manifest mode. CLion 2023.2 supports both. You can clearly distinguish them in the CLion UI and switch easily to the Manifest mode using a dedicated button.
The new 2023.2 versions of IntelliJ-based IDEs and .NET tools include a major new feature: AI Assistant. It’s still in the early stages of development, but you can already try our approach of weaving AI assistance into the core IDE user workflows and integrating deep AI features with code understanding. Learn more in our webhelp.
AI Assistant is not currently bundled with stable releases of JetBrains IDEs and can be installed as a separate plugin. For the time being, there is a waiting list for access to the AI Assistant feature.
AI Assistant prefers programming topics and benefits from project-specific context. Iterate in the new dedicated tool window, and when you’re happy with the result, use Insert Snippet at Caret to put the AI-generated code in the editor – or just copy it over manually.
Select a specific code fragment in the editor and invoke an action from the AI Actions... context menu.
AI Assistant can help you:
Let AI Assistant help you describe the changes you made. Clicking the Generate Commit Message with AI Assistant button in the commit message dialog will send the diffs of your changes to the LLM, and it will generate a commit message describing your changes.
When CMake execution fails on your project, click Explain with AI in the CMake tool window to get a better understanding of what’s gone wrong and how to fix it.
The Attach to Process dialog allows users to debug processes launched outside of CLion – locally or remotely – but also benefit from the IDE’s debugger integration.
From v2023.2 you can:
Low-level debugging is easier when you have the ability to inspect the registers of the current frame. CLion now shows register values in the Variables tab of the debugger tool window.
CLion now supports ARM assembly languages, which means you’ll see code highlighting for ARM assemblers in the disassembly view.
When debugging disassembly code, CLion now shows register values inlined right in the disassembly view.
Other debugger improvements:
PlatformIO is an open-source platform that helps embedded developers with their projects. In CLion 2023.2, the intermediate CMake level was removed from the integration with PlatformIO. The IDE now works directly with the platformio.ini file, tracking changes in it and updating the project information accordingly.
Learn how to install the PlatformIO plugin and create a new project or open an existing one with it in our webhelp.
Some pio
commands
can now be invoked directly from the IDE (Tools | PlatformIO) – no need to switch
to the terminal. This includes project reloading, running static code analysis on the
project, invoking the device monitor, and more.
The PlatformIO tool window gives quick access to the most used commands and project actions.
Other improvements:
To make sure CLion can debug with the Segger J-Link GDB Server correctly, it now handles
the SIGTRAP
signal in addition to the usual SIGINT
and
SIGSTOP
.
To help you manage project dependencies and external libraries, CLion integrates with vcpkg, a package manager for C/C++. In v2023.2, the integration got a major update, extending the number of scenarios supported.
When working with vcpkg, there are two approaches – Classic mode and Manifest mode. You can now clearly distinguish them in the CLion UI and switch easily to the Manifest mode using a dedicated button.
To make vcpkg’s Classic mode more convenient, we added a Console tab to the vcpkg tool window to show all commands and output.
CLion 2023.2 improves the new C/C++ file creation dialog in cases when there is no CMake target to add the new file to. The new Add new target... action creates a new target and adds it to the selected CMakeLists.txt file. After adding a target, you can then add new files to it.
CLion 2023.2 adds highlighting and completion for new parameters from CMake 3.25 and for the new block command used to execute a group of commands in a requested scope. In CLion, the new command is now highlighted, formatted, folded, and documented correctly.
CLion 2023.2 comes with CMake 3.26 bundled.
The Parameter Info popup shows signature variants as you type and is now available for CMake commands. It helps you figure out which parameter to enter next, especially with commands that have multiple variants.
If your project contains a Docker file with a Linux-based environment and you want to develop your application in it from a Windows machine, you can set this up in CLion using WSL and Docker.
Terminal emulation in the output console is now enabled or disabled separately for each configuration. It’s disabled by default, and the setting that controls it has been moved from Advanced Settings to the Run Configuration section.
On Windows, it now works for MSVC LLDB-based debugging with both regular and administrative privileges.
For v2023.2, we’ve refined the user experience with the Light theme by introducing the alternate Light with Light Header option, featuring matching light colors for window headers, tooltips, and notification balloons.
To make managing multiple run configurations easier, we’ve implemented the option to pin preferred configurations in the Run widget.
When working on macOS in full screen mode using the new UI, the window controls are now displayed right in the main toolbar – not in the floating bar as before.
For the convenience of Linux users, the native header of the operating system has been removed in the new UI, resulting in a cleaner interface. By default, you will now see the custom IDE header, which offers a range of customization options to tailor your workspace.
CLion introduces colored headers to simplify navigation between several open projects. You can now assign a unique color and icon to each of your projects, making it easier to distinguish between them in your workspace.
We’ve expanded the customization options for the new UI’s main toolbar. You can now use a dropdown menu to quickly choose actions that you want to add to the toolbar. To do so, right-click on any widget, select Add to Main Toolbar, and explore the available options.
CLion 2023.1 brings a solution for package management, gets your debugging experience to a new level, helps with QML coding, and includes a host of improvements for the new UI, which has been overhauled based on the valuable feedback we’ve received from our users.
CLion debugger integration got a major update bringing you powerful debugging abilities that include:
vcpkg is a package manager that’s growing in popularity among C++ developers. CLion now integrates with it, assisting with installing and updating vcpkg and its packages and browsing installed and available packages in the dedicated tool window.
CLion helps with the missing dependencies by suggesting quick-fixes when you:
#include
for the header file from a package that is not yet installed.
To speed up the Find Usages action and make it produce more accurate results in C++ code, a brand-new Clangd indexer was introduced in CLion. Enable it in Settings/Preferences | Advanced Settings | Clangd | Use Clangd-based indexer.
Note that the indexer is still in its early stage of development and is considered experimental. Check out the online help for the list of known issues and limitations.
The new UI has less visual clutter and shows the starting points for powerful features more concisely. In v2023.1, we’ve fine-tuned the user experience of the new UI by redesigning the Run widget, adding an option to show hidden tabs and an option to split tool windows vertically, bringing a new Compact Mode for smaller screens, and other changes.
CLion debugger allows you to step into and debug the disassembled code in a dedicated view. Now even when the source code is available.
In the context menu in the frames view, there is now a new action that opens a regular disassembly view for the selected frame. The view opens side-by-side with the source code and highlights the execution line in both.
Read about known issues and limitations.
CLion provides a way to attach the debugger to local processes started outside the IDE. The updated Attach to Process... action’s dialog now makes finding processes and attaching to them even easier and faster.
Display all available processes as a list or a tree in a new table view, check out the name of the user who launched the process, the debuggers available for this process, and the command used to launch the process, and select a debugger for toolchains that support multiple debuggers. Find out more.
When debugging a multithreaded application, step through the selected thread with all other threads suspended. To achieve that, use the Freeze/Unfreeze actions in the context menu in the thread view of the debugger or in the Run | Debugging Actions menu.
Memory View provided by CLion got a massive update, with many issues fixed and the overall user experience enhanced.
CLion now highlights all changed bytes in the memory view during debugging. Also, when scrolling through the memory view, CLion now automatically loads the data.
The number of columns in the Memory View (i.e., the number of bytes per line) is configurable now. Click on the settings icon in the view to change it.
CLion 2023.1 adds an action to help you create a new C++ Module Interface Unit in your project.
In the dialog that opens, enter the module name and type (extension), and specify whether you want CLion to add the newly created module to the existing CMake target. CLion will create a new module file using the file template from Settings/Preferences | Editor | File and Code Templates.
The Change Signature and Extract Function refactorings now support making
a function const
, constexpr
, or noexcept
.
The Extract Constant refactoring now suggests declaring a new constant with
the constexpr
and auto specifiers.
CLion 2023.1 comes with an updated Clang-Tidy checks options dialog:
If you are using Qt Modeling Language (QML) in your code, you will now benefit from the QML syntax support in CLion. This includes:
QML syntax support in CLion works for both Qt5 and Qt6. CLion uses qmlformat to format QML code by default.
Qt and QML paths, qmlformat as a formatting tool, and QML language server can be configured in Settings/Preferences | Languages & Frameworks | QML.
The Call Tree tab in the profiling results now allows you to collapse any frames you’re not interested in. For example, you can hide library classes or classes from specific frameworks to help yourself focus on the application code.
You can now filter files in the Coverage view to focus on recently updated files when testing. By default, you’ll see a list of files with uncommitted changes.
CLion now emulates the terminal in the output console. This behavior is enabled by default in Settings/Preferences | Advanced Settings | Run/Debug | Emulate terminal in the output console and helps you work with text-based user interfaces (TUI), for example, curses/ncurses applications.
CLion 2023.1 supports CMake presets up to version 5 and bundles CMake v3.25.
New color settings have been added for CMake – one for scripts’ keywords and one for CMake arguments’ keywords.
The CMake reload notification is now floating. It takes less editor space while still being noticeable.
Visit this page to learn more about the new UI.
To improve the user experience with CLion’s new UI on smaller screens, we’ve introduced Compact Mode, which provides a more consolidated look and feel of the IDE thanks to scaled-down spacings and elements.
We’ve refined the IDE’s look and feel when the new UI is enabled. The top toolbar is no longer visible in Zen and Distraction Free modes.
CLion 2023.1 features a new Dark theme activated by default when the user enables the new UI.
The Run widget in the main window header has been redesigned so that its appearance is unobtrusive and easier on the eyes.
Users of the new UI can now see the full list of open editor tabs. It’s accessible via the Show Hidden Tabs selector located at the right-end of the tabs row.
The new UI now offers an option to vertically split the tool window area and conveniently arrange these windows, just like in the old UI.
You can now zoom into and out of CLion entirely, increasing or decreasing the size of all UI elements simultaneously. Select View | Appearance and adjust the IDE’s scaling. You can also assign custom shortcuts for calling these actions in Settings/Preferences | Keymap | Main Menu | View | Appearance.
With CLion 2023.1, you can save and manage several tool window layouts and switch between them when needed. With the new Window | Layouts menu, you can save the current layout as a new one, update the already saved layout, or activate a previously saved layout.
A new layout option allows you to unify the width of the side tool windows or retain the ability to freely adjust their sizes as you customize your layout. The new Remember size for each tool window checkbox is available in Settings/Preferences | Appearance | Appearance & Behavior | Tool Windows.
You can now predefine the behavior of Actions on Save for new projects. For this, go to File | New Projects Setup | Preferences For New Projects | Tools | Actions on Save and select which actions you want to be triggered when saving changes in your future projects.
Where would you like to paste a line that was copied or cut without selection? In CLion, there is now a special setting that allows you to control the placement of the pasted content. In Settings/Preferences | Advanced Settings, find the Editor section and select the desired behavior for the Paste action from the drop-down list.
CLion 2023.1 features a new Selection checkbox in Settings/Preferences | Editor | General | Appearance | Show Whitespaces that allows you to configure this setting so that the IDE shows whitespaces as small dots only when you select code.
To make tracking changes to files more convenient, we’ve added color hints to the Structure tool window.
The names of modified objects will now become blue, and the names of the newly added objects will appear in the tool window highlighted in green.
CLion 2023.1 provides auto-completion in the Create New Branch popup. Once you start typing a name for your new branch, the IDE will suggest relevant prefixes based on the names of existing local branches.
In the Branches popup, branches are now grouped and stored in expandable lists for easier navigation.
We’ve fine-tuned the process of reviewing code inside the IDE by reworking the Pull Request tool window. It now features a dedicated tab for each pull request you open. The tab instantly displays the list of changed files but now provides less information than before, allowing you to better focus on the current task. There is also a dedicated button to easily execute the action that’s considered the most important given the pull request’s current state.
A new intention action allows you to correct the formatting of tables in Markdown files. You can access the quick-fix via the Context actions shortcut (Alt+Enter) or by pressing the yellow bulb icon and selecting Reformat table from the list that appears.
The Fill Paragraph editor action is now supported for Markdown files, allowing you to break long texts into several lines of even length. To do this, set the caret inside the paragraph you want to edit and call the action from the Edit menu or search for the Fill Paragraph command using Find Action.
As a part of continuous improving macro support, the IntelliJ Rust plugin shows inlay type hints in function-like and attribute macro calls now. Besides inlay hints, the plugin started highlighting errors inside attribute macro calls.
The new version of the plugin provides a way to exclude some specific items from
auto-import. The most annoying cases, like methods from Borrow
and
BorrowMut
traits from stdlib
, are already excluded by
this mechanism by default.
Starting from this release, the plugin shows content behind any struct reference and pointer during debugging, as well as the content of raw slice pointers.
CLion 2022.3 provides better user experience across the board, from projects with only a couple C/C++ files to complex CMake-based applications. It also helps you adopt modern C++20 features and work in embedded and remote setups more productively.
Since CMake is a language of build systems, investigating errors and catching suspicious behavior in a CMake script is not always easy. With CLion 2022.3 you can now debug CMake scripts as regular code. Set breakpoints, step through code, and watch CMake variables and targets.
The CMake file editor in CLion has been enhanced with new abilities to help you edit CMakeLists.txt files more easily. This includes:
find_package
for packages bundled with CMake.
When there is a file in your CMake-based project that doesn’t belong to any CMake target, CLion code assistance is limited in that file. A new Add to CMake Project quick-fix shown on the notification bar will help you add a file to the existing CMake target.
The action is also available in the project view context menu when called on the file.
If you add a CMake target as an extra task before starting the selected run/debug configuration, the target can now be run with administrative privileges.
Modules were introduced in C++20 to reduce many of the problems associated with the use of header files by isolating declarations and keeping their visibility limited to the module. There is also the hope that modules will be able to reduce compilation times in many cases. CLion 2022.3 provides module support to help you use this great language feature.
CLion collects and parses information about modules from all .ixx, .cppm,
and .mxx files in the project. Then it provides syntax highlighting for the new
module keywords like import
, export
, and module
.
CLion provides code completion for symbols from modules.
With CLion, you can navigate to declaration/definition for symbols from modules in one click.
Both Find Usages and refactorings work as usual inside modules.
An early version of the Rename, Change Signature, and Extract refactorings that cross module boundaries work only for files opened in CLion.
Learn more about CLion’s support for C++20 modules and the known limitations.
If you have just one or two C++ files that you write code in and then want to compile and run, you no longer need CMake or another project model to open them in CLion. There is a new option to compile and run a single C or C++ file!
A new run/debug configuration type (C/C++ File) allows you to quickly configure the toolchain, source files, and compilation options. When created, it allows you to compile and run the selected files.
When you open a C/C++ file or a folder via the Open action in the Welcome wizard, the run icon appears in the left gutter and allows you to run or debug the current file.
A C/C++ File configuration is required, and when missing, is created automatically when you click on the run icon.
When debug is selected, CLion automatically adds the required compiler flags for
generating debug information (i.e. -g
for GCC and Clang, or similar
options for MSVC), so no changes in the configuration are required.
If you develop for embedded systems, chances are that you need to write linker scripts. CLion 2022.3 now comes with Linker Script (LD) language support, which includes:
sections
, memory
, and phdrs
.
The Clang-Tidy binary was updated to v16.0.0 in this release, bringing new checks and various LLVM fixes.
The Clang-Tidy settings (Settings | Editor | Inspections | C/C++ | Static Analysis Tools | Clang-Tidy) were updated and the detailed documentation is now rendered on the left-hand side.
In the Clang-Tidy tooltip in the editor, click on the kebab (three dots) icon on the right-hand side and choose Show Inspection Description to get a short description of a Clang-Tidy check. Use the special Learn More link to navigate to the settings dialog and find out more details about the check.
The Quick Documentation popup now shows the size of the type. Similar to other inspections, this one uses the flags from the project model that CLion passes to Clangd. This allows the IDE to calculate the correct size even in cross-compilation cases.
CLion can now help you learn more about the standard functions, structures, and other parts of your code base. Use the link in the Quick Documentation popup or the External documentation (Shift+F1) action to open cppreference.com articles in a web browser. This works for anything with a definition in the std namespace that is likely to have documentation there.
When you step out of a function that has a non-void return type, CLion now shows its return value in the debugger tool window’s Variables view.
On macOS and Linux, the bundled LLDB version has been updated to LLDB 15.
When debugging with RTOS, CLion provides a view of tasks (threads). Starting with CLion 2022.3, this also works for Symmetric Multiprocessing (SMP) if the processor cores are identical.
In addition to FreeRTOS and Zephyr, the view has also been enabled for Azure RTOS.
IntelliJ-based IDEs are receiving a new UI. Modern and clean, it aims to reduce visual complexity, provide easy access to essential features, and progressively disclose complex functionality as needed.
Tool windows and features specific to C and C++ are now ready for the new UI! Ready to give it a test drive? Switch to it in Settings | Appearance & Behavior | New UI.
A new solution for synchronizing settings is now available in all IntelliJ-based IDEs, including CLion. The new Settings Sync plugin is capable of syncing all shareable settings from the platform, bundled plugins, and third-party plugins. The settings are stored in the cloud attached to the user’s JetBrains Account. If you use different IntelliJ-based IDEs associated with the same user account, your settings will be automatically synced.
When profiling on a remote or embedded target, you can now import the results locally in CLion via Run | Open Profiler Snapshot. Jump to Source navigation works correctly for profiling data and continues to do so after import/export.
CLion now provides an alternative way to work with projects in WSL2 (Windows Subsystem for Linux 2) via remote development. Instead of running a full IDE on Windows, your IDE backend will launch directly in WSL2 itself. Then you can connect to it the same way you would connect to any remote machine when using remote development.
To improve the performance of remote development with local sources, CLion now uses pigz (a multithreaded gzip implementation) for compression on the remote host to synchronize the header search paths back to the local host.
For remote development with local sources, you can avoid the CMake build folder synchronization after CMake reload by selecting the Local or mounted folder deployment type in Settings | Build, Execution, Deployment | Deployment.