EndBASIC 0.14 发布:新增多媒体功能,为迈向 1.0 版本扫清障碍!

📅 2026/7/6 8:19:03 👁️ 阅读次数 📝 编程学习
EndBASIC 0.14 发布:新增多媒体功能,为迈向 1.0 版本扫清障碍!

EndBASIC 0.14 发布

一个多月前,宣布推出 EndBASIC 0.13,它采用了全新的编译器和虚拟机实现。0.13 版本是六个月努力的成果,不过该版本“仅仅”提升了性能,对让 EndBASIC 变得更酷并没有太大帮助。今天发布的 0.14 版本则截然不同,这个版本在各个方面都新增了不少功能,还特别添加了基础声音支持,成为了一个重要的里程碑,为迈向 1.0 版本打通了最后一道难关。原本还想在这个版本中加入更多功能,有一个功能最终因为实现难度太大而不得不放弃。

必访链接

在详细介绍之前,提供几个必访链接:启动在线解释器、下载桌面和嵌入式设备版本、阅读发布说明、访问交互式项目示例库。

更多图形功能

在 0.13 版本大幅提升性能之后,首要做的是提供更多图形原语,现在有了绘制三角形(`GFX_TRI` 和 `GFX_TRIF`)、多边形(`GFX_POLY` 和 `GFX_POLYF`)以及进行区域填充(`GFX_FILL`)的命令。还将为 EndBASIC 编写的最早的一个演示程序“产品化”,这个小程序会渲染多个圆圈,并让它们在一个容器框内反弹,以此展示新的图形原语。现在,这个演示程序已被打包到 EndBASIC 的 `DEMOS` 驱动器中,可通过示例库访问,且可在浏览器中与之交互。

复古 VGA 风格

之前为 EndBOX 添加 LCD 显示屏支持以及基于 NetBSD 的控制台时,为帧缓冲实现了一个位图字体渲染“引擎”,但导致了与基于 IBM Plex Mono TTF 字体的 Web 和 SDL 控制台不一致的问题。为了统一所有控制台的外观和感觉,让 EndBASIC 看起来更“复古”,移除了所有 TTF 支持,转而使用自己的字体渲染工具,在字体库中添加了标准的 IBM VGA 8x16 字体,并将其设为所有控制台的默认字体。还修改了多年未变的欢迎横幅,让它旁边显示一个小图标。

macOS 问题修复

EndBASIC 中的 SDL 图形控制台已经存在多年,最初在 macOS 上运行正常,但后来因为单独线程不是“主线程”的关键缺陷,在最近的一个版本之后,EndBASIC 一启动就崩溃。现在修复了这个问题,但在 macOS 上运行预构建的 EndBASIC 二进制文件有点麻烦,因为没有对它们进行代码签名,且随着 macOS 版本的不断更新,运行未签名的二进制文件变得越来越困难。不过可以放心,可下载的二进制文件都是通过 GitHub Actions 从已提交的代码生成的。

支持 Shebang

新特性是在类 Unix 系统中支持直接执行 EndBASIC 二进制文件。原则上实现这个功能很简单,但有些程序可能需要特定的控制台尺寸,使用常见的 `#!/usr/bin/env endbasic` shebang 无法指定控制台标志,因此实现了一个辅助机制来调整控制台设置,shebang 后面可以跟一个魔法注释,为给定的程序指定要使用的控制台。同时提醒大家,`#!/usr/bin/env` 存在隐患。还有一个小视频展示了两个可运行的脚本,一个提供文本界面,另一个在单独的窗口中启动图形控制台。

声音支持

多年来一直想实现的最大功能是声音支持,后来意识到音频只是控制台的另一种输出“类型”,借助现有的 `Console` 框架实现了音频原语。现在有了 `BEEP` 命令和 `SOUND` 命令,原本想实现一个类似 QBASIC 的 `PLAY` 命令,但工作量太大。现在可以播放一个简单的声音演示,只需点击嵌入式解释器,然后按一个键即可。

总结与展望

以上就是 EndBASIC 0.14 版本主要变更的总结,还有一些较小的更新可在 NEWS.md 文件中找到详细信息。EndBASIC 0.14 版本是一个重要的里程碑,实现了在 2020 年启动这个项目时心中所想的一切:能够用 BASIC 的简单性编写复古风格的小游戏。赶紧试试看,玩得开心!如果在美国,祝美国独立 250 周年快乐!