Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

C++빌더 12.1 안에 있는 새 C++ Clang 도구 체인!


Recommended Posts

데이비드 밀링턴(David Millington)"The new Clang Toolchain in C++Builder 12.1!" 을 번역했습니다. (원문 작성: 2024년 4월, 최종 번역: 2024년 4월)

차례

 

C++빌더 12.1 안에 있는 새 C++ Clang 도구 체인!

RAD 스튜디오 12.1은 빅 뉴스다: 우리의 새 Clang-기반 도구 체인의 첫 버전을 출시했다. 이는 전체 기술 스택의 완전한 개정판이며, 모든 C++을 발전하게 만드는 기반이 된다. 탄탄하고 현대적이고 '올바른 방식으로 수행된' 기반이다.

 

기술적 정보

새 툴체인은 Windows 64비트 Intel 앱을 대상으로 하며 새 STL 그리고 새 C++ 런타임이 포함된 Clang 15를 기반으로 한다. 또한 Windows의 Universal C Runtime(UCRT)을 사용한다. 새 링커가 들어 있다. 그리고 COFF 및 PDB 오브젝트와 디버그 파일 포맷을 사용한다. 자세한 내용은, 두 번째 Behind the Build 웹 세미나를 참조하면 된다. 12.1이 출시되기 몇 주 전에 진행된 세미나다. 또한, 업그레이드에 대한 도움말 문서에는 알아야 할 주요 사항들이 있다.

모든 바이너리(컴파일러, 링커 등등)들은 64비트 EXE다. 즉, 대용량 메모리 요구 사항들을 처리할 수 있다 - 그리고 C++에서 이것이 얼마나 자주 필요한지 알면 여러분은 놀랄 것이다. 여기에는 외부 프로세스를 호출하는 IDE에서 컴파일할 때도 포함된다.

spacer.png
Clang: 미래를 향한 탄탄한 기반

 

무엇을 제공하는가?

이 도구 체인은 기능보다 품질 우선(버전 1이지만 우리가 출시하는 것이 견고하길 원했기 때문)에 집중했다. 그리고 올바른 일을 하는 것과 올바른 선택을 하는 것, 사용자에게 영향을 미치는 품질 관련 핵심 영역을 해결하는 것, C++빌더의 미래가 정말 흥미롭도록 밑받침하는 것에 집중했다.

올바른 선택의 예:

  • 플랫폼 표준 COFF 개체 파일 오브젝트를 사용하고 있다.
  • 플랫폼 표준 PDB 디버그 오브젝트를 사용하고 있다 (필요한 경우, 여러분이 다른 특수 디버거들을 사용할 수 있도록 한다).
  • 오픈 소스 소프트웨어를 많이 쓰도록 하고 있다. LLVM의 STL(libc++) 등
  • 중복 작업을 제거하고 있다: 예전에는 우리 자체 C 런타임이 가지고 있었다. 하지만 지금 Windows 안에는 런타임(UCRT)이 내장되어 있다. 우리는 그걸 사용한다
  • 예전 Win64 도구 체인과 새 도구 체인을 IDE에서 나란히 제공한다(그렇다. 둘 다 있다!). 따라서 여러분은 이전 Win64 도구 체인에서 새 도구 체인으로 업그레이드하고 테스트할 수 있다. 플랫폼을 선택 바꿔꾸기만 하면 된다.  이는 업그레이드 시 크게 도움이 된다. 갑작스럽게 전환을 하지 않아도 된다.

여러분에게 영향을 미치는 품질 관련 영역의 예:

  • 링커: 이제는 더 이상 메모리 문제가 더 이상 없어야 한다. Chrome을 빌드하는 데 사용되는 것과 동일한 링커다.
  • 링커: 기존 ilink보다 약 4배 빠르다.
  • STL: 완전히 교채했다.  고품질 STL이다. 표준 테스트 결과들이 매우 우수한 것이다. 

미래가 흥미롭도록 밑받침하는 예:

  • Clang의 최근 버전이다. 최신 상태를 유지하기가 훨씬 더 쉽다(현재 가장 최신 버전이 아닌 유일한 이유는 움직이는 목표들을 줄여서 그 영향을 최소화하기 위함이다).
  • 플랫폼 표준을 통해 상호 운용성을 지향한다.
  • 오픈 소스 STL은 충실한 (계속되는) 품질과 기능을 지향한다.
  • 등등.

기능보다 품질 우선의 예:

  • C++ 표준 준수에 중점을 두었다. 작년 중반, 출시 9개월 전, 우리는 이미 이전 도구 체인에 비해 더 많은 테스트를 통과했다.
  • 추가 품질에 매우 중점을 두었다. 예외 처리에 특히 집중했다. 여러 테스트 스위트들을 통과할 뿐만 아니라 다양한 시나리오에 대해 700개가 넘는 새 테스트들을 만들었다.
     

아직 없는 것은?

기능보다 품질 우선은 이 버전 1 안에 모든 것을 넣지는 않았다는 의미기도 하다. 없는 것들 중에 주목할만 것들은 다음과 같다: 이번 릴리스에서는 패키지가 정적으로만 연결될 수 있다. 동적으로 연결되지 않는다; 이와 비슷한데, C++로 빌드된 패키지는 현재 정적으로 링크되어야 한다(예: .libs로 빌드); 아직 CMake를 지원하지 않는다. 또한 현재 Boost 등 GetIt의 라이브러리를 업데이트하는 과정도 진행 중이다. 이 기능들에 대한 계획, 일반 작업과 이를 달성하는 방법에 대한 정보는 이 블로그 글을 읽어보기 바란다.

위 사항들이 문제 되지 않는다면, 이 도구 체인을 사용하는 것을 권장한다. 전체적인 품질이 크게 향상되었기 때문이다.

 

이미 있는 것은?

이득이 매우 크다! 여기 저기에 있던 기술 지원 티켓들을 종료한다. 과거에 작동하지 않았던 코드가 이제는 작동하기 때문이다.

새롭고 빠른 링커를 사용해 보자. 새 고품질 STL(std::variant 또는 다른 타입들에서 문제가 있었던 적이 있는가? 지금 시도해 보자.) PDB 포맷을, 원한다면, 사용한다. 예: WinDbg를 사용하려는 경우 뛰어난 C++ 호환성: 써드 파티 코드를 컴파일해야 한다면, 이 도구 체인을 사용하자. 왜 그런지 알게 될 것이다!

 

미래

spacer.png

이것은 기반이 되는 릴리스이다. 꼭 사용해 보시기 바란다! RAD Studio 또는 C++Builder를 설치하면, 이전 Win64 도구 체인과 새 Win64 도구 체인을 동시에 병렬로 사용할 수 있다는 점을 기억하자. 여러분의 프로젝트들에서 이 새 도구 체인을 추가하기만 하면 된다 (Projects 창에서 마우스 오른쪽 버튼을 클릭하고 Add Platform에서, 'Win64 Modern'을 클릭). 그러면 이 둘 사이를 왔다갔다 할 수 있다. 원하는 것을 더블-클릭하면 활성화된다.

향후에는 예전 Win64 도구 체인을 제거할 계획이다. 동적 패키지를 출시하게 된다면 말이다. 그러니, 이 두 도구 체인들이 함께 제공되는 지금을 일종의 업그레이드 지원 기능이라 생각하고 활용하기를 권장한다. 

여러분도 우리만큼 이번 릴리스를 기쁘게 느끼기를 바란다. 우리는 이것이 버전 1이라는 것을 알고 있다. 하지만 품질 측면에서 견고한 버전 1이다. 우리는 여러분이 이 버전을 써보고 여러분의 코드를 대상으로 해보는 것을 정말 기대하고 있다. 이전에는 달성할 수 없었지만 이제는 달성할 수 있는 것들이 무엇인지 확인하기 바란다!

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.