Skip to Content
WebAssembly:权威指南
book

WebAssembly:权威指南

by Brian Sletten
May 2025
Beginner to intermediate
334 pages
4h 29m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from WebAssembly:权威指南

第 17 章 WebAssembly 和语言 WebAssembly 和其他语言

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

如果你用一个人听得懂的语言与他交谈,那会深入他的内心。如果你用他自己的语言与他交谈,那会深入他的内心。

纳尔逊-曼德拉

我们的故事即将结束,至少现在是这样。我们已经看到了 WebAssembly 在使用案例、语言和平台集成、托管环境等方面的广泛应用。要想在这个令人兴奋的新平台上提高工作效率,开发人员需要做出很多选择。一些语言及其相关运行时与 WebAssembly 配合得很好,而另一些则不然,这其中也有具体的原因。缺乏垃圾回收和良好的线程支持是自 MVP 诞生之初就存在的障碍之一,但这两个问题正在逐步得到解决。

正如我们在第 12 章中所看到的,这些限制和其他限制已经得到了很好的理解,并且越来越多地出现在各种主机和运行环境中。未来的前景是光明的,开发人员可能会使用的任何语言都会得到更广泛的支持。所以,如果你喜欢的语言还没有得到支持,请打起精神来,我相信用不了多久就会得到支持。

尽管如此,我们将在本章中讨论许多其他流行语言,甚至是新兴但仍略显小众的语言,它们也有一些渐进的努力、部分的解决方案和正在进行中的工作。我并不是说这些都可以取代那些支持较好的语言,但也许它们的出现会让我们看到一个更加光明的多语言 WebAssembly 的未来。正如曼德拉在开篇语录中所说,我们可以理解多种语言,但我们喜欢使用自己的语言。

TinyGo

正如我在第 10 章中提到的,,我最初是被 Go 作为系统语言来取代 C 和 C++ 所吸引的,因为它的语法简洁、与 Unix 和 Plan 9 的联系,以及 Rob Pike 和 Ken Thompson 的参与。当它在支持 WebAssembly 方面落后于 Rust 时,我的注意力就减弱了,但我一直期待着缩小差距的那一天。虽然我们还没有做到这一点,但由于一个名为TinyGo 的新变种,我们离目标越来越近了。这个项目并不是专门针对 WebAssembly 的,但它基于基于 LLVM 基础架构构建的新 Go 编译器,开放了 WebAssembly 作为后端。

TinyGo 常见问题解答中,我们可以看到它是一个基于标准库(因此具有可移植性,并得到 Emscripten 和 wasi-sdk 等各种 WebAssembly 工具的良好支持)和 LLVM 的可重用优化支持的解析器。除此以外,常见问题还指出它还包括编译器本征(协助优化的规则)、内存分配器、调度程序、重新实现的常用包以及对字符串操作的支持。

TinyGo 的 "Tiny "部分是希望针对传统 Go 编译器不支持的微控制器。如果没有 LLVM 的分层架构,在后端添加这种支持对许多开发者来说都是得不偿失的麻烦事。LLVM 改变了工作量,因此带来了各种新的可能性。普通 Go 工具链的另一个问题是,它产生的二进制文件较大,也不适合嵌入式系统和微控制器。解决这些问题的组合恰好能很好地支持 Go 到 WebAssembly 的路径,这条路径很可能会继续结出硕果,并让 Go 可以以这种方式使用。

鉴于 Rust 和 Go 在很多人的脑海中属于同一个空间,而且 Rust 也有意利用其基于 LLVM 的工具链瞄准嵌入式系统,因此常见问题继续将 Go 作为一种选择,因为它的学习曲线确实较浅。此外,它还通过 goroutines 和通道支持独立于线程实现的并发性,并拥有丰富的标准库。在 Rust ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

金融人工智能:用Python实现AI量化交易

金融人工智能:用Python实现AI量化交易

Yves Hilpisch

Publisher Resources

ISBN: 9798341659155