1.
GitHub - Yu2erer/LuaHotFix: Lua 5.3 服务端热更新
不能热更新class
2.https://github.com/sundream/ggApp
可以热更新class ,不能更新upvalue
3. 支持class ,不支持sol2
GitHub - jinq0123/hotfix: Lua 5.2/5.3 hotfix. Hot update functions and keep old data.
4. skynet 群里自己维护的一个GitHub - huahua132/skynet_fly: 基于云风的skynet,搭建开箱即用的微服务框架,提供优雅的服务热更新
5. 大佬群里发的有空再看setupvalue_vs_upvaluejoin
do
local old = {}
local old_count = 0
function old.count1()
print(old_count)
end
function old.count2()
print(old_count)
end
--------------------------
local new = {}
local new_count = 0
function new.count1()
print(new_count)
end
function new.count2()
print(new_count)
end
---他们使用相同的upvalue
old.count1() -- 0
old.count2() -- 0
old_count = 100
old.count1() -- 100
old.count2() -- 100
local n,v = debug.getupvalue(old.count1,2)
debug.setupvalue(new.count1, 2, v) --- 值类型是拷贝, 只有table类型是没这个问题的
local n,v = debug.getupvalue(old.count2,2)
debug.setupvalue(new.count2, 2, v)
new.count1() -- 100
new.count2() -- 100
old_count = 101
new.count1() -- 仍然是 100
new.count2() -- 仍然是 100
end
do
local old = {}
local old_count = 0
function old.count1()
print(old_count)
end
function old.count2()
print(old_count)
end
--------------------------
local new = {}
local new_count = 0
function new.count1()
print(new_count)
end
function new.count2()
print(new_count)
end
---他们使用相同的upvalue
old.count1() -- 0
old.count2() -- 0
old_count = 100
old.count1() -- 100
old.count2() -- 100
debug.upvaluejoin(new.count1, 2, old.count1,2)
debug.upvaluejoin(new.count2, 2, old.count2,2)
new.count1() -- 100
new.count2() -- 100
old_count = 101
new.count1() -- 101
new.count2() -- 101
end