PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
来源:互联网 发布:windows phone登录 编辑:程序博客网 时间:2024/06/11 23:05
作者 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.
- PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
- PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
- Google Chrome 5浏览器闪亮登场 HTML5支持大大增强
- OpenGL ES 在 Android 中对 GLU 的原生支持
- LLVM对注释的新增支持 @ WWDC 2013
- Google chrome 支持 IE 版本的 系统
- 增强现实应用通过摄像头实时翻译菜单、标志上的外国文字(支持中文)
- 增强现实应用通过摄像头实时翻译菜单、标志上的外国文字(支持中文)
- 增强ctags对lua的支持
- PHP对观察者模式的原生支持
- SpringMvc对Servlet原生API的支持
- 浏览器对XML DOM的原生支持
- google浏览器提示:“只能通过Chrome网上应用商店安装该程序”的方法
- android webview增强版,对原生webview的一些解决方案
- 原生支持Java应用的芯片出现
- scrollTop对Chrome,Firefox,Safari的支持
- Google 系应用设计相同、支持拉伸、修正原生实现诸多问题的星级评分条。可直接替换 RatingBar。
- Google 宣布 Android 将加入 Java 8 的原生支持
- 英语笔记:写作:Recreational activities
- N-chat 教程及源码
- LeetCode Anagrams
- 随机快速排序
- [asp.net]易遗忘的东西
- PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
- 使用SQLServer 2008的CDC功能实现数据变更捕获
- [LeetCode]7.Reverse Integer
- java eclipse 和 adt eclipse 去掉红色的波浪线以及错误语法提示
- ICG技术专栏----VPN远程访问概述
- 连接数与端口数的关系
- C++用多个容器实现文本查询TextQuery程序
- Java自定义注解和运行时靠反射获取注解
- IT人新开博客,我要养成写博客的习惯