클랭

위키백과, 우리 모두의 백과사전.

클랭
Clang
원저자크리스 래트너
개발자애플, 구글
발표일2007년 9월 26일(16년 전)(2007-09-26)[1]
안정화 버전
18.1.4[2] 위키데이터에서 편집하기 / 2024년 4월 16일
저장소
프로그래밍 언어C++
운영 체제유닉스 계열
플랫폼크로스 플랫폼
종류컴파일러
라이선스일리노이 대학교/NCSA 오픈 소스 라이선스[3]
상태지원 중
웹사이트clang.llvm.org

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

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

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

배경[편집]

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

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

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

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

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

같이 보기[편집]

각주[편집]

  1. http://www.llvm.org/releases/2.1/docs/ReleaseNotes.html
  2. “LLVM 18.1.4”. 2024년 4월 16일에 확인함. 
  3. “LLVM License”. 2012년 9월 18일에 확인함. 
  4. Christopher, Eric (2008년 7월 3일). “simply wonder pronunciation of Clang”. 2012년 2월 8일에 원본 문서에서 보존된 문서. 2008년 7월 9일에 확인함. 
  5. 《Clang "Getting started" instructions》, Clang.llvm.org, 2012년 9월 18일에 확인함 
  6. “Clang Static Analyzer”. LLVM. 2009년 9월 3일에 확인함. 
  7. Treat, Adam (19 February 2005). “mkspecs and patches for LLVM compile of Qt4”. 《Qt4-preview-feedback》 (메일링 리스트). 4 October 2011에 원본 문서에서 보존된 문서. 
  8. Lattner, Chris (2007년 5월 25일). 《LLVM for OpenGL and other stuff》 (Slides). LLVM Developers' Meeting. 
  9. Zadeck, Kenneth (2005년 11월 19일). “Re: LLVM/GCC Integration Proposal”. 《GCC development》 (메일링 리스트). 
  10. Naroff, Steve (2007년 5월 25일). 《New LLVM C Front-end》 (Slides). LLVM Developers' Meeting. 
  11. Clang team, clang: a C language family frontend for LLVM
  12. Lattner, Chris (2007년 7월 11일). “New LLVM C front-end: "clang". 《cfe-dev》 (메일링 리스트). 

외부 링크[편집]