这里记录下lua的进化历史。
Lua版本的年表
Lua
的发行版编号为x.y.z
,其中x.y
是版本,而z
是发行版。
同一版本的不同发行版对应于错误修复。同一版本的不同发行版具有相同的参考手册,相同的虚拟机.
不同的版本实际上是不同的。API可能略有不同。虚拟机在新版本中也很有可能会有所不同。
Lua 1
1.1 这是Lua
的第一个公开版本,已经具有强大的数据描述结构,简单的语法和字节码虚拟机。Lua
中的所有语句都在全局环境中执行。
这个版本已经具有垃圾回收功能(标记-清除垃圾回收算法)。
Lua 2
2.1 :通过fallbacks
扩展语义以及对面向对象编程的支持。
2.2 :长字符串,调试接口,更好的堆栈回溯,扩展的函数定义语法,函数的垃圾回收以及对管道的支持。
2.4 :实现外部编译器luac
,带有钩子的扩展调试接口以及“ getglobal”后备功能。
2.5 :实现模式匹配和vararg
函数。
Lua 3
3.0 :tag methods
替代fallbacks
,可以作为后备功能的有力替代。引入auxlib
(一个用于帮助编写Lua库的库),并支持条件编译。
3.1 :实现匿名函数和通过“ upvalues”关闭函数。支持多种全局环境。代码重组和清理,大大减少了module
之间的依赖性。采用double
精度表示数字整型。
3.2 :实现调试库和表的新功能。
Lua 4
4.0 :实现多重状态,为那些需要多份Lua state
的应用而设计的新API。设计了一个for
循环,它有两种方式:一个数字式的循环以及一个表遍历的循环。对C API
重新设计了,不再有任何内置函数,所有标准库都是基于C API
实现,没有通过特别的后门去访问Lua
内部结构。
Lua 5
5.0 :实现协程,完善词法作用域(而不是upvalues
)和元表(而不是tags and tag methods
)。引入了布尔值,完善尾调用和弱表。对packages
的更好支持,用于加载Lua
块的新API
,新的错误处理协议,更好的错误消息等等。vm
改为基于寄存器的。
5.1 :实现新的module
系统,实现增量垃圾回收系统,新的varargs
机制,新的长字符串和注释语法,mod
和length
运算符,所有类型的元表,通过luaconf.h
配置方案和一个完全可重入的解析器。
5.2 :实现可调用的pcall
和元方法,用于全局变量的词法方案,暂时表,位运算新库,轻量级C
函数,紧急垃圾回收器,goto
语句和表的终结器。
5.3 :实现整数,按位运算符,基本的utf-8
库以及对64位和32位平台的支持。
5.4 :实现新的增量垃圾回收,const
,close
变量。