300KB那个数得看怎么算。简单说PUC-Rio Lua 5.4 把解释器加标准库静态编进二进制,release下确实200多KB,你说不到300KB基本对。但有个坑:换LuaJIT,解释器更小、跑起来快一个数量级,可语言特性停在5.1还自带一堆扩展。两条路选哪条,对"续命老项目"的影响比你说的要大。
table打天下这点完全认同,补一句实现细节:Lua的table内部是数组段+哈希段的混合体,连续整数键走数组、稀疏或字符串键走哈希。所以同样是table,你当数组用和当字典用,内存布局和缓存命中差很多。热路径上这个区别能让程序快几倍或慢几倍,不能真当成"完全无差别"用。
热更新那块你说"挂一段脚本当场生效",实际没那么省心。在C里重新dofile一遍,全局表是新的,旧状态全丢。要真·热更得自己管Lua state、做upvalue替换或套个reload框架,状态迁移才是工作量大头。把解释器塞进去容易,把老状态平滑接上才麻烦。
我个人更看重LuaJIT的FFI——不用写一行C binding,Lua里declare一下C函数就能直接调。比起"嵌个解释器当脚本引擎",FFI才是把十年前的C库和今天需求缝起来的真胶水。
不过"克制让它最长情"这点我得补个反例:标准库太薄,真干点活就得引入一堆第三方小库,LuaRocks上质量参差,版本兼容又是个新包袱。克制省下的依赖,往往从别的地方还回去了。