原文地址:https://developer.chrome.com/native-client/sdk/release-noteshtml
如下发行说明中的日期表示Chrome和NaCl SDK达到金丝雀状态的时间。稳定释放一般是6周后。html5
acquire
,release
和acq_rel
内存顺序。浏览器内的Chrome 42转换器支持它们,所以SDK能够生成它们。bswap
,致使NaCl验证失败。X
仅与chrome版本中的PNaCl转换器兼容X
。bitcode调试元数据格式从LLVM 3.5更改成3.6。若是您须要调试使用X
Chrome版本Y
(with X != Y
)运行的SDK版本构建的应用程序,仍然能够这样作。只需使用SDK版本X中的离线pnacl-translate工具将pexe转换为nexe, 而不是使用浏览器中的转换器(版本Y
)。--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的反馈。咱们正在努力改进并添加新目标。i686-nacl-clang
, x86_64-nacl-clang
以及arm-nacl-clang
还有clang++
等价物。这些工具链基于与PNaCl相同的LLVM版本,但可用于生成NaCl .nexe
文件,而不是在.pexe
本地或使用GCC工具链进行翻译 。VGATHER
)。acquire
,release
和 acq_rel
。它用于升级全部访问seq_cst
。它仍是升级 consume
到acquire
(没有编译器目前实现consume
),并 relaxed
以seq_cst
(谨慎地避免平台的差别,因为外的薄空气问题)。默认状况下,SDK当前已禁用此功能,所以用户计算机上安装的浏览器内转换器有时间得到此支持。开发人员能够经过将-pnacl-memory-order-seq-cst-only=false
标志传递给它来打开它 opt
。pepper_canary/examples/api/video_decode
。DEBUG_ONLY:dev://postmessage
已被删除,有利于 其余更有用的调试方法。postMessageAndAwaitResponse
如今是稳定的,容许JavaScript 与PNaCl嵌入同步通讯。pp::Var
将包含pp::Resource
能够提供给 pp::FileSystem
构造函数的结果。setjmp
/ longjmp
异常处理( 有关详细信息,请参阅公告)。nacl_io
库如今包含一个FUSE安装。common.js
如今加载构建的nexes / pex的Release版本(默认状况下)。make debug
”和“ make run
”已在Mac上修复。pepper_30
必须使用pepper_31
软件包或更高版本从新编译使用SDK中的软件包构建的Pexe模块。做为通常规则,咱们始终建议在Native Client SDK中使用最新的稳定包构建应用程序。从Chrome 31发布开始,PNaCl ABI将保持稳定。Chrome / Pepper 31版本中的其余更改:linux
nacl_io
库中的套接字支持pepper_canary
包中使用pnacl工具链。Chrome 29不支持早期版本的pnacl工具链生成的.pexe文件(即便用pepper_28
bundle或更早版本编译的可执行文件)。--enable-pnacl
标记(对于Chrome应用程序)或--enable-nacl
标记(对于其余应用程序)启动Chrome 29 。--enable-pnacl
旗帜启动Chrome时,Chrome会在后台加载PNaCl翻译器。启动Chrome后等待一分钟,而后检查chrome:// nacl以验证是否已加载转换程序。Pepper 27软件包具备大量已直接集成到SDK中的新库。web
naclports项目中的许多库已直接合并到Native Client SDK中。这些库包括:chrome
这些库位于ports/lib
,而且头文件位于 ports/include
。编程
httpfs
nacl_io库中的文件系统如今默认将内容缓存在内存中; 这大大提升了性能。dlopen()
如今可用于打开未在应用程序的Native Client清单(.nmf)文件中指定的共享库。例如,这容许应用程序下载共享对象,而后用于dlopen()
访问共享对象。该dlopen
示例已被修改以演示此功能:reverse.cc内置于共享对象(.so)文件中,该文件使用httpfs
mount进行下载和打开。index.html
文件,而不是与使用不一样工具链和配置构建的NaCl模块相对应的多个HTML文件。默认状况下,大多数示例使用一个工具链(newlib)和一个配置(Debug)构建。若是您使用多个工具链或配置创建一个例子,你能够指定使用的查询参数在Chrome运行哪一个版本tc
和config
。例如,假设您从本地服务器localhost:5103提供示例,则能够经过在Chrome中指定如下URL来运行在发行版配置中使用glibc工具链构建的示例的版本: http://localhost:5103/index.html?tc=glibc&config=Release
。有关如何加载不一样NaCl模块的其余信息index.html
,请参阅common.js
每一个示例中的文件。tools/common.mk
)如今能够处理位于应用程序根目录以外的源文件。例如,应用程序的Makefile能够指定要编译的源文件,例如 ../../some/other/place.cpp
。Pepper 26软件包在nacl_mounts库中包含一个新的HTTP文件系统类型(已重命名为nacl_io),对示例Makefile进行了更改,一个简单的新3D示例和一个线程文件IO示例。windows
Makefile已经发生了重大变化:api
tools/*.mk
)中指定了构建命令,这些文件包含在示例中的Makefile中。CC newlib/Debug/hello_world_x86_32.o
),而不是实际的构建命令。要查看实际的构建命令,请运行make V=1
。make
参数TOOLCHAIN=<x>
或 运行CONFIG=<y>
。您还能够运行make all_versions
来构建包含全部工具链的示例。include/nacl_io/nacl_io.h
,还有 hello_nacl_io
例子。pepper_20
及更早版本)已从Native Client SDK Manifest中删除,而且将再也不由该naclsdk
命令更新。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文件)。缓存
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文件)。文件。httpd.py
已从examples/
目录移动到tools/
目录。在Windows上,您能够运行httpd.cmd
(在examples/
目录中)以启动服务器。Pepper 25包含两个新的API:
pepper_25/include/ppapi/utility/threading/simple_thread.h
。请注意,若是不建立和使用消息循环,则没法在后台线程上进行异步PPAPI调用。SDK包括两个新库:
该nacl_mounts库提供了一个虚拟文件系统在给定的目录树,你的模块可“安装”。文件系统能够是如下几种类型之一:
/dev/null
, /dev/console[0-3]
,/dev/tty
),和在模块中安装文件系统后,可使用标准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)。
新库的头文件位于include/
目录中,源文件位于src/
目录中,编译库位于lib/
目录中。
SDK包含两个新示例:
除了少数例外,每一个示例的Makefile如今构建每一个示例的如下版本:
make RUN
和 make LAUNCH
。这些可互换的目标启动本地服务器和Chrome实例以运行示例。关闭Chrome实例后,本地服务器也会关闭。Pepper 24软件包包含一个名为PNaCl的新实验工具链(“Native Native Client”的缩写),一个用于Windows SDK的新库(pthreads-win32),以及一个容许应用程序指定的Pepper 3D上下文属性的扩展列表GPU偏好低功耗或性能。
hello_world
示例,了解如何构建.pexe文件并将其转换为多个.nexe文件。请注意,PNaCl目前仅限于newlib C标准库 - 若是您的应用程序使用glibc,则没法使用PNaCl构建它。create_nmf.py
脚本使用ELF头(而不是文件名)来肯定.nexe文件的体系结构。这意味着您能够更改.nexe文件的名称,而且create_nmf.py
仍然能够为您的应用程序生成相应的Native Client清单文件。Pepper 23软件包包括对Mac和32位Windows上的nacl-gdb调试器的支持,在Linux上启用托管开发的资源,以及使SDK示例符合Chrome Web Store清单文件格式的第2版的更改。
naclsdk list
,该实用程序会为每一个可用的包显示一行,I
若是您的系统上已安装了该包,则使用“ ” 注释,*
若是该包具备可用的更新,则注释为“ ” 。要查看有关捆绑包的完整信息,请使用该命令naclsdk info <bundle>
(例如,naclsdk info pepper_28
)。使用Linux SDK的开发人员如今拥有资源,包括预构建的库和示例Makefile,这使得使用本机C / 更容易将模块构建为Pepper插件(有时称为“可信”或“进程内”插件) C ++编译器在他们的开发系统上。实质上,这使得开发Native Client模块的过程分为两步:
这个两步开发过程有许多好处 - 特别是,您可使用编译器,调试器,分析器和您已经熟悉的其余工具。可是要记住一些潜在的问题:
如下是可用于将模块构建为Pepper插件的资源:
pepper_23/include
pepper_23/src
pepper_23/lib
您如今能够在SDK中构建和运行大多数示例做为Pepper插件。
make
在示例目录中运行,以查看用于构建模块做为Pepper插件的命令和标志。make LAUNCH
在示例目录中运行以查看如何使用该 --register-pepper-plugins
参数在Chrome中加载Pepper插件。请注意,在运行此命令以前,必须设置CHROME_PATH
环境变量并启动 本地服务器。<script>
块和内联事件处理程序(例如<button onclick="...">
)。有关清单文件格式的版本1和版本2之间的更改列表,以及使用版本1的应用程序的支持计划,请参阅清单版本。Pepper 22捆绑包包括一个命令行调试器,用于在Windows上启用托管开发的资源 ,以及对示例Makefile的更改(每一个示例如今都构建了调试和发布版本)。
使用Windows SDK的开发人员如今可使用其开发系统上的本机C / C ++编译器将模块构建为Pepper插件(有时称为“可信”或“进程内”插件)。实质上,这使得开发Native Client模块的过程分为两步:
这个两步开发过程有许多好处 - 特别是,您可使用编译器,调试器,分析器和您已经熟悉的其余工具。可是要记住一些潜在的问题:
如下是可用于将模块构建到DLL中的资源:
pepper_22\include
pepper_22\src
pepper_22\lib
注意:也能够在Mac和Linux系统上将模块构建为可信插件,但这样作须要更多工做,由于SDK还没有包含适用于Mac和Linux系统的上述资源(库源文件和预构建库) 。要在Mac和Linux系统上构建和调试受信任的插件,您须要获取Chromium代码,而后按照Mac说明 或Linux说明进行操做。未来,SDK将包括用于在Mac和Linux以及Windows上进行托管开发的资源。
CompletionCallbackFactory
类模板,如今须要一个线程traits类做为它的第二个参数。有关详细信息,请参阅CompletionCallbackFactory类模板参考。CC-By 3.0许可下提供的内容