写点什么

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

  • 2013-05-20
  • 本文字数:820 字

    阅读完需:约 3 分钟

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

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

关注

评论

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

RAG 修炼手册|如何评估 RAG 应用?

Zilliz

Zilliz LLM rag

鸿蒙HarmonyOS实战-ArkUI组件(Text/Span)

蜀道山

鸿蒙 程序员 架构 HarmonyOS 鸿蒙开发

【Git-Exception】Git报错:fatal: unable to auto-detect email address

百度搜索:蓝易云

git 云计算 Linux 运维 云服务器

JetBrains Rider for mac(跨平台.NET IDE集成开发)v2023.3.5激活版

Rose

利用观测云打造企业级的统一日志中心

观测云

日志分析

sonarqube的基本使用

百度搜索:蓝易云

云计算 Linux 运维 云服务器 SonarQube

PopChar for Mac 特殊字符输入工具

Rose

Photoshop 2024 for mac(ps 2024)v25.7.0中文激活版

Rose

Permute 3 for mac(全能媒体格式转换器)v3.11.9中文版

Rose

423世界读书日 和京东零售技术人一起读好书

京东零售技术

读书 企业号 4 月 PK 榜

TikTok内容下载工具4K Tokkit Pro for Mac

Rose

Docker从入门到精通:Docker exec 命令学习

霍格沃兹测试开发学社

HDC2023 大会全部资料

菜根老谭

华为 鸿蒙 华为开发者大会

BetterMouse for Mac:流畅的鼠标滚动、光标速度控制

Rose

Modern CSV for Mac(CSV编辑器/查看器)v2.0.7激活版

Rose

Docker从入门到精通:Docker run 命令学习

霍格沃兹测试开发学社

文件管理器和速度极快的 FTP 客户端:ForkLift

Rose

Downie 4 for Mac(视频下载工具)兼容14系统v4.7.11中文版

Rose

鸿蒙HarmonyOS实战-ArkUI组件(Progress)

蜀道山

鸿蒙 程序员 架构 HarmonyOS 鸿蒙开发

金字塔原理讲的什么?详细的麦肯锡金字塔读书笔记来了!

彭宏豪95

读书笔记 思维导图 在线白板 金字塔原理 效率软件

国内敏捷现状最新调研报告:2023中国企业敏捷实践白皮书

爱吃小舅的鱼

敏捷开发 中国企业敏捷实践白皮书

Linux查看属于某个组(例如docker组)的所有用户

百度搜索:蓝易云

Docker 云计算 Linux 运维 云服务器

执行可执行程序时遇到error while loading shared libraries错误解决

百度搜索:蓝易云

云计算 Linux 运维 云服务器

Docker从入门到精通:Docker log 命令学习

霍格沃兹测试开发学社

基于RT-Thread的智能家居助手

梦笔生花

单片机 RT-Thread 语音控制

Linux设备驱动系列(三)——参数传递

Linux内核拾遗

linux开发 Linux内核 内核开发 设备驱动

PHP调用API接口的方法及实现

百度搜索:蓝易云

php Linux 运维 API 云服务器

C++ 访问说明符详解:封装数据,控制访问,提升安全性

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

PNaCl:Google通过LLVM增强对Chrome中原生应用的支持_Google_Abel Avram_InfoQ精选文章