LLVM和Clang背后的故事

LLVM是Apple官方支持的编译器,而该编译器的前端是Clang,这两个工具都被集成到了Xcode里面。在这篇文章中,我们来了解一下LLVM和Clang背后的故事。

在很长一段时间里,Apple一直使用GCC作为官方的编译器。GCC作为开源世界的编译器标准一直做得不错,但Apple对编译工具提出了更高的要求。

仗着自己在开源社区的地位,GCC 开发者对Apple的Objective-C语言新增的很多特性不予理睬,甚至当Apple想做的很多功能需要用模块化的方式来调用 GCC时,GCC却一直不给做。一般的公司遇到这种情况,可能都有些受不了,何况是乔布斯领导的Apple呢?

与GCC的不和让Apple一直在寻找一个高效的、模块化的、协议更放松的开源的编译器替代品。最终,Apple相中了Chris Lattner的LLVM。

现在依然就职于Apple的Chris Lattner可是一位大神,他于2000年毕业于俄勒冈州波特兰大学计算机科学专业,同年前往UIUC(伊利诺伊大学厄巴纳香槟分校),攻读计算机科学硕士和博士学位。在UIUC期间,他的GPA是4.0(满分),并不断地研究探索关于编译器的未知领域,发表了多篇论文。在硕士毕业论文中,他提出了一套完整的在编译时、链接时、运行时甚至是在闲置时优化程序的编译思想,奠定了LLVM的基础。

LLVM在Chris Lattner念博士时更加的成熟。首先,LLVM使用GCC作为前端来对用户程序进行语义分析产生 IF(Intermidiate Format),然后,LLVM使用分析结果完成代码优化和生成。这项研究让Chris Lattner在2005年毕业的时候,成为了小有名气的编译器专家。他也因此早早地被Apple相中,成为其编译器项目的骨干。

进入Apple之后,Chris Lattner首先在OpenGL小组做代码优化,把LLVM运行时的编译架在OpenGL栈上,这样OpenGL栈能够产出更高效率的图形代码。这个强大的OpenGL实现被用在了后来发布的Mac OS X 10.5上。同时,LLVM 的链接优化被直接加入到Apple的代码链接器上。

一个好的工具,必须要有用武之地。几年之后,LLVM的机会就来了。Mac OS X 10.6 Snow Leopard的新功能,完全得益于LLVM的技术,而这一个版本,也是将LLVM推向真正成熟的重大机遇。

“一个篱笆三个桩,一个好汉三个帮”,LLVM能够实现很多华丽的功能,要归功于LLVM自身的新前端——Clang。
GCC系统庞大而笨重,因此,Apple决定从零开始写C、C++、Objective-C语言的前端Clang,以求完全替代掉GCC。

Clang于2007年开始开发,C编译器最早完成,在2009年的时候,Objective-C编译器已经完全可以用于生产环境,而在一年之后,Clang基本实现了对C++编译的支持。

Clang一个重要的特性是编译快速、占内存少,而代码质量还比GCC来得高。得益于本身健壮的架构和Apple的大力支持,Clang越来越全能,支持的项目越来越多,如Mac OS X 10.6时代的Xcode和Interface Builder等,皆由Clang编译。Clang的加入也代表着LLVM真正走向成熟。

此外,Clang有一个重要的衍生项目是静态分析工具,能够通过自动分析程序的逻辑,在编译时就找出程序可能的bug,这个功能叫做ARC。ARC的实现让当时的广大开发者们大为惊愕。

除了LLVM核心和Clang以外,LLVM还包括一些重要的子项目,比如一个原生支持调试多线程程序的调试器LLDB和一个C++的标准库libstdc++。不光是Apple,很多的项目和编程语言都从LLVM中取得了关键性的技术。

从LLVM的发展历程中可以看到,LLVM在短短五年内(2005年-2010年)取得了快速的发展,这充分反映了Apple对于产品技术的远见和超强的执行力。也正是因为这样,LLVM一跃成为了最领先的开源软件技术之一。而大神Chris Lattner也在2010年赢得了Programming Languages Software Award(程序设计语言软件奖)。

大神的故事还没有结束,Chris Lattner于2010年7月开始着手Swift编程语言的设计工作,他实现了该语言的大部分基础架构。2011年末,又有几位大神加入了该项目。2013年7月,Swift项目成为了苹果开发者工具部门的主要焦点。在2014年6月2日,Swift语言正式发布,Chris Lattner及其工作又一次赢得了广大开发者们惊愕的目光。目前,Chris Lattner是苹果公司开发者工具部门的主管,领导Xcode、Instruments和编译器团队。

时间: 2024-11-21 03:40:01

LLVM和Clang背后的故事的相关文章

《Mac OS X 背后的故事》读后记

         <Mac OS X 背后 的故事>介绍了mac系统的由来和故事性的过程,包括mac的内核变迁.芯片适配.文件系统.多核支持.64/32支持等等,介绍了mac操作系统是怎样炼成的.           就像技术史一样,可以了解到很多操作系统底层库以及其他涉猎:        <Cocoa Programming Developer's Handbook>          GCD与多核并发编程问题          LLVM          GDB        

黑客精神祭 挖掘神秘黑客背后的故事

无论媒体如何渴望挖掘黑客背后的故事.黑客始终是一群神秘的存在.于是乎,笔者的这篇黑客精神祭的直接叙述对象也就指向了更为人们所知的"病毒". 病毒诞生之初--严谨之美 当你看着爱机被病毒蹂躏的时候,或许你根本无从感觉病毒之美.但是,如果你愿意纯粹以技术角度评判病毒的话,或许你能在病毒诞生之初,发现它的美.那是一种精密逻辑思维构筑下的严谨之美. 1986年,大脑病毒面世.它是世界上第一个DOS病毒,同时也开创了引导区病毒的先河.它用汇编语言写成,代码精简,有很高的编程技术.大脑病毒是用极其

背后的故事之 - 快乐的Lambda表达式(一)

原文地址:点击打开链接 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能降低发生一些潜在错误的可能.LINQ包括ASP.NET MVC中的很多功能都是用Lambda实现的.我只能说自从用了Lambda,我腰也不酸了,腿也不疼了,手指也不抽筋了,就连写代码bug都少了.小伙伴们,你们今天用Lambda了么?但是你真的了解它么?今天我们就来好好的认识一下吧. 本文会介绍到一些Lam

SQL Server 2012研发团队背后的故事

本文讲的是SQL Server 2012研发团队背后的故事,在切入正题之前,就让浸泡在数据海洋里的我们,看几个并不陌生的场景吧. 场景一:痛苦的升级 三十六岁的吴桐坡是一个电商网站的首席技术官,最近有点头疼:业务旺季就在眼前,现在的内存.盘阵.操作系统和应用平台已经有点扛不住.老板却已发话,今年要基于用户消费行为的统计与分析,上线更多的新品类.唉,又要和部门里的兄弟们熬夜了.好在之前做了不少准备工作,对这次升级的成本和问题心里大概有底."但过去几年,哪次硬件变更和软件升级没出过岔子?我怎么敢跟老

听运营者们分享背后的故事 2017网易易盾成就内容安全王道

[51CTO.com原创稿件]2017年1月8日,天公作美吹散了漫天雾霾,网易大厦在周末的下午迎来了一百多位互联网运营小伙伴,共聚"亿级互联网产品背后的故事"线下沙龙,一起讨论互联网内容安全运营的话题. 谈及举办这场活动的初衷,网易易盾总经理周森表示,随着国内互联网的蓬勃发展,网民数量的激增,互联网的运营工作越来越难:例如对用户上传内容尺度难以把握.海量垃圾信息骚扰难清理.垃圾样本变化多端难过滤.人力审核成本不堪重负-- 那么这些问题该如何解决?不同阶段的运营会遇到哪些典型问题?互联网

阿里巴巴开源Java编码规范背后的故事

(作者:无独 | 校对:孤尽) <阿里巴巴Java开发手册>(下称<手册>)凝聚了阿里集团很多同学的知识智慧和经验,这些经验甚至是用血淋淋的故障换来的,希望前车之鉴,后车之师,能够帮助更多的开发者少踩坑,杜绝踩重复的坑.  手册下载:https://yq.aliyun.com/articles/69327 此手册从构思到现在的最新版本,历时一年半,历经无数次内部针锋相对的讨论,迭代105次.可以说手册中每一个条目的背后,都有一个很长.很精彩的故事.为了让广大开发者更加深入地了解到项

宝宝树:讲述大数据与母婴背后的故事

文章讲的是宝宝树:讲述大数据与母婴背后的故事,宝宝树是中国最具影响力的母婴服务平台,为孕期和孩子在六岁以内的父母提供知识.交流.记录.购物等多元化服务.但宝宝树事实上还是一个名副其实的大数据企业.宝宝树公司COO魏小巍表示:"大数据是宝宝树最宝贵的财富之一,如果没有高效的大数据分析作为支撑,宝宝树的很多业务都难以高速前进." 业务发展的驱动力 大数据的关键并不是比谁拥有的数据量大,而是如何通过最有效的数据分析手段读懂数据背后隐藏的那些信息,对业务提供指导.宝宝树正是利用大数据将社区流量

ASP.NET Web API自身对CORS的支持: EnableCorsAttribute特性背后的故事

从编程的角度来讲,ASP.NET Web API针对CORS的实现仅仅涉及到HttpConfiguration的扩展方法EnableCors和EnableCorsAttribute特性.但是整个CORS体系不限于此,在它们背后隐藏着一系列的类型,我们将会利用本章余下的内容对此作全面讲述,今天我们就来讨论一下用于定义CORS授权策略的EnableCorsAttribute特性背后的故事. 目录 一.CorsPolicy 二.CorsPolicyProvider 三.CorsPolicyProvid

《留美秘籍:专家教你上美国名校》一一、大学排名背后的“故事”

一.大学排名背后的"故事" 留美秘籍:专家教你上美国名校 1.大学排名的由来 美国大学排名始于1983年,当时大学排名的开山鼻祖<美国新闻和世界报道>(US News & World Report),就本科生教育的质量和声誉对美国1 308所四年制大学的校长进行了问卷调查,请他们列出自己心目中不同类别大学的前5名,被调查的校长中有662名校长回复了问卷.<美国新闻和世界报道>根据他们的反馈,在那一年的11月份发布了调查结果,按照每所学校被提名的次数排序,