一个个人开源项目,把 90 年代 Borland 的 Turbo Vision 2.0 从 DOS 时代拉回了今天。项目名叫 tvision,由开发者 magiblot 维护,2018 年底启动,2020 年接近原版功能对等后开源,并在同年加入完整 Unicode 支持。
这不是 Borland 官方复活,也不是一个要替代主流 GUI/CLI 框架的新王。它更像一次旧架构续命:尽量少改遗留代码,让老 Turbo Vision 应用还能在 Linux、Windows、DOS 之间找到一条路。
它补的不是复古滤镜,是现代终端地基
Turbo Vision 原本就是文本界面框架。它提供重叠窗口、菜单、对话框、按钮、滚动条、输入框等组件。90 年代很多人记住的是蓝底灰框,但框架真正有用的部分,是事件、控件和窗口模型。
现代移植版补的是更脏、更难炫耀的活:C++14、CMake、ncursesw、MSVC、MinGW、Borland C++,以及 UTF-8、剪贴板、扩展颜色。它还尽量保持旧 Turbo Vision 应用源码兼容,并实现了部分 Borland C++ RTL 兼容函数。
| 维度 | tvision 的做法 | 对开发者的意义 | 限制 |
|---|---|---|---|
| 工具链 | C++14、CMake | 能进入现代 C/C++ 构建流程 | 旧 API 风格仍在 |
| 平台 | Linux、Windows、DOS | 老文本应用迁移成本下降 | 不等于各平台体验完全一致 |
| 终端能力 | ncursesw、UTF-8、剪贴板、扩展颜色 | 少写平台分支和终端 workaround | DOS/Borland 构建无 Unicode |
| 兼容策略 | 尽量保持旧源码兼容 | 老项目可少改代码 | Borland RTL 兼容会带来历史包袱 |
| 发布状态 | GitHub 开源项目 | 可读、可改、可试 | 暂无稳定 release |
对维护老 Borland/Turbo Vision 代码的人,这条路很现实。重写 GUI 成本高,继续绑死旧 DOS/Windows 环境也不划算。tvision 给的是中间方案:先把旧车开上现代路网。
这个类比像老铁路换轨距。不完全一样,但意思接近:目标不是怀旧,而是让旧车还能进新的运输系统。真正贵的不是刷漆,是轨距、信号、站台和调度都要接得上。
终端 UI 的难点从来不是“画得像不像”
今天写 TUI,不缺选择。Python 有 Textual,Rust 有 ratatui,C/C++ 里有 ncurses、FTXUI 等方案。它们解决的问题不一样。
| 方案 | 更适合什么 | 不太适合什么 |
|---|---|---|
| ncurses | 底层控制、传统 Unix 终端程序 | 直接获得现代组件体验 |
| FTXUI | 新写 C++ TUI、现代组件表达 | 迁移 Turbo Vision 旧代码 |
| Textual / ratatui | 新项目、现代生态、开发体验 | 继承 Borland/Turbo Vision 遗产 |
| tvision | 老 Turbo Vision 代码迁移、C/C++ 跨平台文本界面 | 追求稳定 release、现代声明式 UI、强生态的团队 |
tvision 的位置很窄,但窄不等于没价值。它处理的是旧世界留下来的债:事件分发、字符宽度、颜色属性、剪贴板、Windows 和 Linux 终端差异。
很多 TUI 项目死得不体面,不是因为界面丑。是因为中文错位、输入异常、复制粘贴失灵、颜色在不同终端里乱跳。工具一旦在这些地方掉链子,用户不会研究你的架构,只会关掉窗口。
“天下大事,必作于细。”放到终端 UI 上并不虚。tvision 的价值就在这里:把一堆历史债务压到开发者尽量看不见。
这也解释了它为什么不是大众方案。新项目如果不背 Turbo Vision 遗产,未必该主动跳进旧 API。写全新工具的团队,更可能选 FTXUI、Textual、ratatui,或者直接用 ncurses 做底层控制。
真正受影响的人,以及接下来该盯什么
最相关的是两类人。
一类是维护 Borland/Turbo Vision 老代码的人。他们可以先做小规模迁移验证:挑一个模块,测试构建、字符显示、输入、菜单、对话框和剪贴板。不要一上来押全仓。暂无稳定 release,意味着团队要自己承担变动风险。
另一类是写 C/C++ 跨平台 TUI 工具、又能接受旧 API 风格的开发者。他们可以把 tvision 当成可选工具箱,而不是默认框架。如果项目需要现代声明式 UI、稳定发布节奏、活跃生态配套,那就先观望。
接下来最该盯的不是截图,也不是它多像 1992 年。要盯三个变量:稳定 release 何时出现,Unicode 在不同构建路线里的边界是否更清楚,旧 API 兼容和现代化改造之间会怎么取舍。
Borland RTL 兼容能救旧代码,也会把旧式设计带回今天。救遗产从来不是免费午餐。天下熙熙,皆为利来;开源项目也一样,收益是迁移成本下降,代价是维护者和采用者一起背兼容债。
我的判断很直接:tvision 证明终端 UI 仍有现实需求,但它不会让 Turbo Vision 重回主流。它是一把专用扳手。卡在旧代码、现代系统和跨平台终端之间的人,会知道这把扳手有多硬;其他人,不必跟着怀旧。
