阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

LLVM 2.8 发布

  • 2010-10-15
  • 本文字数:1014 字

    阅读完需:约 3 分钟

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 LLVM MacRuby Unladen Swallow 等。甚至在 Clam AV 内部也用到了它,来实现高效的病毒扫描。

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

查看英文原文: LLVM 2.8 Released

2010-10-15 00:172997
用户头像

发布了 80 篇内容, 共 19.2 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

HashMap源码分析(二)

知识浅谈

hashmap 10月月更

git clone开启云上AI开发

华为云开发者联盟

人工智能 云计算 华为云 企业号十月 PK 榜

如果你看不懂别人画的 UML 类图,看这一篇文章就够了

跟着飞哥学编程

Java设计模式 10月月更 UML类图

.NET开发者转型AI?只需要学会这个工具!

博文视点Broadview

图解 | 聊聊 MyBatis 缓存

悟空聊架构

缓存 一级缓存 悟空聊架构 10月月更 myabtis

即刻报名|金融业传统 OLAP 升级及精细化运营实践

Kyligence

OLAP 数据驱动

易安联安全应急响应中心EnSRC上线,专为零信任安全守护

权说安全

零信任 应急响应

搞定PC生产力,戴尔OptiPlex 7000系列助力办公体验再升级

科技热闻

web前端技术培训的就业前景

小谷哥

北京哪家web前端培训班比较好

小谷哥

【LeetCode】连续子数组的最大和Java题解

Albert

算法 LeetCode 10月月更

npm 新型定时攻击或导致软件供应链安全风险

SEAL安全

npm 软件供应链攻击

北京前端技术培训机构怎么样?

小谷哥

在云南,我用华为云AI开发出千万级用户的应用

华为云开发者联盟

人工智能 程序员 华为云 文字识别 企业号十月 PK 榜

Go语言入门01—数据类型

良猿

Go golang 10月月更

博客马拉松|和 OpenMLDB 一路向前

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

报名中!阿里云、统信软件、西安邮电等多位专家教授畅谈eBPF和Linux的硬核技能 | 2022云栖大会

OpenAnolis小助手

阿里云 开源 统信软件 龙蜥操作系统峰会 eBPF&Linux

大数据培训技术学费是多少

小谷哥

基于 OpenMLDB 的联邦学习方案被国际数据挖掘学术会议 CIKM 录取

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

得物API一站式协作平台探索与落地

得物技术

架构 数据分类 API Mock 10月月更

Linux下内存空间分配、物理地址与虚拟地址映射

DS小龙哥

10月月更

基于强化学习的测试日志智能分析实践

华为云开发者联盟

人工智能 测试 华为云 强化学习 企业号十月 PK 榜

快速体验React开发基础入门指南

CoderBin

前端 框架学习 #web react redux 10月月更

分布式ID生成服务的技术原理和项目实战

百度Geek说

数据库 redis 分布式 企业号十月 PK 榜

极客时间运维进阶训练营第一周作业

忙着长大#

极客时间

OpenHarmony轻松玩转GIF数据渲染

OpenHarmony开发者

OpenHarmony

经历了6个月的失踪,我将带着干货终究归来!【RocketMQ入门到精通】

洛神灬殇

1024 10月月更

优雅代码的秘密,都藏在这6个设计原则中

小小怪下士

Java 接口

第K个语法符号

掘金安东尼

算法 10月月更

线下技术培训班怎么选择比较好?

小谷哥

选对方法,窜货不再是棘手难题!

旺链科技

区块链 溯源 产业区块链 企业号十月PK榜 VoneTracer

LLVM 2.8发布_Java_Alex Blewitt_InfoQ精选文章