【导语:近期,LuaJIT 作者删除旧版本标签,引发 Lua 社区对旧版本兼容问题的大讨论。近十五年的历史遗留问题,让社区陷入两难,维护者呼吁放下旧包袱,却也面临诸多现实阻碍。】
最近,Lua 社区因 LuaJIT 作者 Mike Pall 的举动而受到冲击,他直接从上游 GitHub 仓库删掉部分旧版本标签,这在开源圈被视为不友好甚至粗鲁的行为。但熟悉内情者能理解他的无奈,太多项目死守旧标签,大量 bug 报告指向已修复问题。
大约 2011 年前后,官方 Lua 发布 5.2 版本,而 LuaJIT 选择停留在 5.1 兼容层面,其作者明确表示不跟进官方后续语言改动。这导致社区分裂,一边是追求新特性的官方 Lua,一边是看重速度优势的 LuaJIT。
为让代码同时在两者上运行,库作者们采用遵循 Lua 5.1 语法和 API 的策略,这在当时可行,却成了后来的枷锁。官方 Lua 不断更新,带来不兼容改动,而 LuaJIT 锚定 5.1,使得库作者不敢轻易丢掉 5.1 支持,维护成本无限拉长。
LuaRocks 维护者 Hisham Muhammad 写文指出社区困境,他曾推动兼容策略,如今态度转变,认为若官方和 LuaJIT 作者都对旧版本做了 EOL,库作者应放下旧版本。他还提出 Teal 语言,希望松绑“死守 5.1”的局面。
文章引发五十多条讨论,有人支持放弃旧版本,认为开源项目硬撑旧版本不现实;也有人指出 Lua 作为可嵌入语言的特殊性,丢掉旧版本支持可能切断大量真实用户。
更尖锐的批评指向 PUC - Rio Lua 不断的不兼容改动,认为这才是拖累生态的根源。讨论中也有务实声音,如维护者有权拒绝无尽兼容请求,用户可自行修复老版本问题,且不同场景不能一刀切。
编辑观点:Lua 社区的旧版本兼容问题是众多开源社区都会面临的难题,平衡维护者负担和用户需求并非易事,这场讨论开启了寻找答案的进程。