写点什么

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:173273
用户头像

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

关注

评论

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

大厂面试必问!Android彻底组件化方案实践方法!面试总结

欢喜学安卓

android 程序员 面试 移动开发

Rust从0到1-所有权-概念介绍

rust 所有权

INTERSPEECH2020 语音情感分析论文之我见

华为云开发者联盟

数据处理 模型 音频 语言情感分析 INTERSPEECH2020

【LeetCode】笨阶乘Java题解

Albert

算法 LeetCode 4月日更

有道云笔记新版编辑器架构设计(下)

有道技术团队

架构 大前端

年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”

小傅哥

Java 分布式 小傅哥 中间件 架构设计

4K Video Downloader V6.1.50 版本正式发布

科技猫

产品 软件 行业资讯 开发日志 发布

有了人工智能技术,告警管理会发生什么变化?

睿象云

人工智能 事件管理

Java-技术专题-Synchronized锁的分析

码界西柚

Java synchronized

FloydHub 2020年最佳机器学习书籍之一《可解释机器学习》中文版来啦!

博文视点Broadview

一周信创舆情观察(3.22~3.28)

统小信uos

区块链电子合同签署平台搭建,区块链电子存证解决方案

13828808769

区块链+ #区块链#

区块链电子印章签约平台的搭建,区块链电子签约解决方案

13828808769

区块链 #区块链#

Redis-技术专题-数据日志持久化

码界西柚

redis 持久化 aof rdb

需求分析是什么?

Simon

架构实战营

一文掌握GaussDB(DWS) SQL进阶技能:全文检索

华为云开发者联盟

sql 全文检索 华为云 GaussDB(DWS) 字段

节能降耗——搭建绿色IDC能耗与管控系统

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

RTC技术干货 | 音频质量评价体系那些事

拍乐云Pano

音视频 WebRTC RTC 3A算法 音频

gorm源码阅读之callback

werbenhu

Go 语言 gorm

EGG NETWORK阿凡提以“自由匿名竞价”流通市场EFTalk

币圈那点事

安卓开发从零开始!分析Android未来几年的发展前景,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

统一元数据,数据湖Catalog让大数据存算分离不再是问题

华为云开发者联盟

大数据 元数据 存算分离 华为云MRS 数据湖Catalog

LiteOS内核源码分析:任务栈信息

华为云开发者联盟

LiteOS 任务栈 栈指针 LOS_StackInfo LOS_Task

微众银行区块链开源基于Rust的Wasm合约语言框架Liquid

Patract

智能合约 rust polkadot Patract Wasm

无人驾驶平台,让IT没有难做的测试

鲸品堂

方法论 无人驾驶

Uniswap v3揭开真面目NA公链(Nirvana)NAC公链表示不服

区块链第一资讯

答题拿奖两不误:华为云知乎金牌答题官,就是你!

华为云开发者联盟

程序员 华为云 知乎答题 答案 金牌答题官

量化策略系统搭建,马丁策略交易软件

零代码实现一对一表关系和无限主子表级联保存

crudapi

API crud crudapi 主子表 多对多

Apache Flink Meetup · 上海站,超强数据湖干货等你!

Apache Flink

flink 数据湖 iceberg

阿里云:城市大脑数据智能解决方案

不脱发的程序猿

大数据 阿里云 城市大脑 数据智能解决方案 4月日更

LLVM 2.8发布_Java_Alex Blewitt_InfoQ精选文章