2007年微软宣布停止Visual FoxPro的产品演进,这个曾经风靡中小企业的桌面数据库与开发工具就此进入维护期。2026年9月,一个名为FoxDev Studio的项目登上Hacker News头条并获得419点关注,号称要让FoxPro应用「在现代机器上安家」。它的做法不是迁移、不是转换,也不是导出,而是直接打开开发者和企业尘封多年的项目、表单与数据表,按当年的方式运行。
2GB上限的根源是32位符号位,重写后单表可到数百GB
FoxDev Studio的技术页面解释了最硬的限制:Visual FoxPro是一个32位程序,这决定了比表面上更多的东西。表文件停在2GB、备注文件停在2GB、一个大报表在内存充裕的机器上仍然内存不足,根源都是文件处理中埋着的带符号32位整数,而不是任何授权决定。FoxDev Studio全程64位,每个文件偏移都是64位,且表从不整体读入内存,于是过去会戛然而止的dbf文件可以一直用到数百GB。官方同时给出警告:超过2GB的表不会再被Visual FoxPro打开,对两套工具并用的人来说这是一扇单向门。
具体数字被直接列在页面上:Visual FoxPro的偏移上限是2147483647字节,正是2GB而非4GB的原因在于最高位被符号占用;FoxDev Studio的偏移上限是9223372036854775807字节。以130字节记录计算,一张表可达558GB,相当于279个旧上限的方块;以1KB记录计算可达4.4TB。目前真正的天花板变成了DBF头部自带的记录计数字段。
Rust虚拟机与React对象树:老工具的新引擎
Visual FoxPro当年把程序编译为p-code并附带运行时执行,FoxDev Studio沿用了同一套安排:编译器与字节码解释器用Rust编写并编译到WebAssembly,一套机器在任何运行应用的地方跑代码。编辑器通过同一个编译器做语法检查,因此它标红的行就是运行时会拒绝的行。运行中的程序是一个协程式的fiber,需要弹窗、模态表单或下一条记录时不是阻塞调用而是让出执行,这也是为什么MESSAGEBOX能停住程序却不冻结背后的窗口。
界面层同样被重写:运行中的表单是一棵活的对象树,界面由React直接从这棵树绘制,每个对象只观察自己,于是修改一个标签的标题只会重绘一个控件而不是整张表单。设计器编辑的也是同一棵树,不存在需要同步的第二套模型。对于32位遗留库,项目用SET LIBRARY TO启动一个独立的32位进程专门承载旧fll文件,调用保持同步,而DECLARE到DLL的现代库与自动化对象则在进程内直达。
项目还附带名为FoxScript的语言扩展,据页面演示可以让lambda响应HTTP路由并在其中调用32位库,监听8080端口。Hacker News的讨论里,不少开发者回忆起父辈用FoxPro写的项目,有人提醒当年软盘上的数据应尽快复制,也有人指出USB设备常常忽略只读标签。这个工具的定位很清楚:不是现代化迁移方案,而是让仍跑在FoxPro上的零售、保险与制造业遗留系统原地续命。