Basic


Lua特点

  • 轻量级

Lua体积小(源码几十万行以内),VM简洁,依赖极少,没有庞大运行时

  • 嵌入

Lua不是独立语言生态,是一个C library,Lua是ANSI C写的,可以直接被C/C++项目链接

[Program]
  v
Lua Library (C)
  v
Lua VM

Lua本身没有main(),没有程序入口,没有自己的运行生命周期,它必须被host调用

比如

luaL_dofile(L, "config.lua");

执行权永远在宿主程序手里

这和Java, C#, Python的“解释器主导”模型完全不同

  • register-based virtual machine

Lua VM是寄存器型虚拟机,而不是像Java的栈机

寄存器机的优点

  • 指令更少
  • 执行更快
  • 更接近真实CPU

这也是Lua性能高的原因之一

  • generational garbage collection

Lua有自动GC,分代垃圾回收;它为长期运行嵌入场景设计的,考虑了性能与延迟

  • 自定义编程语言

Lua不是给你一种语言,Lua是给你“做语言”的能力

通过

  • 注册C函数
  • 控制全局环境
  • 自定义库

可以

  • 做DSL
  • 做配置语言
  • 做脚本系统
  • 做游戏逻辑语言