报名「音视频前端技术创新实践专场」,听腾讯云技术专家揭秘音视频相关技术>> 了解详情
写点什么

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

  • 2013 年 5 月 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 年 5 月 20 日 10:452573
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

第一周学习总结

Gavin

架构师训练营-作业一

Jemmy

架构学习作业-食堂就餐卡系统架构

乐天

架构师训练营week1-学习记录

lijia_toby

极客大学架构师训练营

食堂就餐卡系统设计

桔子

架构学习

呱呱

极客大学架构师训练营 作业

架构师训练营 第1周作业

Lingjun

极客大学架构师训练营

第一周作业(1)

佳明

架构学习之架构图设计(1)

Paula_l

食堂就餐卡系统设计

大咪发

【极客大学】【架构师训练营】【第一周】学习总结:如何使用UML图达成设计意念

NieXY

极客大学架构师训练营

食堂就餐卡系统架构设计⽂档

一点点..

第一周架构训练营(就餐卡系统)

Gavin

「架构师训练营」学习笔记:第1周

Amy

学习 极客大学架构师训练营

架构学习第一周总结

lwy

架构师训练营第一周总结

will

架构师课程第一周总结

dongge

架构师第一课学习总结

曾祥斌

第一周架构总结

漫步云梯

架构总结

就餐卡系统设计

dongge

《架构师训练营》--第一周命题作业

极客大学架构师训练营

关于架构师的理解(第一周学习总结)

架构师训练营 第1周总结

Lingjun

极客大学架构师训练营

就餐卡系统架构文档

Geek_bobo

食堂就餐卡系统设计

Aldaron

如何编写一份合格的架构设计文档(一)

izerone

学习总结

YY

食堂就餐卡系统设计

Ph0rse

极客大学架构师训练营

week01-学习心得

强哥

极客大学架构师训练营

就餐卡系统架构设计文档

gen_jin

第一周作业

仪轩

聊聊IO夯的那些事

聊聊IO夯的那些事

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