WebAssembly 周报 #19
入群请至文末
编者按: WebAssembly 继续蓬勃成长,有了更多语言支持、更多工具以及更多的应用案例。
WebAssembly Today
用 Node.js写的高性能且安全的人工智能即服务( AI as a Service) 👩
对于1200万 JavaScript 开发者来说,AI as a Service 意味着在 Node.js 中运行 Tensorflow 模型。做到这点的一种方法是用在 Node.js 里运行的 Rust 和 WebAssembly 替换 Python 本机模块。本文将教您如何使用 Rust、 WebAssembly 和 Tensorflow 实现作为 web 服务的人脸检测。
Emscripten 2.0.4 发布,支持 Bazel 👏
Emscripten 2.0.4 本周发布了。新性能:
- 是支持 Bazel 的第一个版本。
- 停止了默认包含
malloc
和free
。如果您需要从 JS 访问它们,则必须使用-s EXPORTED_FUNCTIONS=['_malloc', ..]
手动导出。 - 停止在
-O1
中运行 Binaryen 优化。这使得-O1
构建得稍微大一些,但是它们编译得更快,这在“有妥协的”构建(在-O0
和适合发布构建的更高优化级别二者之间)中更有意义。 - 添加
ERROR_ON_WASM_CHANGES_AFTER_LINK
选项,如果连接后我们需要在wasm-emscripten-finalize
或者wasm-opt
中执行任何工作,则添加 ERROR on wasm changes after _ link 选项。这可以验证链接是达到最快速度,也不做 DWARF 重写。
Blazor 速度更快了 (即便没有 AOT) 👍
Blazor 最近为.NET 5发布了一个新的候选版本(RC)。根据性能 benchmark, .NET 5 的 Blazor WebAssembly 比以前快了2-3倍。性能的提升在于核心框架库和对.NET IL 解释器的优化。值得一提的是,Blazor 在没有使用 AOT 优化的情况下实现了这样的性能。
Python WebAssembly Playground 🐍
使用 Python Playground 在浏览器中运行 Python 代码。你的 Python 代码将被编译成 WebAssembly 并在浏览器中运行。这个在线 IDE 还支持 JavaScript 和 Go。
WebAssembly 赋能的基于浏览器的 FFmpeg 视频转码器 🌎
还记得我们过去写的视频转码器项目吗?该项目最近更名为 modfy.video。它也达到了一个稳定的版本。它的新特性和改进包括以下内容。
- 大幅降低数据使用量(最高25 MB)
- 支持任何格式的视频
- 用 CLUI 完成模组化设计
- 添加文档和 API reference
Decaton 增加来自 Line 团队的实验性的 WebAssembly支持 📱
Line 团队最近分享了他们在服务端 WebAssembly 的经验。想法是支持用户以任何语言编写的 Decaton 处理器。WebAssembly 支持多种语言,并能使用户代码安全运行。
文章第一部分介绍了如何将 WebAssembly 运行时集成到 Java 应用程序中。第二部分讨论了如何扩展 WASI 的 API 和 Rust 的标准库来增加对 socket 的支持。
作者表示, “就 WebAssembly 在浏览器之外的应用而言,我认为它的前景非常光明。”
当我们讨论 WebAssembly 的时候我们在讨论什么? 🤩
开发者 Peter Salomonsen 解释了为什么他想让 WebAssembly 专注于作为一个计算引擎,而不是提供对整个系统(例如UI)的访问权限---- WebAssembly 的价值定位是安全第一。在服务端使用 WebAssembly ,他提出了一个很好的观点:WebAssembly 允许浏览器和服务器之间的代码复用。
用 emscripten 将一个 c + + 游戏引擎移植到web上 🤫
Alex Dixon 讨论了他如何将一个游戏引擎移植到 web 服务器上,以在浏览器中运行 WebGL 游戏。
Low-Level Academy👩🎓
Low-Level academy 将教授 Rust 和 WebAssembly 的系统编程课程。它从网络编程开始。您将在第一节课里学习如何使用 UDP 和 TCP 互联网协议。
Web Assembly 一切的一切 👀
谷歌的 Martina Kraus 在 WebAssembly Live 会议上分享了一个演讲,关于如何优化 WebAssembly 字节码的大小和启动时间。
WebAssembly in Action ✍️
WebAssembly in Action 现在可以免费看了。点击阅读,学习一下什么是WebAssembly 以及它如何运行。
Rust 新闻
Rust 2021: 降低门槛 👂
为了让 Rust 成长,并增加在主流开发者对 Rust 的使用,我们必须降低学习和使用 Rust 的门槛。本文提出了一些建议。
- 安装体验不错——还能提升吗?
- 文档还可以——还能更好吗?更容易被找到?例如,优秀的 Rust cookbook(教程)是否广为人知?它是否能够更新错误处理的最新建议 ?翻译成更多的语言?
- 教程和学习材料是好的——它们可以更好吗?是否有更多针对某一特定领域的视频教程或教程,比如嵌入式编程( embedded programming) ?
- 编译器报错还行——可以更好吗,就像最近的 PR 显示的那样?
- 5.编译时间( Compile times )和 IDE 体验已经改进——还能继续改进吗?我们能否得到一个快速的调试后端( fast debug backend ) ,以进一步提高生产力?
有什么理由不选 Rust 🦀
Go 和 Rust 语言之间的战争正在升温,好消息是 WebAssembly 全都支持!小孩子才做选择!
Dropbox 将 protobuf codegen 开源 🚀
Dropbox 开源了 pb-jelly
,一个为 Rust 开发的 protobuf 代码生成框架。目前 Dropbox 的几个模块都在使用这个软件,包括 Sync Engine 和 Magic Pocket。
Bevy 0.2 发布 🌅
Bevy 0.2 发布了。我们在之前已经介绍过这个简单的数据驱动游戏引擎。
新特性:
- 异步任务系统。CPU 占用率非常高。
- 使用 WebAssembly 支持初始 Web 平台。
- 并行查询
- 重写转换系统
- 支持游戏手柄/游戏键盘
- 改善 Bevy ECS 的性能
科学中的Rust和不断变化的要求 🦀
从不断变化的需求中比较 Rust 和 Python,包括可读性、可测试性、反馈和工具链。
Serverless
Serverless: 我已经不是宝宝啦 🦄
这篇文章内容丰富,我们将从这篇文章中对无服务器有一个全面的了解,它包含:
- 无服务器的概念,
- 如何对无服务器分类,
- 无服务器相对于虚拟机的优势,
- 无服务器容器和无服务器函数的区别,
- 如何扩展无服务器函数。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。