你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

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

2013 年 5 月 20 日

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

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

关注

评论

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

SharePoint 往事之:一句话让 SharePoint 罢工

手艺人杨柳

SharePoint

奈学教育《大数据架构师》课程大纲(1)

奈学教育

大数据

奈学教育《大数据架构师》课程大纲(1)

古月木易

大数据

【摘】Git-从零单排 04期

卡尔

面向对象设计课程小结

Tech Guy

极客大学架构师训练营

第二周学习总结

师哥

架构师训练营 - 第 3 课总结 -20200620- 软件设计

👑👑merlan

架构设计 软件设计 SOLID

新基建时代区块链应用场景进化

CECBC区块链专委会

新基建 区块链技术 去中心化 产业落地

UML实践-食堂就餐卡系统

shangyu

极客大学架构师训练营

架构师训练营第三周

Melo

小师妹学JVM之:JIT中的LogCompilation

程序那些事

JVM 「Java 25周年」 小师妹 性能调优 JIT

如何写出高质量的代码?(浅谈代码规范、重构、单元测试的重要性)

Nick

单元测试 重构 代码重构 代码规范

请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

一叶知秋

Flink on Zeppelin (5) 高级特性篇

章剑锋_Jeff

大数据 flink 流计算 Zeppelin

架构师训练营第三周-总结

无心水

极客大学架构师训练营

重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

小傅哥

设计模式 小傅哥 重构 代码优化 责任链模式

为什么Web开发人员在2020年不用最新的CSS功能

Geek_Willie

CSS

游戏夜读 | 中国的游戏制作人

game1night

互联网人的娱乐精神之28岁退休 & P8和生活助理的故事

码农神说

程序员 漫画 退休

加密与解密

返町

Android APP启动白屏优化

小菜鸟学php

android白屏

依赖倒置总结

石刻掌纹

Cache类接口隔离设计

石刻掌纹

Cocoa 代码注释与文档生成

Edmond

ios CocoaPods 代码注释 Swift-Document iOS Document

思想不进化的人都是可怜人

Neco.W

提升认知 思考 进步 进化

《零基础学 Java》 FAQ 之 17-怎么理解Java中的数组

臧萌

Java

架构师训练营作业 (第三周)

王海

极客大学架构师训练营

加入生财有术后,我获得了什么

Jay Wu

为了kafka概念扫盲,写了万字长文(我看完吐了)

周老师

Java 大数据 程序员 分布式 Kakfa

TCP/IP协议族终于更新(第4版)了,世界著名计算机精选PDF美滋滋

周老师

Java 网络 计算机 TCP/IP 协议族

架构师训练营第二周课后作业

赵凯

框架设计

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

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