C 및 C++ 개발 분야에 혁신을 예고하는 CLion Nova
TL;DR
오늘은 CLion의 ‘기존’ 엔진 대신 ReSharper C++/Rider C++ 언어 엔진을 사용하는 CLion의 무료 초기 테스트 버전을 소개하려고 합니다. 테스트 버전 빌드는 전용 Toolbox App 피드를 통해 제공됩니다. 시기는 명확하지 않지만 수렴된 피드백 결과에 따라 2024년 내에 CLion Nova가 CLion에 병합될 예정입니다. 그때까지는 테스트 버전 빌드를 무료로 사용할 수 있으며, 일반 CLion(Classic) 설치본과 동시에 설치할 수 있습니다.
배경
JetBrains가 내놓은 최초의 C++ 엔진은 iOS 및 macOS 개발자용 JetBrains IDE인 AppCode를 위해 설계되었습니다. 이 엔진은 IntelliJ 플랫폼의 일부였으며 처음에는 Java로, 나중에는 Kotlin으로도 작성되었습니다. 엔진의 접근 방식과 아키텍처는 IntelliJ 기반 IDE에서 다양한 언어를 효과적으로 지원합니다. 그러나 이러한 설계는 특히 C++ 언어에 최선이 아닌 것으로 확인되었습니다.
C++의 발전에 더 빠르게 적응하고 엔진과 IDE 프로세스를 분리하기 위해 나중에 clangd 기반 엔진이 CLion에 추가되었습니다. clangd의 사용자 지정 브랜치를 기반으로 구축된 이 엔진은 모든 경고와 오류를 감지하여 에디터에 표시하고, 빠른 수정을 제안할 뿐만 아니라 강조 표시, 코드 완성 및 특정 탐색 작업을 수행합니다. 데이터 흐름 분석 및 MISRA 검사와 같은 작업에도 사용됩니다. 한편, CLion의 ‘기존’ 엔진은 리팩터링과 같은 다른 코드 분석 기능을 책임집니다. 자세한 ‘작업 담당 목록’은 CLion 문서에서 확인할 수 있습니다.
Clangd에는 많은 장점이 있지만 프로젝트 전반에 걸친 리팩터링 및 액션에서는 그다지 도움이 되지 않습니다. JetBrains는 clangd 기반 인덱서의 프로토타입을 제작했고 이를 기반으로 사용자가 CLion에서 활성화하고 평가할 수 있는 실험적인 Find Usages(사용 위치 찾기)도 구현했습니다.
JetBrains가 C++용으로 개발한 또 다른 대체 엔진은 ReSharper C++ 및 Rider(C++ 게임 개발용)에 사용되는 언어 엔진입니다. Rider와 같은 IntelliJ 기반 IDE와 언어 엔진 역할을 하는 독립실행형 백엔드 프로세스가 통신할 수 있도록 지원하는 통신 프로토콜도 있습니다. 이제 이러한 프로토콜과 독자적인 엔진도 CLion에 적용했습니다!
목표
이 새롭고 실험적인 솔루션에서는 IDE의 반응 속도, 정확성 및 성능에 중점을 두었습니다. 염두에 두고 있는 두 가지 주요 목표는 다음과 같습니다.
- ‘기존’ 엔진의 사용으로 인해 발생하는 CLion의 오랜 성능 및 품질 문제를 해결합니다.
- CLion, Rider, ReSharper C++ 등 모든 C++ 도구에서 사용자 경험을 통합합니다.
새로운 실험적 테스트 버전의 이름을 CLion Nova로 명명했으며 현재 CLion 버전은 CLion Classic입니다. 향후 CLion Nova를 CLion Classic에 통합할 계획입니다. 새로운 제품은 생각하지 않고 있습니다.
이점 및 개선 사항
CLion Nova는 여전히 두 가지 C++ 언어 엔진, 즉 clangd 기반 엔진과 ReSharper C++/Rider에 사용되는 엔진을 사용합니다. CLion Classic의 기능 대부분은 CLion Nova에서도 동일하게 작동합니다.
성능 측면에서 CLion Nova의 가장 주목할 만한 이점은 다음과 같습니다.
- 특히 증분 코드 업데이트에서 빨라진 강조 표시 속도
- 더 빠르게 반응하는 UI
- 더 빨라진 Find Usages(사용 위치 찾기)
- 리팩터링 시 정지 및 멈추는 현상이 크게 감소
- 더 빨라진 테스트 색인 생성
이번 통합으로 CLion Classic의 기능 세트에는 포함되지 않은 몇 가지 새로운 기능이 CLion Nova에 추가되었습니다.
- Introduce Field(필드 삽입), Introduce Namespace Alias(네임스페이스 별칭 삽입), Introduce using Enumeration(using 열거형 삽입), Convert to Scoped Enumeration(범위 열거형으로 변환) 등의 새로운 리팩터링
- 불필요한 한정자,
auto
를 명시적 타입 선언으로의 바꾸기,#include
지시문의 정렬 등의 새로운 검사, 빠른 수정 및 인텐션 - 전처리기 지시문 힌트 및 Push-to-Hint(힌트로 푸시) 모드와 같은 새로운 코드 힌트
눈에 띄는 차이점
CLion Classic과 달리 CLion Nova는 코드 완성이나 강조 표시와 같은 핵심 IDE 기능에 clangd를 사용하지 않습니다. 그러나 JetBrains의 clangd 포크는 다양한 작업(ClangFormat, Clang-Tidy, MISRA 검사, 데이터 흐름 분석 등)을 위해 새로운 엔진과 함께 계속 실행됩니다.
CLion Nova를 처음 사용하는 CLion Classic 사용자에게 낯설게 보일 부분이 몇 가지 있습니다.
- 사용자가 입력할 때 IDE가 반응하는 방식 중 일부가 다릅니다.
- 코드 분석 기능과 관련된 일부 UI 요소와 설정이 이상해 보이거나 익숙하지 않은 위치에서 발견될 수 있습니다.
- CLion Nova에서는 일부 코드 관련 설정의 디폴트 값이 다를 수 있습니다. 처음 실행 시 CLion Nova는 CLion Classic의 프로젝트별 및 애플리케이션별 설정 중 일부를 마이그레이션하지만 전부 마이그레이션하지는 않습니다.
- 다양한 언어 구성 사이를 전환하면(예: 디버그/릴리스) 코드 분석 엔진이 따라가는 데 시간이 조금 더 걸릴 수 있습니다. 파일별로 해결 컨텍스트를 전환하는 옵션도 없습니다.
- ReSharper C++는 Windows 전용인 반면 Rider는 크로스 플랫폼입니다. ReSharper C++/Rider 엔진이 Windows가 아닌 환경을 Windows 환경만큼 원활하게 지원하지 못할 수도 있습니다. 이러한 사례를 발견하면 저희에게 알려주세요.
현재는 없는 기능도 있습니다.
- 툴체인: CLion에서 원격 작업을 설정하는 여러 가지 옵션이 있습니다. CLion Nova에서는 로컬 소스를 사용한 원격 작업이 지원되지만, 씬 클라이언트(Gateway)를 사용한 원격 작업은 아직 지원되지 않습니다.
- 언어: Objective-C 언어, CUDA(RSCPP-613, CPP-26144) 및 일부 공급업체별 컴파일러 확장은 아직 지원되지 않습니다.
- Simplify statement(구문 단순화)와 같은 일부 인텐션과 빠른 수정은 현재 지원되지 않습니다(CPP-35879).
- 사용 빈도가 적은 일부 리팩터링도 빠졌습니다. Move(이동)(CPP-35867) 및 Inline Parameter(매개변수 인라인화)(CPP-35868) 리팩터링은 나중에 다시 도입할 계획입니다.
- JetBrains의 AI Assistant는 CLion Nova에서 아직 사용할 수 없습니다.
CLion Nova 설치 방법
CLion Nova는 Toolbox App을 통해서만 무료로 사용할 수 있는 초기 테스트 버전 빌드입니다.
CLion Nova는 얼리 액세스 테스트 버전 빌드이므로 로그인이 필요하지만 CLion Nova가 CLion에 병합될 때까지 무료로 사용할 수 있습니다. CLion Nova를 정기적으로 업데이트 할 예정이며, 이는 Toolbox App을 통해서도 제공됩니다.
CLion Classic에 비해 CLion Nova는 특히 C++ 코드 리팩터링 시 더 빠르게 반응하는 UI, 전체적으로 개선된 IDE 성능 및 향상된 기능 품질을 제공합니다. 지금 사용해 보고 의견을 공유해 주세요!
의견을 공유해 주세요
CLion Nova는 큰 변화를 의미하며 다양한 환경에서 세부적인 테스트가 필요합니다. 따라서 사용자 여러분의 도움이 필요합니다! 사용자 여러분은 다양한 환경과 사용 사례를 가지고 있으므로, CLion Nova를 테스트하고 경험을 공유해 주셨으면 합니다.
특히 다음에 대한 사용자 여러분의 생각을 알고 싶습니다.
- CLion Classic과 비교하여 CLion Nova를 사용하면 프로젝트에서 어떤 점이 더 좋나요?
- CLion Nova를 사용할 때 워크플로를 방해하고 IDE 사용에 지장을 주는 불편 사항은 무엇인가요? 이러한 불편은 CLion Nova에만 해당되나요? 아니면 CLion Classic에도 있나요?
CLion Nova를 일정 기간 사용하면 피드백 공유를 요청하는 메시지가 표시됩니다. 시간을 내어 의견을 보내주시면 감사하겠습니다!
물론 이슈 트래커를 통해 피드백을 보내실 수도 있습니다. 이슈가 CLion Classic이 아닌 CLion Nova와 관련된 것이라고 꼭 기재해 주세요.
CLion 팀 드림
JetBrains
The Drive to Develop
게시물 원문 작성자