写点什么

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

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

    阅读完需:约 3 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

通过支持运行 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:452921
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

做音视频最好用的几款跨平台框架

anyRTC开发者

flutter uni-app ios android WebRTC

向我看齐!京东智联云成 2020 TOP100 Summit“技术标兵”

京东科技开发者

DevOps 云原生 数字化

Reactive Spring实战 -- 理解Reactor的设计与实现

binecy

reactor Reactive SpringBoot 2

编程之美!从线程池状态管理来看二进制操作之美

Geek Tech

Java 源码分析 线程池

2020 微信头像圣诞帽来啦,快给 TA 戴帽子吧~

mghio

圣诞帽 微信头像 圣诞节

世界之书:《麦田里的守望者》与在虚无中创造希望

lidaobing

麦田里的守望者 28天写作

使用基于 SpringMVC 的透明 RPC 开发微服务

AI乔治

Java spring 架构 微服务 Spring Cloud

得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!

小傅哥

Java 小傅哥 编程开发 七日更 数学逻辑

大连市税务局局长赵福增:用区块链打破部门间“信息孤岛”

CECBC

区块链 汽车

甲方日常72

句子

工作 随笔杂谈 日常

执法办案信息化建设,情报研判管控分析平台搭建解决方案

t13823115967

智慧公安

【经验分享】遵循10步法,应用系统发布效率大不同!

嘉为蓝鲸

敏捷 运维自动化 部署 发布流程 应用发布

Service Mesh最火项目Istio是怎么做流量管理的?

AI乔治

Java 架构 istio

【理论篇】浅析分布式中的 CAP、BASE、2PC、3PC、Paxos、Raft、ZAB

merlinfeng

大数据 分布式

谁告诉你观察者就是发布订阅模式的!抽他!

爱笑的架构师

设计模式 23种设计模式 观察者模式 Java设计模式 七日更

生产环境全链路压测建设历程17:某快递A股上市公司的生产压测案例之前言

数列科技杨德华

全链路压测 七日更

入门参考:从Go中的协程理解串行和并行

soolaugust

Go Concurrency Patterns 七日更 Go 语言

发布会直播技术及业务实践

vivo互联网技术

分布式 服务器 直播技术

比特币10年:从2个披萨涨到2万美金,背后的三个“神秘人”

CECBC

比特币

神比喻:低代码开发像自动驾驶汽车,零代码开发像无人驾驶汽车!

J2PaaS低代码平台

程序员 软件 开发者 低代码 开发工具

距离 Java 开发者玩转 Serverless,到底还有多远?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

脑洞:如何用一个整数来表示一个列表?

Python猫

Python

小白干货奇遇记

熊斌

个人成长 七日更

智慧社区综合信息服务平台搭建,智能社区建设解决方案

t13823115967

智慧社区系统开发

Polkadot系列(三)——如何实现共享安全性

QTech

区块链 polkadot 跨链

盘点 2020 | 鲜衣怒马少年时,不负韶华行且知!

程序员的时光

程序员 成长 编程之路 计算机 盘点2020

英特尔宋继强:迈向可持续的千倍速计算未来

E科讯

Fair World智能合约APP系统软件开发

系统开发

2020年书单

井中人

MSHA x Chaos 容灾高可用实践

阿里巴巴云原生

数据库 高可用 云原生 中间件 容灾

2020,谁是中国ToB行业最有影响力的企业?

ToB行业头条

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