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.

目录
相关文章
|
7月前
|
Web App开发
kali2022.1安装google chrome develop 专业版
kali2022.1安装google chrome develop 专业版
57 1
|
6月前
|
Web App开发 Ubuntu 安全
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
441 0
|
4月前
|
Web App开发
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
68 0
|
4月前
|
Web App开发
GOOGLE chrome浏览器 非插件截图方法
emm...不知道大家知不知道,反正不管怎么样,我就拿来水一下 打开chrome 哦~ 右键审查元素 or F12 or ctrl+shit+i or 你自己设置的快捷键... 然后再ctrl+shit+p
127 0
|
7月前
|
Web App开发
vscode 使用Markdown 常用技巧之摆脱Google Chrome直转PDF
vscode 使用Markdown 常用技巧之摆脱Google Chrome直转PDF
|
11月前
|
Web App开发 前端开发 开发者
《智能前端技术与实践》——第1章 开发环境配置——1.6 使用 Google 浏览器——1.6.1 注册 Chrome Web Store 开发者
《智能前端技术与实践》——第1章 开发环境配置——1.6 使用 Google 浏览器——1.6.1 注册 Chrome Web Store 开发者
|
11月前
|
Web App开发 存储 缓存
如何在Google Chrome浏览器中修复“ Err_SSL_Protocol_Error”?
如何在Google Chrome浏览器中修复“ Err_SSL_Protocol_Error”?
959 0
|
Web App开发 开发者
Google Chrome浏览器怎么开启查看帧率功能?
Google Chrome浏览器怎么开启查看帧率功能?
896 0
Google Chrome浏览器怎么开启查看帧率功能?
|
存储 Web App开发 JavaScript
图解 Google V8 # 04:V8 中的对象表示:怎么利用 Chrome 内存快照去查看对象在内存中是如何布局的?
图解 Google V8 # 04:V8 中的对象表示:怎么利用 Chrome 内存快照去查看对象在内存中是如何布局的?
237 0
图解 Google V8 # 04:V8 中的对象表示:怎么利用 Chrome 内存快照去查看对象在内存中是如何布局的?
|
Web App开发 IDE 网络安全
Google Chrome 插件,一直用,一直爽
Google Chrome 插件,一直用,一直爽
122 0
Google Chrome 插件,一直用,一直爽

热门文章

最新文章