클랭

클랭(Clang)() 은 C, C++, 오브젝티브-C, 오브젝티브-C++ 프로그래밍 언어를 위한 컴파일러 프론트엔드이다. LLVM을 백엔드로 사용하며 LLVM 2.6 이후로 릴리즈의 일부로 자리잡았다.

목표는 GNU 컴파일러 모음 (GCC)를 대체하는 것이다. 개발은 완전히 오픈 소스이며 구글, 애플 등 대형 소프트웨어 기업의 지원을 받고 있다. 소스는 일리노이 대학교/NCSA 오픈 소스 라이선스로 이용할 수 있다.

클랭 프로젝트는 클랭 프론트엔드와 클랭 정적 분석기를 포함한다.

배경 
2005년, 애플은 LLVM을 수많은 상업용 제품에 상당 부분 사용하였으며 여기에는 iOS SDK와 Xcode 3.1이 포함되었다.

LLVM을 처음 사용한 용례 가운데 하나는 OS X용 OpenGL 코드 컴파일러였으며 이는 OpenGL 호출을 더 근본적인 그래픽 처리 장치(GPU, 특정 기능을 지원하지 않는)용 호출로 변환하기 위해 사용되었다. 이를 통해 애플은 인텔 그래픽스 미디어 가속기(GMA) 칩셋을 사용하는 컴퓨터에서 OpenGL 지원을 가능케 하였고 해당 기기들에서 성능이 개선되었다.
이를 지원하는 GPU의 경우 코드는 기반 하드웨어를 온전히 활용하도록 컴파일되어 있으나 GMA 기기의 경우 LLVM은 동일 OpenGL 코드를 서브루틴으로 컴파일함으로써 지속적인 정상 기능 동작을 보장하였다.

LLVM은 원래 GCC의 프론트엔드로 사용하기로 계획되었으나 GCC는 LLVM과 애플의 개발자들에게 일부 문제를 일으키게 되었다. GCC 소스 코드는 상당히 크고 개발자들이 작업하기에는 다소 성가신 시스템이다. 오랜 기간 GCC 개발자였던 사용자는 LLVM을 가리켜 "하마춤을 추려고 애쓰는 일은 정말로 그다지 재밌는 일이 아니다"라고 언급하였다.

애플 소프트웨어는 오브젝티브-C를 상당 부분 사용하지만 GCC의 오브젝티브-C 프론트엔드는 GCC 개발자들에게 우선 순위가 낮다. 또, GCC는 애플의 통합 개발 환경(IDE)로 스무스하게 통합되지 않는다. GCC는 GNU GPL 버전 3에 의거하여 라이선스됨으로써 확장 기능에 기여하거나 수정판에 기여하는 개발자들은 소스 코드를 공개해야 하지만 LLVM은 BSD 라이선스로 되어 있어서 그러한 요구사항을 준수할 필요가 없다.

애플은 C, 오브젝티브-C, C++을 지원하는, 완전히 밑바닥부터 새로운 컴파일러 프론트엔드를 개발하기로 결정하였다. 클랭 프로젝트는 2007년 7월 오픈 소스화되었다.

같이 보기 
 GCC

각주

외부 링크 
 

애플의 소프트웨어
C 컴파일러
C++ 컴파일러
자유 컴파일러와 인터프리터
정적 프로그램 분석 도구