首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏QQ音乐技术团队的专栏

    WebAssembly

    简介 WebAssembly是由Mozilla、谷歌、微软和苹果共同开发的一种面向Web的二进制格式。 该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中。 ? 最后这四家公司联起手来搞了个WebAssembly。现在主流的浏览器已经开始尝试支持WebAssembly。 由于WebAssembly支持的浏览器还少,首先我们需要获得一个支持WebAssembly的浏览器 Chrome最新版或者Chrome Canary中启用chrome://flags/#enable-webassembly https://webassembly.github.io/demo/

    3.7K70发布于 2018-01-31
  • 来自专栏面向人生编程

    认识 WebAssembly

    起源 WebAssembly 起源于 Mozilla 员工的一个业余项目。 对于像函数指针这样存储在 Table 段中的项目,WebAssembly 模块也不能直接访问。代码会用索引值向WebAssembly框架提出访问某个项目的请求。 正如 WASM 官方的口号:“所有可以用 WebAssembly 实现的终将会用 WebAssembly 实现”,WebAssembly 的最终目标是用任何语言编译而来并可以高效运行在任何平台。 参考资料 WebAssembly原理与核心技术 WebAssembly实战 标准化中的 WASI:在 web 之外运行 WebAssembly 的系统接口 创建并使用 WebAssembly 模块 WebAssembly | MDN

    2.2K20编辑于 2022-02-26
  • 来自专栏Web行业观察

    认识 WebAssembly

    WebAssembly是什么? 而WebAssembly可以将现有的用C,C++编写的库直接编译成WebAssembly运行到浏览器上, 并且可以作为库被JavaScript引用。 这是WebAssembly最为吸引人的特性。并且WebAssembly是运行于沙箱中,保证了其安全性。 为什么要有WebAssembly? 现在你已经能在这些浏览器中使用WebAssembly了。 WebAssembly这么快,但并不意味着JavaScript这门语言要从此绝迹了。 几个大厂同时投入到WebAssembly的开发中,相信不久WebAssembly就会成为一种浏览器网站&应用的通用优化技术。

    1.5K40发布于 2018-12-12
  • 来自专栏windliang的博客

    WebAssembly入门

    历史 上边我们知道了 WebAssembly 的 Assembly ,即汇编,也就是指令集。下边在回顾下 Web,即 WebAssembly诞生的原因。 WebAssembly 接下来看一下 WebAssembly 的历史。 2015 年 4 月,WebAssembly Community Group 成立; 2015 年 6 月,WebAssembly 第一次以 WCG 的官方名义向外界公布; 2016 年 8 月,WebAssembly 这里采用了webassembly+AI的前端整合。 webassembly 负责读取本地视频,生成图片; tensorflow.js 负责加载AI训练过的 model,读取图片并打分。 /) [WebAssembly: another JVM?]

    1.3K31编辑于 2022-08-20
  • 来自专栏前端知知

    浅谈WebAssembly

    前言 1.定义 WebAssembly 是一个可移植、体积小、加载快并且兼容 Web 的全新二进制格式;可以通过C/C++/Rust等静态语言编译生成,后缀名为.wasm;可以通过Web API在浏览器中加载 4.应用场景 WebAssembly 的出现,并不是为了取代JavaScript。 现在已经有线上项目比如视频剪辑、游戏、md5计算等相关应用在线上使用,一个实际的例子,VE云剪辑就是 Worker + WebAssembly的应用。 5.最后 本文简述WebAssembly的定义,使用和性能,因为业务场景有限,笔者还并未用在实际项目中,如果你已经在使用了,欢迎留言沟通交流呀。 参考资料 [1]官网: https://webassembly.org/ [2]应用场景: https://www.techug.com/post/webassembly-application-example.html

    93120编辑于 2022-09-29
  • 来自专栏CNCF

    WebAssembly简介

    作者:Marco Fioretti WebAssembly到底是什么? WebAssembly的1.0版本于2017年发布,并于2019年成为W3C官方标准。 但是… 如果JavaScript代码包含一个WebAssembly模块的实例,就会像上面解释的那样获取该模块,然后根据需要通过WebAssembly API由JavaScript使用 当WebAssembly 如何创建可用的WebAssembly代码? 越来越多的编程语言社区支持直接编译到Wasm,我们建议从webassembly.org的入门指南[4]开始,这取决于你使用的是什么语言。 参考资料 [1] WebAssembly: https://webassembly.org/ [2] “浏览器内”用例: https://webassembly.org/docs/use-cases/

    1.5K10发布于 2021-03-15
  • 来自专栏webassembly

    WebAssembly介绍

    1.2 安全WebAssembly 运行在一个沙箱化的执行环境中,甚至可以在现有的 JS 虚拟机中实现。在web环境中,WebAssembly将会严格遵守同源策略以及浏览器的安全策略。 1.4 标准WebAssembly 在 web 中被设计成无版本、特性可测试、向后兼容的。 当然,WebAssembly 不仅可以运行在浏览器上,也可以运行在非web环境下。2. 开发者引导2.1 前置准备接下来,我们试着将一个简单的程序编译成 WebAssembly。 编译第一个程序现在,一个完整的工具链已经准备好了,可以试着将一个简单的程序编译成 WebAssembly。 图片至此,第一个 WebAssembly 程序则编译成功了!

    1.5K50编辑于 2022-11-29
  • 来自专栏进击的全栈

    Webassembly初识

    为何会出现webassembly? javascript自从被创造开始就吐槽不断,它确实也埋下了不少的坑。 除了激进浏览器,在主流版本里开启 flag 也是可以使用 WebAssembly 的: Chrome: 打开 chrome://flags/#enable-webassembly,选择 enable。 大家可以用一下代码试试自己的浏览器是否支持webassemblyWebAssembly.compile(new Uint8Array([0,97,115,109,1,0,0,0,1,140,128, 将模块对象转成 WebAssembly 实例 const instance = new WebAssembly.Instance(module) //通过 instance.exports 可以拿到 resolve方法的参数module模块对象即为WebAssembly.Module的实例;使用 WebAssembly.Instance 将模块对象转成 WebAssembly 实例(第二个参数可以用来导入变量

    1.3K50发布于 2019-03-18
  • 来自专栏向治洪

    WebAssembly简介

    WebAssembly, 简称WASM, 是一种以安全有效的方式运行可移植程序的新技术,主要针对Web平台。 WebAssembly程序剖析 实际上,称之为“模块(module)”,是因为使用WebAssembly并没有“程序”和“库”之间的区别,只有“模块”,彼此之间可以搭配,亦可通信,每个“模块”都有“main JavaScript API 由于“WebAssembly”在其名称中带有“Web”提示,第一个有用的WebAssembly平台是最流行的Web浏览器的最前沿版本:Chrome,Firefox, Safari 在撰写本文时,需要通过浏览器的高级设置启用WebAssembly。 在Chrome中,设置位于“flags”(chrome://flags/#enable-webassembly)下。 ast 为完整的WebAssembly规范提供了一个完整的TypeScript类型系统,并为WebAssembly模块的所有部分提供了构造函数。

    2.3K30编辑于 2022-11-30
  • 来自专栏前端萌媛的成长之路

    WebAssembly分享

    什么是WebAssemblely WebAssembly是一种运行在现代网络浏览器中的新型代码并且提供新的性能特性和效果。 不破坏网络--WebAssembly的设计可以很好地与其他网络技术搭配使用,并保持向后兼容性。 通俗的来讲,WebAssembly就是一种新的字节码格式,将其他代码变成底层的机器码,让代码运行的更快 什么是WebAssembly “沙盒”技术与主动防御技术原理截然不同。 WebAssembly.Moudle 将WebAssembly.Module用import 实例化以获取可调用的export 知乎 JIT 博客 在线例子 为什么它的效率快 参考链接 总结 1. 参考链接: WebAssembly官网 Emscripten官网 MDN

    3.3K61发布于 2018-06-13
  • 来自专栏黯羽轻扬

    WebAssembly试玩

    Web能力越来越强大,客户端JS越来越重,进一步提升JS执行性能的需求仍在,所以才有了WebAssembly的釜底抽薪 二.wasm与wast 我们知道WebAssembly定义了一种二进制格式,这种格式就是 :规范定义 WebAssembly – JavaScript | MDN:含有示例 另外,本地编译得到的版本要求imports env(而且函数名被添了下划线_前缀): WebAssembly.compile WebAssembly 字节码技术? WebAssembly:解决 JavaScript 痼疾的银弹? WebAssembly,Web的新时代 Can WebAssembly be polyfilled? wasm-arrays:WebAssembly数组包装库

    1.4K50发布于 2019-06-12
  • 来自专栏Super 前端

    WebAssembly 小 Demo

    WebAssembly 被设计为可以和 JavaScript 一起协同工作 — 通过使用 WebAssembly 的 JavaScript API,你可以把 WebAssembly 模块加载到一个 JavaScript 安全: WebAssembly 运行在一个沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机中实现。在web环境中,WebAssembly 将会严格遵守同源策略以及浏览器安全策略。 关键概念 WebAssembly 如何在浏览器中运行,需要了解几个关键概念,这些概念都是一一映射到了WebAssembly的JavaScript API中。 Memory与Table区别: WebAssembly Table 是一个可变大小的带类型(唯一合法的是函数类型)的引用数组,其中的引用可以被 JavaScript 和 WebAssembly 代码存取 当前唯一的方式就是创建一个包含你的 WebAssembly 模块二进制代码的 ArrayBuffer 并且使用 WebAssembly.instantiate() 编译它。

    3.2K20发布于 2020-12-18
  • 来自专栏Super 前端

    WebAssembly 小 Demo

    WebAssembly 被设计为可以和 JavaScript 一起协同工作 — 通过使用 WebAssembly 的 JavaScript API,你可以把 WebAssembly 模块加载到一个 JavaScript 安全: WebAssembly 运行在一个沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机中实现。在web环境中,WebAssembly 将会严格遵守同源策略以及浏览器安全策略。 关键概念 WebAssembly 如何在浏览器中运行,需要了解几个关键概念,这些概念都是一一映射到了WebAssembly的JavaScript API中。 Memory与Table区别: WebAssembly Table 是一个可变大小的带类型(唯一合法的是函数类型)的引用数组,其中的引用可以被 JavaScript 和 WebAssembly 代码存取 当前唯一的方式就是创建一个包含你的 WebAssembly 模块二进制代码的 ArrayBuffer 并且使用 WebAssembly.instantiate() 编译它。

    1.9K20发布于 2021-08-30
  • 来自专栏流媒体技术

    WebAssembly 技术汇总

    官方网站 https://webassembly.org/ 要点 文件格式(wasm,wast/wat,asm.js) 编译(emscripten) 编程语言(C/C++、Rust、Golang、Javascript 、Typescript) 执行环境(browser、node.js、kernel) Mozilla 开发的在线IDE,支持Rust、C、Wat开发WebAssembly WebAssembly Studio 在线编译C到wasm WasmFiddle wasm格式 wasm是WebAssembly的二进制字节码,后面将直接用wasm来指代WebAssembly。 可以 使用工具将wasm转换成wast/wat格式 https://webassembly.github.io/wabt/demo/wasm2wat/ Asm.js emscripten 不加参数-s }); Node.js中使用 const fs = require('fs') const wasmFile = fs.readFileSync('test.wasm') WebAssembly.instantiate

    1.4K10编辑于 2022-07-28
  • 来自专栏云云众生s

    WebAssembly终极指南

    WebAssembly 组件在运行在 WebAssembly 模块内部的运行时部署中发挥着关键作用。然而,其标准化仍在进行中。 译自 What Is a WebAssembly Component? The Ultimate Guide,作者 B. Cameron Gain。 什么是 WebAssembly 组件? WebAssembly 组件在运行时位于 WebAssembly 模块内部的运行时的部署中起着关键作用。但其标准化仍在制定中。 与此同时,关于组件是什么以及它如何影响 WebAssembly 的采用,存在很多困惑。 WebAssembly 和组件如何协同工作? 虽然它被配置为针对任何遵循标准的模块执行此操作,但这个标准仍在进行中,代表着 WebAssembly 旅程的最后一英里。 目前,组件开发在开源社区推进 WebAssembly 的努力中发挥着关键作用。

    51310编辑于 2024-03-28
  • 来自专栏coding个人笔记

    WebAssembly 基本了解

    什么是 WebAssembly WebAssembly 也简称 wasm,是以.wasm 结尾的文件。 于是,跳过编译可以直接运行的 WebAssembly 就诞生了,WebAssembly 是浏览器可以识别的更底层的语言。 WebAssembly 不是具体的开发语言,而是各个语言编译成 WebAssembly,然后运行在浏览器内置的 wasm 虚拟机中,除了运行在浏览器,WebAssembly 也能运行在很多地方,是一种新的二进制指令集格式 WebAssembly 的灵魂工具不为过,WebAssembly 的前身都是因为 Emscripten 而诞生。 WebAssembly 会在未来扮演很重要的角色。

    3.3K10编辑于 2024-04-29
  • 来自专栏Rust 编程

    WebAssembly 动态 | WebAssembly 的发展风险及Wasmtime 1.0 性能概览

    本篇文章关注 WebAssembly 的相关动态。 Fermyon | WebAssembly 的风险 今早看到来自 fermyon 官方博客的文章[1],介绍了 WebAssembly 现存的一些风险和他们的应对方法: 标准化进展非常缓慢。 Fermyon 认为前 20 种语言中至少有 15 种必须完全支持 WebAssembly 以及 WASI 和组件,才能正确地认为 WebAssembly 被很好地采用。 “Fermyon 的愿景是,在五年内,WebAssembly 将成为常态,而不是小众市场。新一波应用程序将能够利用 WebAssembly 的速度、安全性和组件模型。 Wasm 模块实例化 WebAssembly 之所以安全是因为wasm 模块每个实例与生俱来的隔离性。

    1.5K20编辑于 2022-12-08
  • 来自专栏Avalonia

    如何优化线上WebAssembly

    如何优化线上WebAssembly WebAssembly部署使用 HTTPS : 为什么? Storage Api 文档 当中介绍到Cache Storage限制使用问题: 原文: 图片 翻译: 图片 当中介绍到Cache Storage接口限制仅在HTTPS中使用,如果使用HTTPS部署WebAssembly 项目第二次加载无需加载程序集,只需要等待WebAssembly预热完成,基本上在1.5s左右(因电脑而已 i7 11代CPU测试,因为WebAssembly会使用本机性能所以会因为电脑性能导致加载时间过长 ) 优化第一篇参考: 如何将WebAssembly优化到1MB?

    65920编辑于 2023-02-28
  • 来自专栏咩嗒

    WebAssembly探索之旅

    (wasmSource); const wasmInstance = new WebAssembly.Instance(wasmModule, { env: { } }); const 原来WebAssembly(1.0)只有四种类型:int32,int64,float32,float64,而指针,在wasm32用int32表达,代表的是线性内存偏移,我们在allocStr后加两行代码验证下 (fooWasmSource); const fooWasmInstance = new WebAssembly.Instance(fooWasmModule, { env: { (wasmSource); const wasmInstance = new WebAssembly.Instance(wasmModule, imports); wasiInstance.start } Output: { message: 'Hello, WebAssembly!' } c函数作为setTimeout回调 这里需要用到另一个引用类型:funcref。

    81530编辑于 2023-07-09
  • 来自专栏杰的记事本

    WebAssembly的初步了解

    使用WebAssembly,可以更快地在 web 应用上运行代码。这里有 几个 WebAssembly 代码运行速度比 JavaScript 高效的原因。 文件加载 – WebAssembly 文件体积更小,所以下载速度更快。 那么就可以把其中对图片进行压缩、解压缩、处理的工具,用C++实现,然后再编译回WebAssemblyWebAssembly的几个开发工具 AssemblyScript。 可以说是WebAssembly的灵魂工具不为过,上面说了很多编译,这个就是那个编译器。将其他的高级语言,编译成WebAssembly。 WABT。 WebAssembly的意义 在我的个人理解上,WebAssembly并没有要替代JavaScript,一统天下的意思。我总结下来就两个点。

    1.1K20发布于 2019-09-18
领券