← 返回信息流
AI 资讯Hacker News·4 小时前

EndBASIC 0.14:多媒体支持来了吗

原标题:EndBASIC 0.14: Are we multimedia yet?

速览

EndBASIC 0.14正式发布,该版本重点探索多媒体支持,新增图形绘制与声音播放能力。开发者借此回答“是否已实现多媒体”的疑问。新特性使这款BASIC解释器更适合教育与娱乐场景,但也保持了轻量设计。

AI 深度解读

背景

EndBASIC 是一个复古风格的 BASIC 语言环境,旨在让用户以当代技术重拾经典编程乐趣。项目自 2020 年启动以来,不断迭代。0.13 版本(发布于 2026 年 5 月左右)引入了全新的编译器和虚拟机实现,大幅提升了性能。然而,性能提升虽然显著,却并未让 EndBASIC 变得更“酷”。0.14 版本则截然不同:它集成了多项新功能,尤其是基础声音支持,标志着项目迈向 1.0 版本的最后一道关卡已被解锁。尽管开发者曾考虑加入更多特性(最终因难度放弃了一项),仍决定及时发布代码。2026 年 7 月 4 日,EndBASIC 0.14 正式发布。

核心内容

图形能力大幅扩展

0.13 带来了巨大的性能提升,0.14 则通过新增图形图元让这些性能得以发挥。新命令包括:

  • GFX_TRIGFX_TRIF:绘制三角形及填充三角形。
  • GFX_POLYGFX_POLYF:绘制多边形及填充多边形。
  • GFX_FILL:区域桶填充(Bucket-fill)。

为了演示这些新图元,开发者将 EndBASIC 最初的一个演示程序“生产化”——一个在容器框内绘制多个弹跳圆球的程序。该演示现已打包在 EndBASIC 的 DEMOS 驱动器中,可通过画廊访问。该演示是实时运行的程序(非视频),用户可直接在浏览器中与之交互。

复古 VGA 字体回归

此前,EndBASIC 支持 LCD 显示屏和基于 NetBSD 的控制台(用于 EndBOX 设备),并为帧缓冲区实现了位图字体渲染“引擎”。但这种方式与 Web 控制台和 SDL 控制台产生了不一致,后两者使用的是 IBM Plex Mono TTF 字体。该字体美观且受旧 PC 字体启发,但仍显得过于“现代”。为了统一所有控制台的视觉风格并让 EndBASIC 更显“复古”,开发者移除了所有 TTF 支持,全面改用自研字体渲染设施。现在,标准 IBM VGA 8x16 字体被加入字体集,并成为所有控制台的默认字体。

这样虽然让控制台看起来更复古但也更单调。为了让用户从一开始就明白控制台是文本和图形混合的,开发者还修改了多年未变的欢迎横幅,在旁边添加了一个小图标。

macOS 支持终于修复

EndBASIC 的 SDL 图形控制台已有多年历史。最初编写时在 macOS 上工作正常,但由于所有图形操作被卸载到独立线程,而该线程并非主线程,导致在较新的 macOS 版本中 EndBASIC 启动时崩溃。修复在概念上很简单(只需翻转线程角色),但实现过程比较棘手。最终,macOS 上的支持重新恢复正常。

不过,在 macOS 上运行预编译二进制文件仍有些麻烦:因为开发者没有 Apple Developer 证书,所以二进制文件未经代码签名。随着每次 macOS 更新,运行未签名二进制文件变得越来越困难(在 macOS Tahoe 中,需要分别批准运行二进制文件和它所捆绑的共享库)。Windows 也会显示关于未信任二进制文件的警告,但至少更容易绕过。开发者强调,所有可下载的二进制文件都通过 GitHub Actions 从已检入的代码生成,因此有清晰的审计线索,用户不必信任“来自开发者工作站的随机二进制文件”。

Shebang 支持

EndBASIC 0.14 新增了对类 Unix 系统上直接执行 EndBASIC 脚本的支持(通过 shebang 行)。这看似是解释器的基本功能,但实现时有一个细微问题:某些程序可能需要特定的控制台尺寸。如果使用通用的 #!/usr/bin/env endbasic shebang,则无法指定控制台标志,因为 shebang 行只能包含两个参数。为此,开发者实现了辅助机制来调整控制台设置——受到 Emacs 属性行的启发。在 shebang 之后,可以使用一个魔术注释来指定给定程序使用的控制台,使脚本成为“独立”可执行文件:

#!/usr/bin/env endbasic
REM endbasic cli: console=sdl:resolution=1024x768

开发者还提醒,#!/usr/bin/env 被认为是有害的(这是他本人的观点)。

声音支持终于到来

这是开发者多年来最想实现的功能:声音支持。最初他以为实现会非常繁琐,但后来意识到音频只是控制台的另一种输出“类型”——完全可以沿用已有的 Console 框架来实现音频原语。因此实现其实很简单。现在有了 BEEP 命令(甚至在终端中也能工作)和 SOUND 命令(可以播放任意音调)。但暂时没有更多功能:原本想实现类似 QBASIC 的 PLAY 命令,但那需要独立的微型语言解析器和后台播放,工作量太大。用户可以直接在浏览器中的嵌入式解释器中体验简单的声音演示(按任意键即可播放)。

其他小更新

0.14 还包含一些较小的改进,详细信息可在 NEWS.md 文件中找到。

关键要点

  • 图形扩展:新增三角形、多边形绘制及填充命令,以及区域桶填充命令 GFX_FILL;将早期弹球演示生产化并打包在 DEMOS 驱动器中。
  • 字体统一与复古化:弃用 IBM Plex Mono TTF,改用标准 IBM VGA 8x16 位图字体作为所有控制台的默认字体;更新欢迎横幅以彰显文本/图形混合能力。
  • macOS 崩溃修复:修复了 SDL 图形控制台在 macOS 上因线程角色问题导致的启动崩溃;二进制文件未签名,运行需手动授权。
  • Shebang 直接执行:支持 #!/usr/bin/env endbasic 语法;通过魔术注释 REM endbasic cli: console=... 配置控制台参数。
  • 声音支持:新增 BEEPSOUND 命令(基于 Console 框架),可在终端或图形控制台中发声;暂未实现 PLAY 命令。
  • 构建与信任:所有预编译二进制文件通过 GitHub Actions 从已检入代码生成,提供审计轨迹。

意义与影响

EndBASIC 0.14 是项目发展的重要里程碑,因为它解锁了通往 1.0 版本的最后一个主要障碍——声音支持。加上之前版本的性能提升和此次的图形扩展、字体统一、跨平台修复,项目现已具备当初在 2020 年启动时设想的所有核心能力:以 BASIC 的简单性编写复古风格的迷你游戏。0.14 让 EndBASIC 不仅是一个语言解释器,更成为一个接近自包含的复古游戏开发平台。尽管仍有可添加的功能(如精灵支持、文件管理、记录等),但当前版本已经足以让爱好者重拾经典编程体验。此外,通过统一的字体、跨平台的兼容性以及 shebang 支持,项目的可用性和可传播性也得到增强。开发者鼓励用户试用并享受乐趣,并特别提到(如果读者和他一样在美国)庆祝美国建国 250 周年。

查看原文 →endbasic.dev