个人猜想 WebAssembly 的未来
后端语言从未统一,前端语言自从浏览器发展出来后 js 几乎就是唯一的选择。
在此期间产生许多将后端语言转换为 js 的各种库,各种尝试,直到 WebAssembly 出现,给出了一条将其他语言都编译为 wasm ,提供给 js 使用的一条路。
由于前端语言是唯一的,并且我们可以看到历史上不断有需求将其他语言转换为 js ,所以 wasm 必然在这个目标(需求)上成功。
但除此之外,
替代 docker ?各语言没有这个动力(需求),目前的 docker 已经满足了,想要推动这个目标,只有 wasi 相关的几家公司自己发展,就算 wasi 发展完善了,各语言也是要适配的,感觉不太能行,似乎没有希望。
docker 是自己去适应所有语言,其他程序跑在实体机(例如 Linux)与跑在 docker 对于程序自身感受来说,并没有什么明确的区别。
wasi 除非把自己虚拟化成某个 Linux 的发行版,提供与这个系统相同的 api ,否则每种语言适配 wasi 就像适配一个新系统。
webasm 现在最多的需求还是做代码加密,毕竟反编译和调试的工具没有 js 那么牛逼
以前 b 站软解 h265 卡的一笔,webasm 再牛逼也比不上显卡的编解码器,而这玩意对于 native 就是洒洒水
很早以前就侧重 app 了,既然是 app 我干嘛不用 native 直接做呢,除去大量的编解码需求,就那点 js 运算,瓶颈不全在 dom 渲染上,网页精简 50%,你想不流畅都难
没有杀手应用,主要还是用来提升性能
感觉 wasm 还是突出一个方便吧,让 PWA 能做更多的事情,看看能不能早点把 Electron 干掉(
WebAssembly 的另一个雄心壮志是脱离 Web ,就像 WebGPU 、WebRTC 一样,成为可以独立存在的技术。
WebGPU 现在已经发展成一个桌面图形技术栈,有自己的 Shader 语言; WebRTC 也成为 P2P 协议的一种了。这个意义上来说,WebAssembly 其实有替代 JVM 、成为原生应用虚拟机的目标。
像 wasmtime.dev/ 这样的独立 WebAssembly 运行时,已经比较成熟了。只是「一次编译,到处运行」的需求究竟存不存在,还真不好说。
WebAssembly ,大概率绑死在 Web 领域,脱离 Web 意义不大,其它语言拿 wasm 重写一个 runtime ,或者编译到 wasm 意义何在?恐怕还不如 CLR/JVM 或者 llvm/graalvm 靠谱。
楼上提到的,webgpu 。很多人被这个 web 骗了,不管 dawn 还是 wgpu ,都是 native 优先,在 web 上只是一个最小子集
wasm 同样,wasi 在于没有里程碑的应用,各大平台壁垒没那么容易突破,flash 是特例,技术上人家 as 没毛病。vercel 的 serverless function 提供了多语言架构的可能,就是一个项目里多个模块选不同的方案
我做过一个测试,不过有点久了
www.hesudu.com/t/963777
它的 rust 实现就是 wasm 方案,其他语言好像也有这种方式
专业前端谁用 wasm 啊,都是框架。这就是设计给后端用的。
但是后端有那么多语言可选,也未必选 wasm 。
wasm 在 web 外最有力的应用应该是助力插件系统
用 WebAssembly 仅仅是因为有些库已经用其他语言实现了,封装一下给 JS 调用
没啥大的出路。js 那么容易上手, 在加上现在 ai 的辅助, 实在想不出用 wasm 的场景。
没人说 Blazor 吗?
envoy 使用 wasm 做热拔插的插件系统 github.com/proxy-wasm/spec/blob/main/docs/WebAssembly-in-Envoy.md
wasm 有 simd 支持,计算密集部分速率 2~10x ,像 IDCT 计算
wasm 用来做 web app 还是有点想像空间的,像 flutter 目前就在做,还有就是应用接口/插件,应用版的 docker wasi 也算可以,不过现在接口已经有很多,像 http,grpc 都已经很标准了,留下的空间似乎不多
TensorFlow.js 利用 wasm 在手机 WEB 端做一些图像识别的功能,有 simd 加持特别快。就是模型加载需要时间。要是加载也跟 native 一样快就好了。
未来所有大型公司 app 都是一个浏览器 服不服
有没有想过,也许前端本身并不是必须的呢
以至于把其他语言转成 js 也不是个必须的事了
我也觉得 app 应该尽快拨乱反正,改回 native ,不要再套浏览器
浏览器可以写桥接调用 native ,不用 webasm ,pdd 这种还要利用漏洞窃取用户隐私的,webasm 能满足他需求吗
之前写过一个 WebAssembly 的 JIT 编译运行时
github.com/partic2/pwart
但是有点懒得继续跟进新特性了,后面接着加复杂度那我不如拿 TCC 来改个 C 的运行时,可能还简单一点。
以上是关于我做的 3D Cyberpunk 游戏的 DEMO 演示,如果大家感兴趣,可以关注我的油管频道,我打算抽时间做一系列入门视频教程,从体素建模到 blender 制作…
最近电脑更新了 Win11 系统,一开始办公挺爽的,使用着很舒服,但是到了周末打游戏的时候就不对劲了,登陆 steam 显示:steam 需要联网进行更新,不让登陆,登陆 lo…
客户端是不是很小众的市场呢?干脆先休息一年再说吧,有点累了。 java 连出差都找不到 出差是什么类型的工作? 咨询公司要驻场的那种吗? 学 C#之前,不会先打开 …