FoxDev Studio 推荐,FoxPro 老语言跑进了浏览器
微软在 2007 年停掉了 Visual FoxPro,这个数据库加开发环境一体的语言就此停在 32 位。九月底 HN 上有人把它捡了回来,一套叫 FoxDev Studio 的工具把 FoxPro 编译成字节码,跑在 WebAssembly 里。帖子四百八十五分二百七十评,老程序员的怀旧潮涌了个满怀,骂声与掌声一样多,后面细说。我把官网、代码库和讨论逐一核了一遍,这个项目比标题更有意思,也比宣传口径更年轻。
主要功能
架构是个三明治。集成开发环境用 Electron 搭,编译器和字节码虚拟机用 Rust 写再编译成 WebAssembly,解释器采用纤程式设计,虚拟机内置函数一百五十一个,写好的程序可打包成独立可执行文件。语言层在 FoxPro 之外加了扩展,支持 Lambda 块和内置的 HTTP 服务对象,官网干脆自称这就是 Visual FoxPro 10 该有的样子,这句当口号听。
最有分量的是数据引擎。原版表文件上限 2GB,32 位时代的铁顶,新引擎按官方口径把记录数提到 42.9 亿,130 字节记录的表能到 558GB,1KB 记录能到 4.4TB,这些数字均为自称,官方称在 5.2GB 偏移处做过读写验证。原版 2GB 上限对账目与日志类表是硬伤,放宽两个数量级是实打实的诱因。旧引擎的扩展库也有交代,加载命令会起一个小型 32 位进程托管老库文件,官方说这些久经沙场的旧物他们都支持,32 位进程这层桥意味着旧生态不用重写,这是兼容策略里最讨巧的一笔。平台方面有 Windows 64 位安装器与 Linux 包,还提供命令行虚拟机与网页版虚拟机。
兼容口径要打折
官网的兼容度宣传很漂亮,语言参考里的 1722 个元素已知、1534 个有测试覆盖、只差 3 个没见过。README 却老老实实列着未实现清单,索引查找、复合索引文件、SET FILTER、HAVING、写备注字段、数据绑定都不在列。两份材料一个唱高调一个交实底,写稿以保守清单为准,宣传页的漂亮数字当上限参考,别当验收标准。还有一条时间线值得记录,GitHub 代码库在 HN 发帖前约两小时才创建,公开历史只有两个提交,开发显然在私有环境完成,历史无从考证,两个提交意味着外部谁也没审过这份代码,信任只能靠自行构建与沙盒运行攒。
解决了什么需求
还有一大批 FoxPro 系统活在政府与中小企业的机房里,迁移成本高到离谱,这个项目给了一条续命路。库文件都跑在 64 位进程里这件事,对困在 32 位兼容模式的老系统是质的解放,政府机房里的老报表系统尤其如此。这类需求听着小众,全球存量系统换成人工重写的成本是天文数字。HN 讨论里,用户 tombert 自称可能是唯一先后靠 FoxPro、Erlang 与 F# 吃过饭的人,第一份工作是给跆拳道馆写计费系统;用户 Kuyawa 怀念命令窗口里敲一句查询立刻出结果的日子。用户 whartung 顺带修正了微软放弃 FoxPro 的叙事,收购来的数据库引擎后来改造成了 Access 的核心。质疑同样尖锐,用户 zero_shift 发现发帖时代码库只有一个提交,直问是不是氛围编程的产物;用户 sm-silversight 甚至担心是批量窃取数据的圈套;版主 dang 出面要求作者停止发布 AI 生成的评论,同时明确项目本身欢迎提交。GitHub issue 区倒是热闹,真 FoxPro 用户在实测,有人连发五个补全真实应用写法的请求合并了四个,有人报告的解析问题被逐一修复,修复速度是真用户的试金石,这项目前得分不低。作者自述动机很朴素,父亲的朋友经营了二十年的店想要更大的表。
价格与授权
MIT 开源,完全免费,夜间构建未签名,首次启动需要手动确认,发布走每日构建,想要稳定等带标签的版本再说,旧库文件永远留备份。与微软无关联,页面挂着商标免责声明。
总结
怀旧滤镜加真实需求,这个复刻值得老 FoxPro 用户盯下去,issue 区的修复速度是目前最好的信号。生产系统迁移别急,等兼容清单再长一截。手里有老库文件的,先拿只读副本试试导入导出。
来源
- 官网 https://foxscript.org/
- 开源仓库 https://github.com/FoxDevCommunity/FoxDevStudio
- HN 讨论 https://news.ycombinator.com/item?id=49808023