作者 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.

转载于:https://www.cnblogs.com/ainima/p/6331959.html

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

  1. chrome启用flash_如何在Google Chrome中启用Adobe Flash Player

    chrome启用flash Remember Adobe Flash player? It's that nifty software that lets websites embed videos ...

  2. 如何在Google Chrome中手动设置位置信息

    如何在Google Chrome中手动设置位置信息 如果用户位于「主要城市」,通常经 IP 地址获取到的定位信息都是比较接近实际的.但是如果用户处于偏远城市或者郊区,通过 ISP 获取到的位置信息与用 ...

  3. 因为Google Chrome中Software Reporter Tool占CPU用过高,我选择转战Microsoft Edge浏览器,电脑至于不卡了

    一.Software Reporter Tool 占用高,Google Chrome卡 Software Reporter Tool是一个Chrome清理工具,用于清理谷歌浏览器中不必要或恶意的扩展, ...

  4. Google Chrome 中的高性能网络

    Google Chrome 中的高性能网络 Google Chrome的历史和指导原则 原译注:这部分不再详细翻译,只列出核心意思. 驱动Chrome继续前进的核心原则包括: Speed:做最快的(f ...

  5. 如何修复Google Chrome中的Shockwave Flash崩溃

    If your copy of Google Chrome has taken on a sudden and inexplicable hatred for Shockwave Flash, we' ...

  6. 在 Google Chrome 中,如何修复 Shockwave Flash 崩溃

    在 Google Chrome 中,如何修复 Shockwave Flash 崩溃 如果你对 Google Chrome的副本突然和莫名其妙地憎恨 Shockwave Flash,我们在这里帮助你. ...

  7. chrome打印自动分页_在Google Chrome中启用自动分页功能

    chrome打印自动分页 Have you been waiting to get Firefox's Auto-Paging extension goodness in Google Chrome? ...

  8. 轻松访问Chrome中您喜欢的Google服务

    Do you want an easy way to access your favorite Google services when browsing with Chrome? Now you c ...

  9. chrome查看网页文件_如何在Chrome中直接将文件和网页下载到Google云端硬盘

    chrome查看网页文件 We've all downloaded files from the web to our computer. However, if you'd rather downl ...

最新文章

  1. C#中关于静态与非静态的一个疑问
  2. js中期BOM及this指向
  3. 文本比较算法Ⅲ——计算文本的相似度
  4. 【POJ - 2318】TOYS(计算几何,叉积判断点与直线位置关系,二分)
  5. DPDK:不仅是加速
  6. pydev导入eclipse
  7. MFC开发IM-第一篇
  8. 随想录(写给8-10年工作经验的同学)
  9. (三)pscc学习笔记
  10. c语言如何调用三个子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  11. 【每日算法Day 92】经典面试题:编辑距离
  12. EXTJS学习系列提高篇:第八篇(转载)作者殷良胜,制作树形菜单之二
  13. linux php-cli,php cli - shell语言的扩展利器 - Linux进阶, PHP技术 - freemouse-笔记-感悟-成长...
  14. 无法确认设备和计算机之间的连接,如何解决“爱思助手”无法识别设备或连接超时等故障?...
  15. SharePoint Designer 2013 连接 Office 365 必需安装2个SP
  16. C语言入门(一)——程序的基本概念
  17. 自我提升的10个好习惯
  18. 微软浏览器edge对日期Date对象format(yyyy-mm-dd)/getDiff()方法不识别
  19. php面试题和答案整理
  20. android手机导出日志adb logcat

热门文章

  1. Prebuilt binaries of PCL (point cloud library) for Linux
  2. 精益设计: 设计团队如何改善用户体验
  3. Linux学习--第十三天--日志、系统运行级别、grub加密
  4. docker install
  5. 秒杀多线程第十篇 生产者消费者问题 (续)
  6. ACM如何产生各种随机数
  7. 【读书笔记】C#高级编程 第一章
  8. Java在eclipse下开发的常用快捷键集锦
  9. 管理序列+序列的伪列+修改序列+删除序列
  10. DefaultHashOperations multiget的一个坑