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

简介: 作者 Abel Avram ,译者 臧秀涛 发布于 五月 20, 2013 通过支持运行LLVM位码(bitcode),Google增强了对Chrome中原生应用的支持。

作者 Abel Avram ,译者 臧秀涛 发布于 五月 20, 2013

通过支持运行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


Portable Native Client (PNaCl)

May 15, 2013

Portable Native Client (PNaCl, pronounced "pinnacle"), is an architecture-independent version of Native Client. Traditional C and C++ development uses a "compile → link" workflow that produces a platform- and architecture-dependent executable. In contrast, PNaCl development uses an LLVM compiler infrastructure with a "compile → link → translate" workflow. This workflow produces a "linked" binary that is provided as intermediate representation (IR) bitcode; the bitcode is then translated locally for a specific end-user system architecture. In conjunction with Native Client's POSIX-like environment and the Pepper API for media interfaces, PNaCl provides complete platform independence. With PNaCl, developers can create a single executable for all users. Because translation happens at the client, developers get the benefit of translations for new architectures, as well as new translation optimizations, for free, as such features become available and without the need to rebuild their applications. Once PNaCl is fully released, users will be able to run PNaCl modules on any web page – applications will not need to be deployed through the Chrome Web Store in order to run PNaCl modules.

For background information about PNacl, see PNaCl: Portable Native Client Executables (PDF). For current release information, see the release notes.

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
解密Google Cloud 全新 PaLM2及创新应用
这篇文章深入解析了Google Cloud推出的PaLM2大语言模型的特点及其在不同行业中的创新应用。
|
8月前
|
监控 搜索推荐 数据可视化
Google Analytics是如何帮助网站和应用所有者理解用户行为的?
【6月更文挑战第8天】Google Analytics是如何帮助网站和应用所有者理解用户行为的?
109 4
|
9月前
|
Web App开发 网络安全 Windows
Chrome版本太旧,无法访问此网站www.google.com 的响应时间过长
Chrome版本太旧,无法访问此网站www.google.com 的响应时间过长
348 1
|
9月前
|
Web App开发
禁用Google Chrome自动更新,怎么找到Update目录?
本文介绍一下如何找到Update目录。
251 0
|
9月前
|
存储 分布式计算 算法
Google云计算原理与应用(四)
Google云计算原理与应用(四)
189 3
|
9月前
|
存储 监控 关系型数据库
Google云计算原理与应用(三)
Google云计算原理与应用(三)
187 3
|
9月前
|
存储 算法 分布式数据库
Google云计算原理与应用(二)
Google云计算原理与应用(二)
166 4
|
9月前
|
存储 分布式计算 负载均衡
Google云计算原理与应用(一)
Google云计算原理与应用(一)
287 3
|
9月前
|
Web App开发
在 HTML 中禁用 Chrome 浏览器的 Google 翻译功能
在 html 标签中添加 translate=“no” 属性,浏览器将不会翻译整个页面。
396 0
|
9月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
294 0