release说明

2018/07/19 16:07
阅读数 24

原文地址:https://developer.chrome.com/native-client/sdk/release-notes

以下发行说明中的​​日期表示Chrome和NaCl SDK达到金丝雀状态的时间。稳定释放通常是6周后。

Chrome/Pepper 49

  • 从SDK中删除了基于GCC的newlib工具链。这些已被nacl-clang工具链取代,该工具链还生成静态链接的体系结构特定的nexe文件。
  • gtest / gmock不再作为预先构建的库提供。这符合正常的gtest / gmock使用指南。希望使用gtest / gmock的项目现在必须添加显式包含路径并在本地编译gtest-all.cc。

Chrome/Pepper 45(2015年7月10日)

Pepper

  • 稳定的UDP套接字多播API(PPB_UDP_SOCKET 1.2)。

Chrome / Pepper 43(2015年4月3日)

PNaCl

  • 现在默认生成C11 / C ++ 11 acquirereleaseacq_rel内存顺序。浏览器内的Chrome 42转换器支持它们,因此SDK可以生成它们。
  • 在处理16位加载/存储时 修复ARM上代码生成错误bswap,导致NaCl验证失败。
  • PNaCl现在基于LLVM 3.6。如果您使用GDB 在浏览器中使用调试元数据调试PNaCl BC文件,请记住SDK版本的调试信息X仅与chrome版本中的PNaCl转换器兼容X。bitcode调试元数据格式从LLVM 3.5更改为3.6。如果您需要调试使用XChrome版本Y(with X != Y)运行的SDK版本构建的应用程序,仍然可以这样做。只需使用SDK版本X中离线pnacl-translate工具将pexe转换为nexe, 而不是使用浏览器中的转换器(版本Y)。
  • PNaCl对使用libstdc ++ 4.6作为C ++标准库的支持已弃用,将在下一版本中删除。PNaCl使用了libc ++(这是更新的,目前基于LLVM 3.6)作为Pepper 33以来的默认值。
  • PNaCl的实验性Subzero转换器可用于Chrome版本43中的x86-32 NaCl,标志后面。要试一试,请使用--enable-pnacl-subzero命令行标志运行Chrome ,然后使用optlevel 0 NaCl清单选项。应用程序启动时间应比以前基于LLVM的optlevel 0 模式快几倍,具有相似的代码质量。请注意,x86-32 NaCl需要32位Chrome。在Windows上,它还需要32位Windows操作系统,但64位Linux操作系统可以运行x86-32 NaCl。如果您尝试一下,请向我们发送有关native-client-dev的反馈。我们正在努力改进并添加新目标。

Pepper

  • 开发预览中的UDP套接字多播API(PPB_UDP_SOCKET 1.2)。
  • 开发预览中的硬件视频编码器API(PPB_VIDEO_ENCODER 0.1)。

Chrome / Pepper 42(2015年2月20日)

SDK

  • 该SDK现在包含的实验版本i686-nacl-clang, x86_64-nacl-clang以及arm-nacl-clang还有clang++ 等价物。这些工具链基于与PNaCl相同的LLVM版本,但可用于生成NaCl .nexe文件,而不是在.pexe本地或使用GCC工具链进行翻译 。

NaCl

  • x86 NaCl验证器接受来自FMA3扩展的指令以及AVX2指令(除外VGATHER)。

PNaCl

  • PNaCl支持C11 / C ++ 11个存储器命令acquirerelease和 acq_rel。它用于升级所有访问seq_cst。它还是升级 consumeacquire(没有编译器目前实现consume),并 relaxedseq_cst(谨慎地避免平台的差异,由于外的薄空气问题)。默认情况下,SDK当前已禁用此功能,因此用户计算机上安装的浏览器内转换器有时间获得此支持。开发人员可以通过将-pnacl-memory-order-seq-cst-only=false标志传递给它来打开它 opt
  • PNaCl处理嵌套的结构类型扩展,这使它可以更好地支持非C语言,如Rust。
  • PNaCl将64位以上的许多整数运算分解为单独的64位运算。使用大的连续位域时经常会遇到这种情况。

Chrome / Pepper 41(2015年1月9日)

NaCl

  • x86 NaCl验证器接受来自AVX1扩展的指令。

PNaCl

  • PNaCl现在基于LLVM 3.5。

Chrome / Pepper 40(2014年11月7日)

  • VideoDecoder现在稳定,请参阅SDK示例pepper_canary/examples/api/video_decode

Chrome / Pepper 39(2014年9月26日)

NaCl

Pepper

Chrome / Pepper 38(2014年8月15日)

PNaCl

  • 由于转换器和链接器的验证缓存导致编译速度提高。
  • SIMD向量混洗的性能改进。

Chrome / Pepper 37(2014年6月20日)

PNaCl

  • 翻译时间提高2-10%。
  • 改进了矢量加载/存储和随机播放性能。

Pepper

  • 媒体流输入支持。
  • Compositor API。
  • 开发预览中的硬件解码API。
  • 在开发预览中同步API。

SDK

Chrome / Pepper 36(2014年5月9日)

PNaCl

  • 通过便携式SIMD向量支持用于SIMD向量的LLVM向量 和GCC向量。请注意,这仍然是早期版本,预计Chrome版本37的性能可以接受。将在以后的版本中添加更多SIMD指令。

Chrome / Pepper 35(2014年3月31日)

PNaCl

  • 将LLVM升级到3.4版。
  • 翻译现在使用动态负载平衡,使翻译时间更快。
  • 可以通过Chrome加载具有调试信息的不稳定pex(即未定型),简化了使用PNaCl的调试。请参阅调试PNaCl pexes

Chrome / Pepper 34(2014年2月20日)

Pepper

  • 文件系统现在可以从JavaScript传递到NaCl。结果 pp::Var将包含pp::Resource可以提供给 pp::FileSystem构造函数的结果。
  • 新的音频和视频输入API已添加为开发接口。有关详细信息,请参阅 pp :: MediaStreamAudioTrack和 pp :: MediaStreamVideoTrack

PNaCl

  • 平行翻译:即使使用较旧的pex,也至少快1.7倍。
  • bitcode中的智能缩写:使用pnacl-compress工具减少20%的二进制大小。

Chrome / Pepper 33(2013年12月16日)

Portable Native Client

  • PNaCl的默认C ++标准库现在是LLVM自己的libc ++,基于LLVM 3.3。此库现在支持可选setjmplongjmp异常处理( 有关详细信息,请参阅公告)。

SDK

  • nacl_io库现在包含一个FUSE安装。
  • 在SDK示例中,common.js现在加载构建的nexes / pex的Release版本(默认情况下)。
  • “ make debug”和“ make run”已在Mac上修复。

默认情况下在Chrome 31中启用了PNaCl(2013年11月12日)

  • 默认情况下,Chrome 31中启用了Portable Native Client(PNaCl)。有关NaCl和PNaCl之间差异的详细信息,请参阅 NaCl和PNaCl。
  • PNaCl ABI已从Chrome 30中的预览版更改。pepper_30必须使用pepper_31软件包或更高版本重新编译使用SDK中的软件包构建的Pexe模块。作为一般规则,我们始终建议在Native Client SDK中使用最新的稳定包构建应用程序。从Chrome 31发布开始,PNaCl ABI将保持稳定。
  • Chrome / Pepper 31版本中的其他更改:

    • Pepper API的更新,包括套接字和网络支持
    • 改进了nacl_io库中的套接字支持

PNaCl in Chrome 30 Dev channel(2013年8月1日)

  • Portable Native Client(PNaCl)目前可在Chrome 30中预览(目前在Dev频道中)。使用PNaCl构建的应用和网站可以在Chrome 30中运行而无需显式标记。
  • 有关 开发PNaCl的信息,请参见Portable Native Client简介。即将推出更多文档。
  • 请注意,PNaCl bitcode ABI在官方公开发布之前可能仍会发生变化; 如果您正在开发基于PNaCl的应用程序,请确保使用最新版本的Native Client SDK构建代码。
  • 更新:默认情况下,在M30的测试版或稳定版中未启用PNaCl。

PNaCl(2013年5月15日)

  • Portable Native Client(PNaCl)目前可用于Chrome 29或更高版本的开发人员预览。
  • 要生成PNaCl可执行文件(.pexe),必须在当前pepper_canary包中使用pnacl工具链。Chrome 29不支持早期版本的pnacl工具链生成的.pexe文件(即使用pepper_28bundle或更早版本编译的可执行文件)。
  • 要使用PNaCl模块运行应用程序,您必须使用--enable-pnacl标记(对于Chrome应用程序)或--enable-nacl 标记(对于其他应用程序)启动Chrome 29 。
  • 当您使用--enable-pnacl旗帜启动Chrome时,Chrome会在后台加载PNaCl翻译器。启动Chrome后等待一分钟,然后检查chrome:// nacl以验证是否已加载转换程序。
  • PNaCl转换器目前可用于32位x86,64位x86和ARM体系结构。
  • PNaCl应用程序必须使用newlib C库(尚不支持glibc和动态链接)。
  • 中间表示(IR)格式可以在PNaCl释放之前改变。如果是这样,您将需要在新的SDK包中使用pnacl工具链重新编译您的应用程序。

Pepper 27(2013年4月12日)

Pepper 27软件包具有大量已直接集成到SDK中的新库。

  • naclports项目中的许多库已直接合并到Native Client SDK中。这些库包括:

    • 图像编码/解码:jpeg,tiff,png,webp
    • 多媒体:openal,freealut,ogg,vorbis
    • XML解析:tinyxml,xml2
    • 杂项:zlib(通用压缩),freetype(字体渲染),lua(Lua解释器)

    这些库位于ports/lib,并且头文件位于 ports/include

  • httpfsnacl_io库中的文件系统现在默认将内容缓存在内存中; 这大大提高了性能。
  • 对于使用glibc工具链编译的应用程序,dlopen()现在可用于打开未在应用程序的Native Client清单(.nmf)文件中指定的共享库。例如,这允许应用程序下载共享对象,然后用于dlopen()访问共享对象。该dlopen示例已被修改以演示此功能:reverse.cc内置于共享对象(.so)文件中,该文件使用httpfsmount进行下载和打开。

例子

  • 每个示例现在都有一个index.html文件,而不是与使用不同工具链和配置构建的NaCl模块相对应的多个HTML文件。默认情况下,大多数示例使用一个工具链(newlib)和一个配置(Debug)构建。如果您使用多个工具链或配置建立一个例子,你可以指定使用的查询参数在Chrome运行哪个版本tcconfig。例如,假设您从本地服务器localhost:5103提供示例,则可以通过在Chrome中指定以下URL来运行在发行版配置中使用glibc工具链构建的示例的版本: http://localhost:5103/index.html?tc=glibc&config=Release。有关如何加载不同NaCl模块的其他信息index.html,请参阅common.js每个示例中的文件。

构建工具和工具链

  • 常见的makefile(包括tools/common.mk)现在可以处理位于应用程序根目录之外的源文件。例如,应用程序的Makefile可以指定要编译的源文件,例如 ../../some/other/place.cpp

Pepper 26(2013年3月29日)

Pepper 26软件包在nacl_mounts库中包含一个新的HTTP文件系统类型(已重命名为nacl_io),对示例Makefile进行了更改,一个简单的新3D示例和一个线程文件IO示例。

构建工具和工具链

  • Makefile已经发生了重大变化:

    • 现在,在许多公共文件(tools/*.mk)中指定了构建命令,这些文件包含在示例中的Makefile中。
    • 默认情况下,make会显示构建步骤的简化列表(例如CC newlib/Debug/hello_world_x86_32.o),而不是实际的构建命令。要查看实际的构建命令,请运行make V=1
    • 默认情况下,大多数示例使用一个工具链(newlib)和一个配置(Debug)构建。要使用不同的工具链或配置构建示例,请使用make参数TOOLCHAIN=<x>或 运行CONFIG=<y>。您还可以运行make all_versions来构建包含所有工具链的示例。
  • 头文件已移出工具链。现在,所有工具链都与主机构建共享同一组头文件。以前主机和NaCl构建使用不同的标头,这可能会导致构建问题。

  • nacl_mounts库已重命名为nacl_io,并已使用新类型的httpfs进行扩展,可用于通过HTTP读取URL。详情见include/nacl_io/nacl_io.h,还有 hello_nacl_io例子。

例子

  • 添加了一个新示例hello_world_instance3d来演示简化的3D应用程序。
  • file_io例子已被重写,做一个线程所有的文件操作。该示例演示了如何使用MessageLoop API并阻止线程上的回调。

常规

  • 旧捆绑包(pepper_20及更早版本)已从Native Client SDK Manifest中删除,并且将不再由该naclsdk 命令更新。

Pepper 25(2012年12月21日)

Pepper 25软件包具有ARM工具链,用于为ARM设备构建Native Client模块,两个新的Pepper API(包括MessageLoop API,允许您在后台线程上进行Pepper调用),两个新库(nacl_mounts,提供虚拟文件系统)您可以使用标准C文件操作,使用ppapi_main(可以使用简单的ppapi_main函数实现Native Client模块),以及两个演示如何使用nacl_mounts和ppapi_main库的新示例。

构建工具和工具链

  • SDK包含一个新工具链,用于为ARM设备构建Native Client可执行文件(.nexe文件)。

    • 目前,ARM工具链只能用于编译使用newlib C库的模块。您不能使用ARM工具链来编译使用glibc库的模块。
    • ARM工具链在目录中 pepper_25/toolchain/<host>_arm_newlib。bin子目录包含compiler(arm-nacl-gcc),链接器(arm-nacl-g++)和工具链中的其他工具。
    • 看一下hello_world示例,了解如何使用ARM工具链。去examples/hello_world,跑make。构建完成后,newlib / Debug和newlib / Release子目录将包含x86-32,x86-64和ARM目标架构的.nexe文件,以及引用这三个.nexe的Native Client清单(.nmf文件)。文件。
  • SDK中包含的简单Web服务器httpd.py已从examples/目录移动到tools/目录。在Windows上,您可以运行httpd.cmd(在examples/目录中)以启动服务器。

PPAPI

Pepper 25包含两个新的API:

  • 控制台API可以让你的模块日志消息在Chrome浏览器的JavaScript控制台。
  • 消息循环 API可以让你的模块使PPAPI在后台线程调用。一旦创建了消息循环资源,将其附加到线程并运行它,就可以将工作发布到线程,包括异步操作的完成回调。有关如何使用MessageLoop API的C ++示例,请参阅pepper_25/include/ppapi/utility/threading/simple_thread.h。请注意,如果不创建和使用消息循环,则无法在后台线程上进行异步PPAPI调用。

SDK包括两个新库:

  • nacl_mounts库提供了一个虚拟文件系统在给定的目录树,你的模块可“安装”。文件系统可以是以下几种类型之一:

    • “memfs”是一个内存文件系统,
    • “dev的”是与各公用事业节点(例如,一个文件系统/dev/null, /dev/console[0-3]/dev/tty),和
    • “html5fs”是一个持久性文件系统。

    在模块中安装文件系统后,可以使用标准C库文件操作:fopen,fread,fwrite,fseek和fclose。如何执行这些操作取决于文件系统的类型(例如,对于html5fs,操作使用Pepper FileIO API执行)。有关可以装入的文件系统类型的列表,请参阅include / nacl_mounts / nacl_mounts.h。有关如何使用nacl_mounts的示例,请参阅examples / hello_nacl_mounts。请注意,html5fs受限于与Chrome中持久性本地文件IO相同的约束(例如,在使用html5fs文件系统之前,必须启用本地文件IO)。

  • ppapi_main库提供了一个熟悉的C语言编程环境简化了氯化钠模块的创建。使用此库,您的模块可以有一个名为ppapi_main()的简单入口点,它与标准的C main()函数类似,带有argc和argv []参数。您的模块也可以使用标准C函数,如printf(),fopen()和fwrite()。有关详细信息,请参阅include / ppapi_main / ppapi_main.h。有关如何使用ppapi_main的示例,请参阅examples / hello_world_stdio。

新库的头文件位于include/目录中,源文件位于src/目录中,编译库位于lib/ 目录中。

例子

  • SDK包含两个新示例:

    • hello_nacl_mounts说明了如何通过使用nacl_mounts库在Native Client模块中使用标准C库文件操作。
    • hello_world_stdio说明了如何使用ppapi_main()函数实现Native Client模块,以及如何通过使用nacl_mounts和ppapi_main库在模块中写入STDOUT和STDERR。此示例使新用户可以轻松地开始使用Native Client,方法是让他们开始在熟悉的C环境中进行更改。
  • 除了少数例外,每个示例的Makefile现在构建每个示例的以下版本:

    • glibc工具链:x86目标架构的32位和64位.nexes
    • newlib工具链:用于x86目标体系结构的32位和64位.nexes,以及用于ARM体系结构的ARM .nexe
    • pnacl工具链:.pexe(随后将其转换为x86-32,x86-64和ARM体系结构的.nexes)
    • 托管工具链:.so或.dll(在Chrome中作为Pepper插件执行)
  • 此外,每个版本都内置在Debug和Release配置中。
  • 每个示例的Makefile包含两个新目标:make RUN和 make LAUNCH。这些可互换的目标启动本地服务器和Chrome实例以运行示例。关闭Chrome实例后,本地服务器也会关闭。
  • hello_world_stdio示例包含一个简化的Makefile,它只列出源依赖项,并在单独的文件(common.mk)中调用构建规则。

Pepper 24(2012年12月5日)

Pepper 24软件包包含一个名为PNaCl的新实验工具链(“Native Native Client”的缩写),一个用于Windows SDK的新库(pthreads-win32),以及一个允许应用程序指定的Pepper 3D上下文属性的扩展列表GPU偏好低功耗或性能。

构建工具和工具链

  • SDK包含一个名为PNaCl的新实验工具链(发音为“pinnacle”)。PNaCl工具链生成与体系结构无关的可执行文件(.pexe文件)。Chrome尚未直接支持.pexe文件,但如果您想体验PNaCl的早期预览,则工具链中包含一个将.pexe文件转换为特定于体系结构的.nexe文件的工具。看一下hello_world示例,了解如何构建.pexe文件并将其转换为多个.nexe文件。请注意,PNaCl目前仅限于newlib C标准库 - 如果您的应用程序使用glibc,则无法使用PNaCl构建它。
  • create_nmf.py脚本使用ELF头(而不是文件名)来确定.nexe文件的体系结构。这意味着您可以更改.nexe文件的名称,并且create_nmf.py仍然可以为您的应用程序生成相应的Native Client清单文件。

例子

  • SDK示例现在使用四个工具链构建:glibc和newlib工具链,实验性PNaCl工具链以及开发机器上的托管工具链。在每个工具链构建中,每个示例还构建调试版和发布版。
  • 示例Makefile使用依赖项(.d)文件来启用增量构建。
  • pong示例已经过清理和修改,以便更顺畅地运行。绘图功能现在设置为Flush()回调,它允许尽可能快地进行2D绘图。

PPAPI

  • 在创建3D渲染上下文时,上下文的属性列表 可以指定是否更喜欢GPU的低功耗或性能。可以在集成GPU上创建具有低功率偏好的上下文; 可以在离散GPU上创建具有性能偏好的上下文。

Windows SDK

  • Windows SDK包含pthreads-win32库,以帮助从win32代码移植。在将模块开发为Pepper插件(.dll)时,可以使用此库。有关其他信息,请参阅pepper_24 / include / win / pthread.h和pepper_24 / src / pthread / README。
  • 更新实用程序naclsdk.bat在从具有空格的路径运行时起作用。

Pepper 23(2012年10月15日)

Pepper 23软件包包括对Mac和32位Windows上的nacl-gdb调试器的支持,在Linux上启用托管开发的资源,以及使SDK示例符合Chrome Web Store清单文件格式的第2版的更改。

工具

  • NaCl的gdb调试器现在适用于所有系统(在Mac,Windows和Linux)。
  • SDK更新实用程序的输出已简化。运行该命令时naclsdk list,该实用程序会为每个可用的包显示一行,I如果您的系统上已安装了该包,则使用“ ” 注释,*如果该包具有可用的更新,则注释为“ ” 。要查看有关捆绑包的完整信息,请使用该命令naclsdk info <bundle>(例如,naclsdk info pepper_28)。

Linux SDK

  • 使用Linux SDK的开发人员现在拥有资源,包括预构建的库和示例Makefile,这使得使用本机C / 更容易将模块构建为Pepper插件(有时称为“可信”或“进程内”插件) C ++编译器在他们的开发系统上。实质上,这使得开发Native Client模块的过程分为两步:

    1. 使用系统的C / C ++编译器将模块构建到共享库(.so文件)中。使用正常开发环境中的工具测试和调试.so文件。
    2. 使用SDK中的一个Native Client工具链(nacl-gcc或nacl-g ++)中的编译器将模块构建到.nexe文件中。使用nacl-gdb测试和调试.nexe文件。

    这个两步开发过程有许多好处 - 特别是,您可以使用编译器,调试器,分析器和您已经熟悉的其他工具。但是要记住一些潜在的问题:

    • Chrome为受信任的插件和Native Client模块使用不同的线程模型。
    • 某些操作(如特定于平台的库调用和系统调用)在可信开发期间可能会成功,但在Native Client中会失败。

    以下是可用于将模块构建为Pepper插件的资源:

    • 头文件在 pepper_23/include
    • 源文件在 pepper_23/src
    • 预建的库在 pepper_23/lib

    您现在可以在SDK中构建和运行大多数示例作为Pepper插件。

    • 查看示例Makefile或make在示例目录中运行,以查看用于构建模块作为Pepper插件的命令和标志。
    • make LAUNCH在示例目录中运行以查看如何使用该 --register-pepper-plugins参数在Chrome中加载Pepper插件。请注意,在运行此命令之前,必须设置CHROME_PATH环境变量并启动 本地服务器

例子

  • 在Linux和Windows系统上,现在大多数示例都使用三个工具链构建:Native Client glibc和newlib工具链,以及主机系统上的本机工具链。在主机系统上使用本机工具链构建的模块只能作为Pepper插件运行。
  • SDK中的所有示例现在都符合Chrome Web Store 清单文件格式的第2版 。默认情况下,使用清单文件格式版本2的应用程序应用严格的 内容安全策略,其中包括对内联JavaScript的限制。此限制禁止内联<script>块和内联事件处理程序(例如<button onclick="...">)。有关清单文件格式的版本1和版本2之间的更改列表,以及使用版本1的应用程序的支持计划,请参阅清单版本

PPAPI

Pepper 22(2012年8月22日)

Pepper 22捆绑包包括一个命令行调试器,用于在Windows上启用托管开发的资源 ,以及对示例Makefile的更改(每个示例现在都构建了调试和发布版本)。

工具

  • SDK现在包含一个命令行调试器,可用于调试Native Client模块。有关如何使用此调试器的说明,请参阅使用nacl-gdb进行调试。目前,nacl-gdb仅适用于64位Windows,64位Linux和32位Linux系统。将很快添加对Mac和32位Windows系统的支持。

Windows SDK

  • 使用Windows SDK的开发人员现在可以使用其开发系统上的本机C / C ++编译器将模块构建为Pepper插件(有时称为“可信”或“进程内”插件)。实质上,这使得开发Native Client模块的过程分为两步:

    1. 使用系统的C / C ++编译器将模块构建到DLL中。使用正常开发环境中的工具测试和调试DLL。
    2. 使用SDK中的一个Native Client工具链(nacl-gcc或nacl-g ++)中的编译器将模块构建到.nexe中。使用nacl-gdb测试和调试.nexe。

    这个两步开发过程有许多好处 - 特别是,您可以使用编译器,调试器,分析器和您已经熟悉的其他工具。但是要记住一些潜在的问题:

    • 一些常用于Native Client的库可能无法在Windows上轻松构建。
    • 您可能需要付出额外的努力来获取源代码以使用多个编译器进行编译,例如Microsoft Visual Studio和GCC。
    • Chrome为受信任的插件和Native Client模块使用不同的线程模型。
    • 某些操作(如特定于平台的库调用和系统调用)在可信开发期间可能会成功,但在Native Client中会失败。

    以下是可用于将模块构建到DLL中的资源:

    • 头文件在 pepper_22\include
    • 源文件在 pepper_22\src
    • 预建的库在 pepper_22\lib
  • Visual Studio加载项将在不久的将来推出,配置包括Pepper插件和NaCl模块的平台。

注意:也可以在Mac和Linux系统上将模块构建为可信插件,但这样做需要更多工作,因为SDK尚未包含适用于Mac和Linux系统的上述资源(库源文件和预构建库) 。要在Mac和Linux系统上构建和调试受信任的插件,您需要获取Chromium代码,然后按照Mac说明 或Linux说明进行操作。将来,SDK将包括用于在Mac和Linux以及Windows上进行托管开发的资源。

例子

  • SDK中的每个示例现在都构建了调试版和发布版。和以前一样,大多数示例还构建newlib和glibc版本,这意味着每个示例现在有四个版本。查看示例中的Makefile,查看用于调试版和发行版的编译器标志。有关这些标志的说明,请参阅针对不同开发方案的编译标志
  • 已将注释添加到common.js中,并在所有示例中使用。common.js中的JavaScript插入一个<embed>元素,在每个示例的网页中加载NaCl模块,附加事件监听器以监视模块的加载,并实现handleMessage()以响应从NaCl模块发送到的消息。 JavaScript方面的应用程序

PPAPI

CC-By 3.0许可下提供的内容

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部