IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Lua热更新(hotfix)

    金庆发表于 2016-07-04 03:21:00
    love 0
    Lua热更新(hotfix)

    (金庆的专栏)

    hotfix
    Lua 5.2/5.3 hotfix. Hot update functions and keep old data.
    https://github.com/jinq0123/hotfix

    hotfix 实现了Lua热更新,仅对函数作替换,保留旧数据。

    例如 test.lua:
    local M = {}
    local a = "old"
    function M.get_a() return a end
    return M

    更新到
    local M = {}
    local a = "new"
    function M.get_a() return a .. "_x" end
    return M

    运行
    local hotfix = require("hotfix")
    local test = hotfix.hotfix_module("test")
    test.get_a()  -- "old_x"


    数据 a 作为函数的upvalue得到了保留,但是函数得到了更新。

    可查看 test/main.lua 中的测试用例。

    运行测试:
    E:\Git\Lua\hotfix\test>d:\Tools\lua\lua53.exe
    Lua 5.3.2  Copyright (C) 1994-2015 Lua.org, PUC-Rio
    > require("main").run()
    Test OK!
    >



    金庆 2016-07-04 11:21 发表评论


沪ICP备19023445号-2号
友情链接