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

PNaCl:Google 通过 LLVM 增强对 Chrome 中原生应用的支持

  • 2013-05-20
  • 本文字数:820 字

    阅读完需:约 3 分钟

通过支持运行 LLVM 位码(bitcode),Google 增强了对 Chrome 中原生应用的支持。

Google I/O 2013 大会上,Google 宣布了预期加入的 PNaCl (Portable NaCl,读作“pinnacle”),继续推进对 Chrome 中原生应用的支持。PNaCl 修改了原来的工具链,与之前为每种目标平台编译 C/C++ 应用不同,现在开发者只需生成一份 LLVM 位码,之后位码可以由任一 Chrome 客户端加载,在本地转换为原生代码、验证和执行。

目前,x86-32、x86-64 和 ARM 架构上的 Chrome 29 已支持 PNaCl。在 PNaCl 完整发布之后,Chrome 客户端能够在任意页面上运行原生模块,而无需将其打包为面向 Chrome Web Store 的应用。此外,PNaCl 模块无需重新编译即可在未来的架构上运行。更为有趣的是,尽管目前只支持 C/C++,理论上 PNaCl 模块可以以任何能够编译为LLVM 位码的语言编写,包括ActionScript、Ada、D、Fortran、Haskell、Java 字节码、Objective-C、Python、Ruby、Rust、Scala 和C#等,拓宽了可以在Chrome 中运行的遗留的和较新的原生应用的使用范围,这些应用只需要很小的调整,甚至无需调整。

2010 年,4 位 Google 工程师组成的一个团队在内部提出了 PnaCl( PDF ),几位作者想象的是这样一种解决方案:

  • 为编译的 NaCl 模块提供一种独立于指令集体系结构(ISA)的格式,无需重新编译即可支持多种目标平台。
  • 便于 NaCl 开发者构建、测试和部署可移植的执行模块。
  • 首先要支持 x86-32、x86-64 和 ARM 指令集,但要很容易支持未来其他流行的通用处理器。
  • 能够保持原生客户端所拥有的安全和性能属性。

PNaCl 仍然使用原来的 NaCl 沙盒机制,以保证运行翻译位码时的安全性。具体逻辑如下图所示,客户端从服务器请求位码,然后针对自己的架构将其转换为原生的可执行代码。翻译可能在本地进行(在另一个 NaCI 沙盒内),也可能通过另一个实体远程执行。

PnaCl 开发工具链支持 Windows、Mac 和 Linux, SDK 可以从项目网站下载

查看英文原文: PNaCl: Google Adds More Native Support to Chrome via LLVM

2013-05-20 10:452887
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 130.1 次阅读, 收获喜欢 34 次。

关注

评论

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

企业云上安全办公,就用华为云桌面

爱科技的水月

极速畅享网络体验,华为云CDN加速一通到底

秃头也爱科技

阿里灵杰:与开发者一起推动AI创新落地

阿里云大数据AI技术

人工智能 阿里云 开发者 AI技术

贾斯特里尼&布鲁克斯葡萄酒,贵族品质值得选择

联营汇聚

华为云大数据BI,赋能数字化企业加速发展

秃头也爱科技

跨平台应用开发进阶(三十八)uni-app前端监控方案:基调听云APP探究

No Silver Bullet

uni-app 前端监控 12月月更 基调听云APP

JavaScript进阶(十三)JavaScript 空值合并运算符、可选链操作符、空值赋值运算符讲解

No Silver Bullet

JavaScript 12月月更 空值合并运算符 可选链操作符 空值赋值运算符讲解

【Go实现】实践GoF的23种设计模式:命令模式

元闰子

Go 设计模式 命令模式

提升游戏玩家体验,华为云CDN加速了解一下

秃头也爱科技

设计企业如何降低设备成本?来试试华为云桌面吧!

爱科技的水月

使用HTTP工作的Web服务器

穿过生命散发芬芳

web服务器 12月月更

JavaScript基础:在Jupyter Notebook中操练

无人之路

JavaScript Jupyter Notebook

想在“互联网信息高速公路”顺畅通行,华为云CDN来助力

秃头也爱科技

金融科技 DevOps 的最佳实践

SEAL安全

DevOps 最佳实践 FinTech 12 月 PK 榜

Java本地高性能缓存实践

阿里技术

cache 本地缓存 缓存Java

绿色高效办公,华为云桌面不可或缺

爱科技的水月

2022-12-22:给定一个数字n,代表数组的长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度为n的数组中,最长递增子序列长度为3的数组,叫做达标数组。 返回达标数组的

福大大架构师每日一题

算法 rust 福大大

Team Lead 的日常工作

QE_LAB

敏捷团队

阿里巴巴最新出版的 Java 面试参考指南(泰山版)开源了!

架构师之道

编程 程序员 java面试

3ds Max云渲染平台哪个好?

Renderbus瑞云渲染农场

云渲染 3dsMax云渲染平台哪个好

法国名酒贾斯特里尼&布鲁克斯,俘获皇室贵族的葡萄酒

联营汇聚

软件设计中最关键的“开闭原则”,究竟指什么呢?

JAVA旭阳

架构 后端

【重磅干货】如何构建 API 生态促进企业上下游合作

石臻臻的杂货铺

API

搭建"积木"=编程?

间隔

贾斯特里尼&布鲁克斯葡萄酒,绿色酿酒传承百年

联营汇聚

Dubbo架构设计与源码解析(三)责任链模式

京东科技开发者

dubbo 过滤器 filter 责任链 provider

中移链已在BSN-DDC基础网络上线元交易功能

BSN研习社

BSN-DDC

AI技术实践|用腾讯云智能文本图像增强打造一个掌上扫描仪

牵着蜗牛去散步

人工智能 腾讯云 文字识别 图像处理

色彩精准、数据安全,华为云上的超高清设计师云工作站给你新体验

爱科技的水月

跨平台应用开发进阶(四十二)vue与nvue页面设计方案探究

No Silver Bullet

uni-app Vue 12月月更 nvue

【12.16-12.23】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

PNaCl:Google通过LLVM增强对Chrome中原生应用的支持_Google_Abel Avram_InfoQ精选文章