1:Lua頭文件有宏 能夠控制編譯時候的兼容性,使5.3能夠兼容5.1的c接口c#
2:Lua package 使用searcher 而不用loader來加載文件, searcher 返回的是加載函數和文件名字,若是不能加載則返回 兩個字符串dom
5.1的Loader只調用lual_loadbuffer 加載模塊,由require代碼本身來執行模塊,而5.3的searcher 設置的loader,須要本身來執行返回的模塊函數
3:去掉了globaltable 須要在registry 中來獲取globaltable,所以一些直接操做globaltable的接口須要調整ui
4:registry 的stack pos 調整了lua
5:一些接口去掉了,能夠在頭文件中找到定義的宏接口
6: lua_rawgeti 增長了返回值int 類型,返回壓入值的類型,c#中須要修改原型,字符串
7:LUA_32BITS 5.1的系統基本是 32位的整數,5.3設置成這樣放置某些c#接口的參數類型錯誤, lua_rawgeti, LUA_INTERGER 和 LUA_NUMBER 變成了 int 和 float, 5.3參數默認64位整數,會致使傳入32位整數,取不到值。get
8:module 功能發生變化, 5.1 require 一個lua文件包含module 函數,則得到一個table,而5.3 require 得到一個函數, module須要改造爲 xxx={} return xxx, _M變量也要去掉原型
9:5.3 中對數字區分了 整數和浮點數, math.random 若是傳入浮點數會報錯,須要調用math.floor 進行轉化, 定義宏 LUA_FLOORN2I編譯
10: 應該設定int 32位, 浮點數 double 這樣5.3 才和 5.1兼容 LUA_INT_TYPE LUA_FLOAT_TYPE, 5.3 支持 64位整數, 32位整數 用 float 表示會溢出錯誤, 在protobuf中 大整數的處理須要當心一些