Clang(類似英文單字clang)
是一個C、C++、Objective-C和Objective-C++程式語言的編譯器前端。它採用了LLVM作為其後端,由LLVM2.6開始,一起釋出新版本。它的目標是提供一個GNU編譯器套裝(GCC)的替代品,支援了GNU編譯器大多數的編譯設定以及非官方語言的擴充功能。作者是克里斯·拉特納(Chris Lattner),在蘋果公司的贊助支持下進行開發,而原始碼授權是使用類BSD的伊利诺伊大学厄巴纳-香槟分校開源碼許可。
Clang專案包括Clang前端和Clang靜態分析器等。
概述
這個軟體專案在2005年由蘋果公司發起,是LLVM编译器工具集的前端(front-end),目的是输出代码对应的抽象语法树(Abstract Syntax Tree, AST),並將程式碼編譯成LLVM Bitcode。接著在後端(back-end)使用LLVM編譯成平台相关的機器語言
。Clang支持C、C++、Objective C。
在Clang語言中,使用Stmt来代表statement。Clang程式碼的单元(unit)皆為语句(statement),语法树的节点(node)类型就是Stmt。另外Clang的表达式(Expression)也是語句的一種,Clang使用Expr來代表Expression,Expr本身繼承自Stmt。节点之下有子节点列表(sub-node-list)。
Clang本身性能優異,其生成的AST所耗用掉的内存僅僅是GCC的20%左右。FreeBSD操作系统自2014年1月發行的10.0版本开始将Clang/LLVM作为默认编译器。
效能
測試證明Clang编译Objective-C代码时速度为GCC的3倍,還能針對使用者發生的編譯錯誤准确地给出建议。
版本歷史
這個表格只記錄了Clang歷史中特別的階段與版本
參考文獻
外部連結
*
*[https://web.archive.org/web/20070817044507/http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009817.html LLVMdev: New LLVM C front-end: "clang"], announcement(11 July 2007)
*[https://web.archive.org/web/20100613070529/http://llvm.org/devmtg/2008-08/Kremenek_StaticAnalyzer_Hi.m4v Presentation: Ted Kremenek - Finding Bugs with the Clang Static Analyzer], [http://llvm.org/devmtg/2008-08/Kremenek_StaticAnalyzer.pdf Slides]
*[https://web.archive.org/web/20100613063447/http://llvm.org/devmtg/2008-08/Naroff_Clang_Hi.m4v Presentation: Steve Naroff - Clang Internals], [http://llvm.org/devmtg/2008-08/Naroff_Clang.pdf Slides]
*[http://llvm.org/devmtg/2009-10/StateOfClang.pdf 2009 DevMtg Clang presentation]
评论 (0)