原文地址: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許可下提供的內容