EndBASIC 背后技术模块揭秘:若去掉 BASIC 能发展成啥样?

张开发
2026/5/13 17:27:28 15 分钟阅读

分享文章

EndBASIC 背后技术模块揭秘:若去掉 BASIC 能发展成啥样?
EndBASIC 发布及作者思考作者 Julio Merino 在 2026 年 5 月 8 日发布文章此时距离他开始构建 EndBASIC 已过去六年。EndBASIC 是复古风格的 BASIC 解释器可在网页、桌面和嵌入式硬件上运行能编写跨平台应用程序利用图形、云文件共享系统还能通过 GPIO 访问本地硬件。然而作者担忧谁会愿意在已被弃用的语言上开发新东西就连 Visual Basic 也已过时微软将其置于“维护模式”。于是作者思考“如果 EndBASIC 中没有 BASIC 会怎样” 也就是如何利用项目下创建的众多组件构建出人们真正想用的东西。EndBASIC 中 BASIC 部分的情况实际上项目中的 BASIC 部分即语言解析器和编译器是最不有趣的。作者编写的 BASIC 解释器目前其方言提供的功能有限增加功能也不会让项目更酷或更有用例如记录和文件功能添加它们不会让项目有质的提升。EndBASIC 背后的构建模块BB1纯编译器和虚拟机EndBASIC 的核心是“纯”语言内核有相对简单、尚未优化的编译器和配套虚拟机。该虚拟机可通过原生 Rust 绑定扩展并能嵌入 Rust 程序。利用核心语言实现命令式 DSL 甚至动态配置文件很容易。这里的“纯”指核心语言作为独立 crate 实现依赖极少无函数或命令定义。默认情况下虚拟机执行的程序无副作用只能计算值可能基于主机注入的全局变量。核心 crate 使用者负责实现使语言有用的函数和命令基本原语如 PRINT 或 INPUT 不是核心语言的一部分这在编译器实现中带来了一些困难但这是为保持核心简洁的设计选择。BB2便携式控制台框架在 EndBASIC 的图形绘制命令之下有一组 Rust 原语用于与可能是图形化的控制台进行交互。如今这个控制台可在多种环境中运行包括通过 crossterm 库在基于文本的 Windows 和类 Unix 终端上运行通过 SDL 库在 Windows 和类 Unix 系统包括 macOS 和 Linux上提供原生桌面图形支持通过 HTML5 画布在网页浏览器中运行通过 NetBSD wscons 帧缓冲器在 “开机即进入 EndBASIC” 的环境中运行在 ST7735s LCD基于 SPI 的 LCD上运行。对于所有图形后端这些 Rust 原语为常见形状提供了一致的基本光栅化算法并支持不同的位图字体。BB3抽象虚拟文件系统EndBASIC 的文件操作背后是一个 Rust 库它实现了基于虚拟驱动器的文件系统驱动器有多种实现方式。目前驱动器可由内存像 RAM 磁盘、硬编码在二进制文件中的一组只读文件、主机文件系统中的单个目录、浏览器的本地存储、云服务支持。云服务驱动器由 EndBASIC Service 支持提供简单 REST API 用于文件访问和修改。存储在这个驱动器中的文件可以是用户私有的也可与特定用户共享或公开。BB4嵌入式磁盘映像构建器[EndBOX]由精简到最少组件的 NetBSD 基础系统驱动该系统能在设备通电后几秒内启动到图形应用程序。系统映像设计使得在 Windows 和 macOS 主机上轻松访问配置文件和用户数据成为可能用户无需访问内部的 NetBSD 操作系统就能调整系统和进行备份NetBSD 只是对映像用户不可见的实现细节。这个平台配有一组自定义的强大构建脚本协调从源代码编译 NetBSD并交叉编译使用前面提到的控制台框架的 Rust 应用程序然后将交叉编译后的二进制文件打包到映像中并在启动过程早期启动它。可将其看作 [buildroot]的简单版本但基于 NetBSD且明确针对为嵌入式设备创建特定应用程序的映像。此外平台提供 RPC 机制和特权守护进程用于为特定操作提升权限还有守护进程可选择收集已部署设备的完全匿名遥测数据如版本号、主机架构和正在使用的图形设备。利用构建模块的可能方向在阅读上述四个构建模块时可能会想到利用这些组件的方法而不一定保留 BASIC 方言。作者关于该项目可能发展方向有以下想法继续完善 BASIC 语言EndBASIC 本身是有趣的项目为其添加更多功能并构建复古环境会带来乐趣但作者之后会质疑其意义。用真正的语言取代 BASIC进一步开发 BASIC 方言不特别有趣若能基于人们现在喜欢使用的真正语言获得与 EndBASIC 相同的复古、跨平台体验呢Lua 是有力竞争者LISP 或 Scheme 也有可能。专注于核心作者喜欢拥有可扩展以形成 DSL 的纯编译器和虚拟机的想法且它们用 Rust 编写。但世界上已有无数种语言从一开始就追求这个感觉像是死路作者甚至不确定这意味着什么。基于 BSD 的 buildroot 替代方案buildroot 可行但基于 Linux 会带来相关问题缺乏凝聚力。而 EndBASIC 背后的平台对嵌入式磁盘映像有自己的设计理念并提供基本服务来执行安全原则、保护隐私和提高性能。若编写利用作者的控制台和文件系统抽象原语的 Rust 原生程序并将其轻松部署到嵌入式设备上作为 “完整的操作系统” 会怎样。与 AI 结合AI 已成为趋势作者思考它与 EndBASIC 可能的关联。AI 编码代理适合快速原型开发EndBASIC 是用很少代码就能展示出色结果的优秀平台那么 EndBASIC 会不会成为编码代理的好目标让能轻松开发嵌入式项目呢。下一步计划作者去年写完文章后因发布 EndBOX 筋疲力尽而休息收到的关注少让他失望。到圣诞节时他捡起草稿差点发布。今年 1 月作者开始对 EndBASIC 的核心语言进行全面重新实现“下一步计划” 至少在接下来几个月已确定这次重写即将完成。完成后作者想花时间添加一些多年来一直想实现但没机会做的功能特别是提供一些额外的图形操作原语主要用于精灵并最终添加声音支持。不过所有其他想法仍然值得考虑作者好奇其中有没有让读者感兴趣的。如果答案是肯定的请订阅以表示支持并务必留言。

更多文章