Clang(发音为/ˈklæŋ/类似英文单字clang[3]) 是一个CC++Objective-CObjective-C++程式语言的编译器前端。它采用了LLVM作为其后端,由LLVM2.6开始,一起释出新版本。它的目标是提供一个GNU编译器套装(GCC)的替代品,支援了GNU编译器大多数的编译设定以及非官方语言的扩充功能。作者是克里斯·拉特纳(Chris Lattner),在苹果公司的赞助支持下进行开发,而原始码授权是使用类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。

Quick Facts 原作者, 开发者 ...
Clang
Thumb
Thumb
原作者克里斯·拉特纳
开发者LLVM开发小组
当前版本
  • 18.1.8 (2024年6月18日;稳定版本)[1]
编辑维基数据链接
源代码库 编辑维基数据链接
编程语言C++
操作系统Unix-like
平台跨平台
类型编译器
许可协议
网站clang.llvm.org 编辑维基数据
Close

Clang专案包括Clang前端和Clang静态分析器等。[4]

概述

这个软体专案在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作为默认编译器[5]

效能

测试证明Clang编译Objective-C代码时速度为GCC的3倍[6],还能针对使用者发生的编译错误准确地给出建议[7]

版本历史

这个表格只记录了Clang历史中特别的阶段与版本

More information 日期, 要点 ...
日期 要点
2007年7月11日 Clang前端以开放原始码授权释出
2009年2月25日 Clang/LLVM能够编译出可运作的FreeBSD核心。[8][9]
2009年3月16日 Clang/LLVM能够编译出可运作的DragonFly BSD核心。[10][11]
2009年10月23日 Clang 1.0首度与LLVM 2.6一起释出。
2009年12月24日 产生的C和Objective-C程式码达到产品品质(但C++和Objective-C++仍未完成)Clang C++能够编译GCC 4.2的libstdc++并为某些特定的程式产生可运作的程式码,并可以编译自身。[12]
2010年2月2日 Clang能够自举英语Self-hosting[13]
2010年2月20日 经过修改后的HelenOS英语HelenOS能够用Clang编译,,并在IA-32上通过所有空间与使用者回归测试。[14]
2010年5月20日 最新版的Clang成功建制Boost C++ Libraries,并且几乎通过了所有测验[15]
2010年6月10日 Clang/LLVM被整合在FreeBSD之中(但预设编译器仍是GCC)[16]
2010年10月25日 Clang/LLVM能够编译可运作的Linux核心[17]
2011年1月26日 初步实现所有C++0x草案标准,其中少部分草案中的新特性也出现在开发版的Clang中。[18][19]
2011年2月10日 Clang能够编译出可运作的HotSpot Java虚拟机器
2012年2月28日 Clang 3.0能够重建超过91%Debian成品。[20]
2012年2月29日 Clang成为MINIX 3中预设的编译器。[21]
2012年5月12日 FreeBSD宣布Clang/LLVM将成为预设编译器,取代沿用多年的GCC。[22]
2012年11月5日 Clang成为FreeBSD预设编译器。[23]
2013年2月18日 Clang/LLVM能够编译出Nexus 7修改版可运作的Android Linux核心[24][25]
2013年4月19日 Clang完成所有C++11特性。[26]
2013年11月6日 Clang完成所有C++14特性。[27]
Close

参考文献

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.