“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

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

关注

评论

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

「2023最新版」Java基础、中级、高级面试题总结(1000道题含答案解析)

采菊东篱下

java面试

内核调试环境搭建

郑州埃文科技

网络安全 网络环境

开源边缘计算项目【FabEdge v0.8.0】配置connector公开端口操作说明

BoCloud博云

边缘计算 容器网络 FabEdge #开源项目体验 边缘网络

如何用ReadWriteLock实现一个通用的缓存中心?

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

艾媒咨询 | 2023年中国信创产业发展白皮书

亚信AntDB数据库

数据库 AntDB AntDB数据库

基于 Log 的通用增量 Checkpoint

Apache Flink

大数据 flink 实时计算

电商行业实践专栏上线|阿里巴巴风控实战如何解决大规模风控的技术难点?

Apache Flink

大数据 flink 实时计算

探索 PlanetIX:解读区块链游戏运营的奥秘

Footprint Analytics

区块链游戏 web3 Planet IX

双非渣硕,开发两年,苦刷算法47天,四面字节斩获offer

做梦都在改BUG

Java 数据结构 算法 LeetCode

太赞了,京东研发一哥力荐的高可用网站构建技术

做梦都在改BUG

Java 架构 京东

精准快速搜索文件:Find Any File 激活版

真大的脸盆

Mac 办公效率 文件搜索 搜索工具 搜索文件

阿里P8大佬的1800页计算机基础知识总结与操作系统,太强了!

做梦都在改BUG

Java 程序员 操作系统

阿里一面凉凉,幸获内推华为技术四面,offer到手!

程序知音

Java java面试 Java进阶 八股文 Java面试八股文

财务标准化建设进程中,财务共享能起到什么作用?

用友BIP

财务共享

软件设计中你考虑过重试了吗?

做梦都在改BUG

Java 软件设计 重试机制

小程序容器与PWA的完美结合:提升应用性能与用户体验

FinFish

私有小程序技术 小程序容器 PWA 小程序化 小程序技术

如何进行存储容量规划?

ScaleFlux

存储成本 数据压缩 企业级SSD NVMeSSD

一文吃透基于低代码平台的开发优势

这我可不懂

低代码 零代码 应用开发 JNPF

ScaleFlux企业级SSD通过VMware IOVP认证

ScaleFlux

vmware 固态硬盘 企业SSD 存储解决方案

用友BIP新一代全球司库,重塑企业资金管理新价值

用友BIP

全球司库

旅游景区如何寻找共享电单车厂家

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电动车投放 景区共享电动车

牛客网 2023 最新 1100道 Java 面试题来袭,面面俱到,太全了!

架构师之道

java面试

火山引擎DataLeap的Catalog系统搜索实践(一):背景与功能需求

字节跳动数据平台

线程池是如何执行的?任务太多会怎样?

做梦都在改BUG

Java 线程池

空降攻略!一文带你玩转2023开放原子全球开源峰会

开放原子开源基金会

开源 开放原子开源基金会 攻略 开放原子全球开源峰会

艾媒金榜|2023年中国信创企业百强榜

亚信AntDB数据库

数据库 AntDB AntDB数据库

MegEngine 使用小技巧:如何解读 MegCC 编译模型几个阶段 Pass 的作用

MegEngineBot

深度学习 编译器 MegEngine Pass

Hybrid Shuffle 测试分析和使用建议

Apache Flink

大数据 flink 实时计算

狂刷三遍398道java最新MySQL笔记后,我四面阿里研发部,成功定级P7

做梦都在改BUG

Java MySQL 数据库

今天又和Redis超时杠上了

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

活动回顾丨首期阿里云 Serverless 技术创新实战营上海开讲(含 PPT 下载)

Serverless Devs

LLVM 2.8发布_Java_Alex Blewitt_InfoQ精选文章