如果你去看[webhooks 第一次演讲],它始于命令行。具体来说是从 Unix shell 开始,专注于它的一个标志性特点:管道。管道为程序组合性带来了新的层次,而 webhooks 可以将这种组合性带入 web 应用。也许可以说,我正试图将 Unix 的精神带入 web 世界。
随着这次Wanix最新版本的发布,我又来了。这次轮到一个鲜为人知的操作系统,叫Plan 9,来自Bell实验室。
Plan 9 这个概念在我脑海里已经萦绕了很久。事实上,在第一次提到webhooks的时候,Unix 和 Plan 9 的团队正在重组来创建 Go 编程语言。我立刻就爱上了 Go 的世界观,这实际上源自从 Unix 和 Plan 9 继承而来的简约性、务实性、经济性以及最终的组合性价值观。
就像 Unix 一样,Plan 9 主要是为程序员和系统管理员设计的。关于 Plan 9 为何出色的详细解释留到另一篇文章再说。在 Wanix 的演示视频里,我稍微提了一点。
尽管我一开始就想将Plan 9的理念融入Wanix中,但直到我们从零开始重建Wanix并以此为目的,那种魔力才真正显现。这就是我们发布这个预览版的目的。
Wanix 现在完全是一个全新的存在。它不再是仅仅运行在浏览器里的单一计算环境。它现在是一个构建环境的基础工具。演示中展示了一个 shell 环境,但这并不是重点所在。这只是帮助你以互动方式使用和探索 Wanix 的一种入门方式。
这个预览版本的目的是将这个初步版本发布出去。我有一些使用 Wanix 的用途,并计划在最终版本中与大家分享,但在那之前,我想让它沉淀一段时间。也许可以激发人们用各种方式来使用 Wanix。
这里有个Wanix功能的简要概述,在这次发布中:
受 Plan 9 启发的设计理念
为了在现代平台上探索Plan 9的理念,我们最终设计出了一种极简架构,该架构围绕进程命名空间,这些命名空间包含使用与Plan 9相似设计模式的文件服务能力组成。
一个可以直接运行的工具包
wanix
可执行文件包括了创建 Wanix 环境所需的所有东西。
文件系统就是那个唯一的 API
现在的Wanix微内核只是一个VFS模块,通过标准文件系统API提供几个内置文件服务。这样一来,这个模块本身也成了一个文件服务。
自带的 Linux shell
利用内置的文件服务原语,Wanix 可以启动一个基于 Busybox 的与 Linux 兼容的 shell 环境。它自带了一些辅助命令,帮助您更好地利用内置文件服务。
任务和命名空间
Wanix的计算单位是一个任务,任务等同于且兼容POSIX进程,但允许采用不同的执行策略。每个任务都有其独一无二的“命名空间”,这是一个可自定义的文件系统,仅供任务使用。
核心文件功能
Wanix 包含两个单一实例文件服务:一个用于管理任务的服务(类似于 Linux 中的 procfs),另一个用于管理“能力”,这些能力是用户分配的文件服务功能。内置功能包括:tarfs、tmpfs 和 loopback。
网络文件服务
考虑到未来非浏览器部署的需求,我们把所有与网页相关的文件服务打包进一个非核心但内置的网页模块中。这个模块包括一些正在开发中的文件服务。
- opfs : 用于与OPFS浏览器存储API交互
- dom : 用于检查和操作DOM元素
- worker : 用于管理Web Worker
- pickerfs : 通过包装
window.showDirectoryPicker()
方法来提供功能(目前在Safari和Firefox中不可用) - ws : 用于WebSocket连接的
- sw : 用于配置Service Worker,系统现在使用它来缓存所有需要运行Wanix的资源,支持离线使用,并在根命名空间中暴露虚拟URL。
Go 语言程序员也可能会对我们的文件系统工具包感兴趣,该工具包自 Wanix 之前就开始开发。它基于标准库中的 fs.FS
抽象,并提供了类似 DSL 的工具,用于定义如 Wanix 中文件服务那样的虚拟文件系统。更多相关内容请关注我们的专门文章。
到目前为止,反馈都非常正面。感谢大家花时间了解它。还有很多事情要做。Wanix 就像一个独立的宇宙,但它只是 Tractor 项目的一个层面。休整一下后,我将继续在这两个方面工作。一如既往,大家如果有时间帮忙,我会很感激。
说到帮忙,特别感谢Joël Franusic的帮助和支持。一如既往,感谢我的GitHub 赞助者让这一切得以实现。
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章