Skynet 升级到 Lua 5.5.0
Skynet 随 Lua 5.5.0 正式发布完成了版本升级。Skynet 维护的定制版 Lua 核心特性是允许跨虚拟机共享函数原型,以此节省服务初始化时间和内存。实现此功能的关键难点在于正确处理短字符串内部化(interning)与外部导入原型中字符串的共存问题,该问题通过专门的补丁解决,副产品是支持了跨虚拟机共享只读常量表(可通过 skynet.sharetable 使用)。然而,鉴于 Lua 5.5 引入的 external strings 特性已大幅提升字节码加载速度,建议新项目避免依赖该补丁功能,以降低维护成本。 Lua 5.5 基本兼容 5.4,大多数 Skynet 项目无需大改,但升级后务必充分测试,并使用 `make cleanall` 强制重新编译 Lua。此次升级带来了多项有益改进:新增 `global` 关键字有助于减少拼写错误;分代垃圾回收(GC)改为步进式执行,解决了过去处理大内存服务时的停顿问题;新的不定长参数语法 `...args` 允许以表格形式访问参数,能简化部分代码实现。