编者按:本周最大的新闻是 Mozilla 的裁员新闻。Mozilla 团队是 WebAssembly 和 Rust 的创造者,是 WASM 与 Rust 社区的主要贡献者之一。不幸的是, Mozilla 本周解雇了250名员工,其中包括开发 Rust 和 WebAssembly 的备受尊敬的工程师。这将如何影响我们的社区呢?令人欣慰的是,这些有才华的前 Mozilla 员工极有可能把 Rust 与 WebAssembly 带到新的地方。
WebAssembly
Mozilla 裁员极其对 Rust 和 WebAssembly 社区的影响
Mozilla 宣布裁员250人(约占员工总数的四分之一) ,并重新聚焦在开发技术和产品上。因为 Mozilla 是 Rust 和 WebAssembly 的发明者,所以裁员的消息引起了 Rust 与 WebAssembly 社区的热烈讨论。我们注意到,一些优秀的 Rust 和 WebAssembly 技术专家被解雇了。特别是,下面几个团队受到了影响:
- Servo 浏览器引擎团队,正是这个项目孕育了 Rust 语言。
- WebAssembly 团队,包括 Cranelift 和 WASI 开发者。
- MDN 文档团队。
- 火狐开发者工具团队。
从积极的方面来看,Mozilla 确实表示,这次重组的部分目标是重新关注新的技术,比如服务器端的 WebAssembly。
Mozilla 的 250位杰出的技术专家很快就能找到新的工作,这一点毫无疑问。我们希望他们的新工作仍然允许他们能够贡献 Rust 和WebAssembly 。祝他们好运!Mozilla 救生艇网站( Mozilla lifeboat web site)对于每个受此影响的人来说都是一个很好的资源。
进一步的信息
- 开发者Matthew MacDonald 写了一篇文章,介绍了 Mozilla 对现代软件技术的贡献以及最近削减开支的影响。Rust 和 WebAssembly 是 Mozilla 传奇技术皇冠上的明珠。我们有充分的理由相信,这两个社区将继续蓬勃发展。
- 裁员之后,Mozilla 宣布 已经与谷歌签订了一个协议,Mozilla 在未来5年的每一年都将从谷歌得到 4 亿美金。 这使得裁员的举动更加令人费解。在裁员之前,Mozilla 每年花费大约3亿美元。所以肯定钱是够花的。
浏览器之外的 WebAssembly
WebAssembly 再次在浏览器之外发力!开发者 Alexandru Ene 写了一系列WebAssembly 在浏览器之外的 host 和前端 UI 应用教程。
他列举了一些能在浏览器之外的 WebAssembly 中受益的用例场景:
- 需要用户级定制的视频游戏或类似应用脚本语言。
- 以最小的开销运行一些代码,比如 Fastly/Cloudflare 处理边缘计算的场景。
- 在物联网设备上安全地运行一些易于更新的代码,并且运行时开销最小。
- 在无法执行 JIT 的环境中执行极其快速的程序。
你怎么认为呢?
Stateful WebAssembly 函数
WebAssembly 定义一个虚拟的 “CPU”, 但这不是长久的存储 (“硬盘”)。 因此 WebAssembly 函数和程序本质上是 transactional 的,是无状态的。但这种情况一去不复返了! Second State WebAssembly 虚拟机 提供了一个类 WASI 的扩展来访问外部的数据库和 object stores。如果有兴趣的话,可以体验这个demo。
用最小的 WebAssembly 虚拟DOM 建立 C++ SPA
asm-dom 项目能够让你在 C++ 中编写整个 SPA (单页应用程序) ,并使用 Emscripten 将其编译为 WebAssembly (或是 asm.js 作为 fallback)。这将产生以本地速度执行的 web 应用程序,并且利用了通用硬件的优势!
asm-dom 还支持服务器端渲染。你可以用 C++ 编写一个服务器端的应用程序,然后用 WebAssembly 在 Node.js 运行这个程序。
一本新的关于 WebAssembly 的书
WebAssembly in Action 介绍了 WebAssembly 堆栈并在书中展示了如何一步步编写和运行基于浏览器的应用程序。本文作者,也是开发者 Gerard Gallant 从基本概念开始,然后讨论了包含模块系统、 HTML 和 CSS、 JavaScript Promises 和 WebAssembly JavaScript API 在内的实用主题。
教程
Rusty 新闻
Rust 写的跨平台应用
Pro 应用程序的开发者 AstroPad 正在从 Objective-C 迁移到 Rust,这样他的产品就可以在 Mac、 iPad 和现在的 Windows 上跨平台工作。
从 Hello World 分析不同语言
这是一篇很赞的关于语言设计的文章。无论是什么编程语言,设计者必须在易用性和控制性之间取得平衡。在 Rust 的例子中,编译器工具链将看似简单的 hello world 示例转换成了对初学者来说很难理解的复杂的 Rust 语句集。其他语言也是如此。本文深入技术,讨论了后台的机制,以及如何为初学者和专家创建更好的编程语言!
Clap: 用小悬赏奖励达成快速开发
Clap 团队宣布了一个赏金计划。任何为 Clap 提出 PR 的人将获得 5美金或10美金作为奖励。Clap 是一个功能全面、速度快的命令行参数解析器。
probe-run, 运行嵌入式 Rust 应用,达到了与运行本地 apps 一样的体验
ferrous 系统团队发布了用于嵌入式开发的自定义 Cargo runner probe-run。有了它,你可以轻松运行嵌入式Rust程序。
特性
- 作为 Cargo runner,集成到 cargo run里面。
- 通过 RTT 显示设备的程序输出流。
- 退出 firmware 并在断点上打印堆栈回溯。
用 Rust 与 iced 搭建的实时图表工具
CryptoWatch 是个用Rust、 iced、glow、wgpu、lyon和 tokio写的实时图表平台,即实时 K 线图。
按照开发团队的测试,CryptoWatch 在一台典型的服务器上运行的 CPU 占用率约为8%-10% ,而在同一台机器上,大多数同类型 web 应用的 CPU 占用率都超过了50% 。
Kosmonaut: 从头用Rust写 Web 浏览器
Kosmonaut 是一个网页浏览器引擎。它使用 Rust 来构建,通过 gl-rs 使用 OpenGL 绑定,使用 Glutin 来进行进行窗口管理,使用 OpenGL 创建上下文,Servo的 html5ever 和 cssparser 来进行 HTML 和 CSS 解析,以及其它各种辅助库。然而,Mozilla Servo 团队最近的动向可能会使这个项目处于危险之中。
Blog
Serverless
The state of serverless art
伯克利大学的 Joe Hellerstein 在本文中介绍了 Cloudburst,一个用于无服务计算的有状态框架。
正如我们之前讨论的,WebAssembly 虚拟机也支持有状态的函数(stateful functions)。
Micronaut 2.0 提升工具配套,增强对无服务和GravvIVM的支持
OCI 最近正式发布了 Micronaut 2.0,一个全栈的基于 JVM 框架的主要发行版,该框架使用 Java、 Groovy 和 Kotlin 等语言,帮助创建基于微服务、云原生、无服务的应用程序。
入群请加
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。