LLVM 2.8发布

LLVM团队昨日发布了LLVM 2.8,包括下一代C/C++编译器、优化器和运行时的低级虚拟机基础架构。

\

LLVM实际上是一群项目的集合,能够支持C、Objective-C和C++的编译。编译本身是由Clang来完成的,它早就可以编译C和Objective-C了。在LLVM 2.7时引入了对C++的支持,而后2.8的发布则是对C++规范的支持的更为完整,新增的libc++让C++应用得以使用标准库。全新的调试器LLDB也包含其中,它应用和编译器相同的解析器和源代码工具,目的是为了替代旧有的gdb调试器。尽管LLDB早前已经可以下载使用了,这次LLVM 2.8中的LLDB却是其首次正式发布。

\

和基于GPL授权的单一编译器GCC不同的是,LLVM工具族更为模块化。而且得益于更为宽松的BSD授权,LLVM可以嵌入在商业工具中。因此,像苹果的Xcode这样的应用,在Clang的支持下能够比外部gcc应用的性能更好。不仅如此,工具生成的AST还可以由所包含的工具进行自省,这给予了IDE更为强大的能力,来了解源代码的相关结构和编译码。

\

另外,模块化的架构使得Clang的静态分析器可以纵观源代码并指出潜在的bug,比如Klee,它是一个符号化虚拟机,可以在一个程序之中给出事件发生的次序。Klee的特性之一便是通过事件寻找bug,它能够通过编程生成一个测试用例,而这个用例便可以用来演示bug被修正后的状态变化。

\

不仅是C语言

\

最终,LLVM项目不仅是面向C或基于C的语言。因为前端解析器其实是符号化指令集,这种指令集实质上是一组可移植的汇编码,能够翻译到任何支持的机器架构之上。这使得构建其他的解析器和翻译器成为可能,只需生成相同的汇编码,便可支持所有LLVM族支持的平台。

\

不仅如此,优化的工作可以深入到汇编码级别,而非仅是在源代码级别,因此任何能够翻译成LLVM IR的语言都能够自然而然地享受到运行时优化的好处。运行时可以直接解释IR,所以解释型语言也可以受益于此,根据接下来对JIT的调用来优化应用对应的部分。

\

目前VMKit已经在这样做了,它提供了JVM和CLR的通用运行时,其他语言运行时也有所涉及。Mono运行时现在已经发布了2.8版本,包含了对LLVM的支持,将其作为JIT(使用mono-llvm)来辅助运行时优化。其他运行时包括Ruby on LLVMMacRubyUnladen Swallow等。甚至在Clam AV内部也用到了它,来实现高效的病毒扫描。

\

你可以通过试用基于web的演示,来观察代码是如何编译成LLVM IR的,或通过查看LLVM博客文档来获取更多的信息。

\

查看英文原文:LLVM 2.8 Released

微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值