写点什么

WebAssembly 浏览器预览版收集社区反馈

  • 2016-11-21
  • 本文字数:1064 字

    阅读完需:约 3 分钟

WebAssembly 的开发已经进入浏览器预览阶段,这是标准化路上的一个重要里程碑。

在 Chrome、Edge 和 Firefox 中,用户可以开启一个 WebAssembly 的预览版,它使用 WebAssembly 社区小组过去一直在研发的二进制格式的“候选发布版本”。另外,存在一份开发人员指引,它简要地介绍了用C 语言创建一个WebAssembly 程序、编译并发布结果到浏览器的步骤。

与之前的实验性支持预览版(experimental support preview)不同,本浏览器预览版是浏览器兼容的并且稳定的。浏览器厂商正积极鼓励用户使用它以收集相关反馈。

在微软Edge浏览器预览版的声明中,项目经理Limin Zhu 展示了一个编译后的结果的例子。

例子中,C++ 的阶乘函数

复制代码
int factorial(int n)
{
if (n == 0)
return 1;
else
return n * factorial(n-1);
}

编译成 WebAssembly 之后是这样的:

复制代码
binary | text
20 00 | get_local 0
42 00 | i64.const 0
51 | i64.eq
04 7e | if i64
42 01 | i64.const 1
05 | else
20 00 | get_local 0
20 00 | get_local 0
42 01 | i64.const 1
7d | i64.sub
10 00 | call 0
7e | i64.mul
0b | end

该二进制格式尽管称为候选发布版本,但还不适合生产环境使用,还会发生改动。 WebAssembly 的路线图提前对开发人员作了如下警告:

开发人员应该意识到,在 WebAssembly 的浏览器预览版和公开发布版之间至少将有一个突破性的变更,开发人员需要更新工具链和二进制文件。

工程的当前这个阶段将会在 2017 年第一季度结束,之后将会准备一份规格说明书草案。再之后,厂商将能默认开启这项特性,不再用功能标志(feature flag)隐藏它了。Mozilla 的 Luke Wagner如果计划进展顺利,2017 年3 月份发布的Firefox 52 将默认开启该特性。

值得注意的是,苹果和基于WebKit 的Safari 浏览器明显不在该浏览器厂商之列。该公司尽管一直很低调,但是也在研发该特性 Brendan Eich 说“在苹果发布之前,关于苹果的一切进展都是推测”,但是“苹果热衷于 WebAssembly,一切看起来都在正轨上”。WebAssembly 社区小组的谷歌代表兼联合组长 Ben Titzer苹果确实“派遣了代表参加我们举办的面对面峰会”,“他们确实好像已经开始研发实现了,但是我们应该谨慎,不要曲解或者过度解读”。

查看英文原文: https://www.infoq.com/news/2016/11/webassembly-browser-preview


感谢足下对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-21 18:001721
用户头像

发布了 33 篇内容, 共 11.4 次阅读, 收获喜欢 10 次。

关注

评论

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

聊聊 Python 自动化脚本部署服务器全流程(详细)

星安果

Python 自动化 服务器 部署

GO训练营第8周——分布式缓存与事务

Glowry

(28DW-S8-Day27) 销售流程重整

mtfelix

28天写作

Wireshark 数据包分析学习笔记Day15

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

手机

ES_her0

28天写作 3月日更

Go训练营第5周——评论系统架构设计

Glowry

B+树索引优点

一个大红包

3月日更

后台产品导航栏原型设计小教程

lenka

3月日更

Python 的特殊变量 __name__

HoneyMoose

经典排序算法分析

roseduan

算法 排序算法

mybatis实现分页的几种方法

xiezhr

mybatis 分页 mybatis分页

算法攻关-最长公共子序列_1143

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 最长公共子序列

GO训练营第9周——网络编程

Glowry

epoll源码分析以及在Redis中的实现

Linux服务器开发

redis 后端 epoll web服务器 Linux服务器开发

filecoin云算力软件开发|filecoin云算力APP系统开发

系统开发

"无密码时代"已经来临!

龙归科技

身份认证

filecoin挖矿软件开发|filecoin挖矿APP系统开发

系统开发

收藏!这些IDE使用技巧,你都知道吗

xcbeyond

IDEA 技巧 3月日更

产品经理训练营 Week9 学习心得

Mai

如何评估需求优先级?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

uni-app跨端开发H5、小程序、IOS、Android(二):开发工具HBuilderX使用技巧

黑马腾云

微信小程序 uni-app App 3月日更 Hbuilderx

github 这样用,事半功倍

hepingfly

Java GitHub 搜索 使用技巧

打卡学习VBA和PYTHON week01

小怪兽

IT蜗壳教学

DCache 分布式存储系统|Set, ZSet 缓存模块的创建与使用

TARS基金会

nosql 缓存 分布式 MySQL 高可用 TARS

filecoin矿机系统开发|filecoin矿机软件APP开发

系统开发

低代码/无代码,作为IT开发界的“新英雄”它究竟有何神技?

优秀

低代码 无代码开发

JDBC—往MySQL中写入Blob数据时,出现错误:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5724349 > 1048576)

打工人!

Java MySQL JDBC Blob

容器 & 服务:Kubernetes扩容

程序员架构进阶

Docker 容器 kubernete 28天写作 3月日更

翻译:《实用的Python编程》06_04_More_generators

codists

Python

产品经理训练营 Week9 作业

Mai

GO训练营第6、7周——可用性设计

Glowry

WebAssembly浏览器预览版收集社区反馈_JavaScript_David Iffland_InfoQ精选文章