WebAssembly:修订间差异
外观
删除的内容 添加的内容
小无编辑摘要 |
小无编辑摘要 标签:2017版源代码编辑 |
||
(未显示11个用户的26个中间版本) | |||
第6行: | 第6行: | ||
| name = WebAssembly |
| name = WebAssembly |
||
| title = |
| title = |
||
| logo = WebAssembly Logo. |
| logo = WebAssembly Logo.svg |
||
⚫ | |||
| logo caption = |
| logo caption = |
||
| screenshot = <!-- (filename) --> |
| screenshot = <!-- (filename) --> |
||
| screenshot caption = |
| screenshot caption = |
||
| paradigm = |
| paradigm = [[结构化编程|结构化]][[堆栈机器]] |
||
| family = |
| family = |
||
| released = |
| released = {{Start date and age|df=yes|2017|3}} |
||
| designer = |
| designer = [[万维网联盟|W3C]] |
||
| developer = |
| developer = {{Unbulleted list|[[万维网联盟|W3C]]|[[Mozilla]]|[[Microsoft]]|[[Google]]|[[蘋果公司|Apple]]}} |
||
⚫ | |||
| latest release version = |
|||
| latest release date = <!-- {{start date and age|YYYY|MM|DD|df=yes/no}} --> |
|||
| latest preview version = |
|||
| latest preview date = <!-- {{start date and age|YYYY|MM|DD|df=yes/no}} --> |
|||
| typing = [[類型系統|静态]] |
| typing = [[類型系統|静态]] |
||
| scope = |
| scope = |
||
| implementations = |
| implementations = |
||
| dialects = |
| dialects = |
||
| influenced by = [[Asm.js]] |
| influenced by = {{Hlist|[[Asm.js]]|[[Native Client|PNaCl]]}} |
||
| influenced = |
| influenced = {{link-en|AssemblyScript}} |
||
| programming language = |
| programming language = |
||
| platform = [[跨平台]] |
| platform = [[跨平台]] |
||
| operating system = |
| operating system = |
||
| license = [[Apache许可证]] |
| license = [[Apache许可证|Apache许可证2.0]] |
||
| file ext = . |
| file ext = .wat (純文字格式,人類可讀)<br/>.wasm(二進制檔案) |
||
| file format = <!-- or: | file formats = --> |
| file format = <!-- or: | file formats = --> |
||
}} |
}} |
||
'''WebAssembly''' |
'''WebAssembly''',簡稱'''Wasm''',是一個[[低级编程语言|低階程式語言]]。WebAssembly是[[可移植性]]的[[抽象語法樹]]<ref>{{cite web|url = https://github.com/WebAssembly/design/blob/master/Rationale.md#why-ast|title = design/Rationale.md at master · WebAssembly/design|work = [[GitHub]]|access-date = 2016-03-20|archive-date = 2021-03-08|archive-url = https://web.archive.org/web/20210308184924/https://github.com/WebAssembly/design/blob/master/Rationale.md#why-ast}}</ref>,被設計來提供比[[JavaScript]]更快速的[[編譯]]及執行<ref name="github.com">{{cite web|url = https://github.com/WebAssembly/design/blob/master/HighLevelGoals.md|title = design/HighLevelGoals.md at master · WebAssembly/design|work = [[GitHub]]|access-date = 2016-03-20|archive-date = 2019-06-06|archive-url = https://web.archive.org/web/20190606023801/https://github.com/WebAssembly/design/blob/master/HighLevelGoals.md}}</ref>。WebAssembly將讓開發者能運用自己熟悉的程式語言(最初以[[C語言|C]]/[[C++]]作為實作目標)編譯,再藉虛擬機器引擎在瀏覽器內執行<ref>{{cite web |url=http://techcrunch.com/2015/06/17/google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/#.xresx6:b1PE |title=Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web |work=TechCrunch |date=2015-06-17 |access-date=2015-06-20 |archive-date=2022-04-05 |archive-url=https://web.archive.org/web/20220405170059/https://techcrunch.com/2015/06/17/google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/#.xresx6:b1PE }}</ref>。WebAssembly的開發團隊分別來自[[Mozilla基金會|Mozilla]]、[[Google]]、[[微軟|Microsoft]]、[[蘋果公司|Apple]],代表著四大網路瀏覽器[[Firefox]]、[[Google Chrome|Chrome]]、[[Microsoft Edge]]、[[Safari]]<ref>{{cite web |first=Peter |last=Bright |url=http://arstechnica.com/information-technology/2015/06/the-web-is-getting-its-bytecode-webassembly/ |title=The Web is getting its bytecode: WebAssembly |work=[[Ars Technica]] |publisher=[[Condé Nast]] |date=2015-06-18 |accessdate=2015-06-20 |archive-date=2017-03-20 |archive-url=https://web.archive.org/web/20170320002809/https://arstechnica.com/information-technology/2015/06/the-web-is-getting-its-bytecode-webassembly/ |dead-url=no }}</ref>。2017年11月,以上四個瀏覽器都開始實驗性的支援WebAssembly<ref>{{Cite news|url=https://www.ithome.com.tw/news/120017|title=【2018關鍵趨勢1:WebAssembly】主流瀏覽器紛紛支援,網頁飆速成真|newspaper=iThome|accessdate=2018-01-06|language=zh-hant|archive-date=2020-05-30|archive-url=https://web.archive.org/web/20200530025822/https://www.ithome.com.tw/news/120017}}</ref><ref>{{Cite web|url=https://www.linuxpilot.com/webassembly-in-mainstream-browsers|title=主流瀏覽器都加入了 WebAssembly 支援 – Linuxpilot|accessdate=2018-01-06|work=www.linuxpilot.com|language=zh-TW|archive-date=2019-06-30|archive-url=https://web.archive.org/web/20190630040253/https://www.linuxpilot.com/webassembly-in-mainstream-browsers}}</ref>。2019年12月5日,在W3C制定《WebAssembly核心規範<ref>[https://www.w3.org/TR/wasm-core-1/ WebAssembly核心規範] {{Wayback|url=https://www.w3.org/TR/wasm-core-1/ |date=20191206110848 }}</ref>》後,WebAssembly正式被認證為Web的標準之一<ref>{{Cite web|url=https://www.w3.org/2019/12/pressrelease-wasm-rec.html.en|title=World Wide Web Consortium (W3C) brings a new language to the Web as WebAssembly becomes a W3C Recommendation|date=2019-12-05|access-date=2019-12-06|archive-date=2022-04-19|archive-url=https://web.archive.org/web/20220419042352/https://www.w3.org/2019/12/pressrelease-wasm-rec.html.en}}</ref>。 |
||
== 設計 == |
== 設計 == |
||
⚫ | |||
Ending's law<ref>{{Cite web|url=https://mp.weixin.qq.com/s/klv2lq-VJcHA8WPXDUtNlQ|title=Ending定律即将生效!}}</ref>: "Any application that can be compiled to WebAssembly, will be compiled to WebAssembly eventually." |
|||
Ending定律也称为终结者定律,它是Ending在2016年Emscripten技术交流会上给出的断言:所有可以用WebAssembly实现的终将会用WebAssembly实现。 |
|||
=== 最高指導目標 === |
=== 最高指導目標 === |
||
在官方的一個github頁面<ref>{{Cite web|url=https://github.com/WebAssembly/design/blob/master/HighLevelGoals.md|title=WebAssembly High-Level Goals|accessdate=2018-01-06|author=|date=|publisher=}}</ref>與說明文件<ref>{{Cite web|url=http://webassembly.org/docs/high-level-goals/|title=WebAssembly High-Level Goals - WebAssembly|accessdate=2018-01-13|work=webassembly.org}}</ref>中,闡述了WebAssembly的設計與實作原則,包含: |
在官方的一個github頁面<ref>{{Cite web|url=https://github.com/WebAssembly/design/blob/master/HighLevelGoals.md|title=WebAssembly High-Level Goals|accessdate=2018-01-06|author=|date=|publisher=|archive-date=2019-06-06|archive-url=https://web.archive.org/web/20190606023801/https://github.com/WebAssembly/design/blob/master/HighLevelGoals.md}}</ref>與說明文件<ref>{{Cite web|url=http://webassembly.org/docs/high-level-goals/|title=WebAssembly High-Level Goals - WebAssembly|accessdate=2018-01-13|work=webassembly.org|archive-date=2022-04-22|archive-url=https://web.archive.org/web/20220422164953/https://webassembly.org/docs/high-level-goals/}}</ref>中,闡述了WebAssembly的設計與實作原則,包含: |
||
# 定義一個可移植,具有大小與載入高效率的二進位格式,作為編譯標的。這個編譯標的必須可以被編譯至常見的平台,包含[[移动电话|移動端]]與[[物联网|物聯網]],並且可以善用[[硬件|硬體]]資源、有原生執行碼的執行速度。 |
# 定義一個可移植,具有大小與載入高效率的二進位格式,作為編譯標的。這個編譯標的必須可以被編譯至常見的平台,包含[[移动电话|移動端]]與[[物联网|物聯網]],並且可以善用[[硬件|硬體]]資源、有原生執行碼的執行速度。 |
||
# 規格與實作: |
# 規格與實作: |
||
第63行: | 第53行: | ||
=== 下一階段要實作的特色 === |
=== 下一階段要實作的特色 === |
||
在2017年推出第一個版本後,同時也列出了下一階段將實作的特色<ref>{{Cite web|url=https://github.com/WebAssembly/design/blob/master/FutureFeatures.md|title=Features to add after the MVP|accessdate=2018-01-06|author=|date=|publisher=}}</ref><ref>{{Cite web|url=http://webassembly.org/docs/future-features/|title=Features to add after the MVP - WebAssembly|accessdate=2018-01-13|work=webassembly.org}}</ref> |
在2017年推出第一個版本後,同時也列出了下一階段將實作的特色<ref>{{Cite web|url=https://github.com/WebAssembly/design/blob/master/FutureFeatures.md|title=Features to add after the MVP|accessdate=2018-01-06|author=|date=|publisher=|archive-date=2021-04-01|archive-url=https://web.archive.org/web/20210401044016/https://github.com/WebAssembly/design/blob/master/FutureFeatures.md}}</ref><ref>{{Cite web|url=http://webassembly.org/docs/future-features/|title=Features to add after the MVP - WebAssembly|accessdate=2018-01-13|work=webassembly.org|archive-date=2019-05-15|archive-url=https://web.archive.org/web/20190515113637/https://webassembly.org/docs/future-features/}}</ref> |
||
* 制定規格 |
* 制定規格 |
||
* [[线程|執行緒]] |
* [[线程|執行緒]] |
||
第76行: | 第66行: | ||
* 多值函數 |
* 多值函數 |
||
* Host bindings |
* Host bindings |
||
== 官方的宣傳 == |
|||
⚫ | |||
Ending定律也称为终结者定律, |
|||
它是Ending在2016年Emscripten技术交流会上给出的断言<ref>{{Cite web|title=Ending定律即将生效!|url=https://mp.weixin.qq.com/s/klv2lq-VJcHA8WPXDUtNlQ}}</ref>: |
|||
{{Quote |
|||
|text=所有可以用WebAssembly实现的终将会用WebAssembly实现。 |
|||
}} |
|||
現在這個定律除了 WebAssembly 的支持者用做宣傳之外看不到任何實現的跡象。 |
|||
== 參見 == |
== 參見 == |
||
* [[JavaScript]] / [[ECMAScript]] / [[AJAX|Ajax]] |
* [[JavaScript]] / [[ECMAScript]] / [[AJAX|Ajax]] |
||
⚫ | |||
* [[Dart]] |
* [[Dart]] |
||
* [[TypeScript]] |
|||
* [[V8 (JavaScript引擎)|V8]] |
* [[V8 (JavaScript引擎)|V8]] |
||
* [[SpiderMonkey]] |
* [[SpiderMonkey]] |
||
* [[Qt|Qt for WebAssembly]] |
* [[Qt|Qt for WebAssembly]] |
||
其他逐漸被捨棄的網頁[[客户端|用戶端]]技術與[[多樣化網際網路應用程式|RIA]] |
其他逐漸被捨棄的網頁[[客户端|用戶端]]技術與[[多樣化網際網路應用程式|RIA]] |
||
* [[ActiveX]] |
* [[ActiveX]] |
||
第90行: | 第93行: | ||
* [[Microsoft Silverlight]] |
* [[Microsoft Silverlight]] |
||
* [[Java Applet]] / [[JavaFX]] |
* [[Java Applet]] / [[JavaFX]] |
||
⚫ | |||
* [[Native Client]] |
* [[Native Client]] |
||
其他[[字节码|位元組碼]] |
其他[[字节码|位元組碼]] |
||
* [[Java bytecode]] |
* [[Java bytecode]] |
||
第96行: | 第101行: | ||
==參考資料== |
==參考資料== |
||
{{reflist}} |
{{reflist|2}} |
||
==外部連結== |
==外部連結== |
||
* {{Official website}} |
* {{Official website}} |
||
* [https://www.w3.org/community/webassembly/ WebAssembly Community Group] |
* [https://www.w3.org/community/webassembly/ WebAssembly Community Group]{{Wayback|url=https://www.w3.org/community/webassembly/ |date=20150618022149 }} |
||
* [https://github.com/WebAssembly/design WebAssembly Design] |
* [https://github.com/WebAssembly/design WebAssembly Design] {{Wayback|url=https://github.com/WebAssembly/design |date=20210401043754 }} |
||
* [https://github.com/chai2010/awesome-wasm-zh WebAssembly资源精选 - 中文版] |
* [https://github.com/chai2010/awesome-wasm-zh WebAssembly资源精选 - 中文版] {{Wayback|url=https://github.com/chai2010/awesome-wasm-zh |date=20220504122016 }} |
||
* [https://github.com/chai2010/awesome-wasm-zh/blob/master/webassembly-primer.md WebAssembly标准入门 - 人民邮电] |
* [https://github.com/chai2010/awesome-wasm-zh/blob/master/webassembly-primer.md WebAssembly标准入门 - 人民邮电] {{Wayback|url=https://github.com/chai2010/awesome-wasm-zh/blob/master/webassembly-primer.md |date=20220426030549 }} |
||
* [https://github.com/3dgen/cppwasm-book C/C++面向WebAssembly编程 - 开源图书] |
* [https://github.com/3dgen/cppwasm-book C/C++面向WebAssembly编程 - 开源图书] {{Wayback|url=https://github.com/3dgen/cppwasm-book |date=20220511110720 }} |
||
* MDN Web Docs WebAssembly文档([https://developer.mozilla.org/zh-CN/docs/WebAssembly 中文版] {{Wayback|url=https://developer.mozilla.org/zh-CN/docs/WebAssembly |date=20220506164632 }}、[https://developer.mozilla.org/en-US/docs/WebAssembly 英文版] {{Wayback|url=https://developer.mozilla.org/en-US/docs/WebAssembly |date=20220513193623 }}) |
|||
{{網頁技術與標準}} |
{{網頁技術與標準}} |
2024年4月5日 (五) 07:39的最新版本
编程范型 | 结构化堆栈机器 |
---|---|
設計者 | W3C |
實作者 | |
发行时间 | 2017年3月 |
当前版本 |
|
型態系統 | 静态 |
系统平台 | 跨平台 |
許可證 | Apache许可证2.0 |
文件扩展名 | .wat (純文字格式,人類可讀) .wasm(二進制檔案) |
網站 | webassembly |
啟發語言 | |
影響語言 | |
AssemblyScript |
WebAssembly,簡稱Wasm,是一個低階程式語言。WebAssembly是可移植性的抽象語法樹[2],被設計來提供比JavaScript更快速的編譯及執行[3]。WebAssembly將讓開發者能運用自己熟悉的程式語言(最初以C/C++作為實作目標)編譯,再藉虛擬機器引擎在瀏覽器內執行[4]。WebAssembly的開發團隊分別來自Mozilla、Google、Microsoft、Apple,代表著四大網路瀏覽器Firefox、Chrome、Microsoft Edge、Safari[5]。2017年11月,以上四個瀏覽器都開始實驗性的支援WebAssembly[6][7]。2019年12月5日,在W3C制定《WebAssembly核心規範[8]》後,WebAssembly正式被認證為Web的標準之一[9]。
設計[编辑]
最高指導目標[编辑]
在官方的一個github頁面[10]與說明文件[11]中,闡述了WebAssembly的設計與實作原則,包含:
- 定義一個可移植,具有大小與載入高效率的二進位格式,作為編譯標的。這個編譯標的必須可以被編譯至常見的平台,包含移動端與物聯網,並且可以善用硬體資源、有原生執行碼的執行速度。
- 規格與實作:
- 設計可以執行在現有的網路平台之內以及與之整合:
- 保持無版本問題、特色測試、向後相容的網路平台
- 在與Javascript相同的環境中執行
- 允許從Javascript中同步呼叫
- 強化同源(Same-origin)和安全性權限政策
- 允許瀏覽器存取相同功能的Javascript API
- 定義一個可人工讀取,能和二進位格式互換的純文字格式,以支援查看原始碼
- 設計也可以用於非瀏覽器的嵌入式系統
- 製作大平台
下一階段要實作的特色[编辑]
在2017年推出第一個版本後,同時也列出了下一階段將實作的特色[12][13]
- 制定規格
- 執行緒
- 固定長度的SIMD
- 例外處理
- 垃圾回收
- 記憶體區塊操作
- 網頁內容安全性政策
- ECMAScript 模組整合
- 尾端呼叫
- Non-trapping浮點數-整數轉換
- 多值函數
- Host bindings
官方的宣傳[编辑]
Ending定律[编辑]
Ending定律也称为终结者定律, 它是Ending在2016年Emscripten技术交流会上给出的断言[14]:
所有可以用WebAssembly实现的终将会用WebAssembly实现。
現在這個定律除了 WebAssembly 的支持者用做宣傳之外看不到任何實現的跡象。
參見[编辑]
- ActiveX
- VBScript
- Flash / ActionScript
- Microsoft Silverlight
- Java Applet / JavaFX
- asm.js
- Native Client
其他位元組碼
參考資料[编辑]
- ^ Release 2.0. 2022年6月1日 [2023年2月11日].
- ^ design/Rationale.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始内容存档于2021-03-08).
- ^ design/HighLevelGoals.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始内容存档于2019-06-06).
- ^ Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web. TechCrunch. 2015-06-17 [2015-06-20]. (原始内容存档于2022-04-05).
- ^ Bright, Peter. The Web is getting its bytecode: WebAssembly. Ars Technica. Condé Nast. 2015-06-18 [2015-06-20]. (原始内容存档于2017-03-20).
- ^ 【2018關鍵趨勢1:WebAssembly】主流瀏覽器紛紛支援,網頁飆速成真. iThome. [2018-01-06]. (原始内容存档于2020-05-30) (中文(繁體)).
- ^ 主流瀏覽器都加入了 WebAssembly 支援 – Linuxpilot. www.linuxpilot.com. [2018-01-06]. (原始内容存档于2019-06-30) (中文(臺灣)).
- ^ WebAssembly核心規範 (页面存档备份,存于互联网档案馆)
- ^ World Wide Web Consortium (W3C) brings a new language to the Web as WebAssembly becomes a W3C Recommendation. 2019-12-05 [2019-12-06]. (原始内容存档于2022-04-19).
- ^ WebAssembly High-Level Goals. [2018-01-06]. (原始内容存档于2019-06-06).
- ^ WebAssembly High-Level Goals - WebAssembly. webassembly.org. [2018-01-13]. (原始内容存档于2022-04-22).
- ^ Features to add after the MVP. [2018-01-06]. (原始内容存档于2021-04-01).
- ^ Features to add after the MVP - WebAssembly. webassembly.org. [2018-01-13]. (原始内容存档于2019-05-15).
- ^ Ending定律即将生效!.
外部連結[编辑]
- 官方网站
- WebAssembly Community Group(页面存档备份,存于互联网档案馆)
- WebAssembly Design (页面存档备份,存于互联网档案馆)
- WebAssembly资源精选 - 中文版 (页面存档备份,存于互联网档案馆)
- WebAssembly标准入门 - 人民邮电 (页面存档备份,存于互联网档案馆)
- C/C++面向WebAssembly编程 - 开源图书 (页面存档备份,存于互联网档案馆)
- MDN Web Docs WebAssembly文档(中文版 (页面存档备份,存于互联网档案馆)、英文版 (页面存档备份,存于互联网档案馆))
|
|
|