lua考古

这里记录下lua的进化历史。

Lua版本的年表

timeline

Lua发行版编号为x.y.z,其中x.y是版本,而z是发行版。
同一版本的不同发行版对应于错误修复。同一版本的不同发行版具有相同的参考手册,相同的虚拟机.
不同的版本实际上是不同的。API可能略有不同。虚拟机在新版本中也很有可能会有所不同。

table1

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机制,新的长字符串和注释语法,modlength运算符,所有类型的元表,通过luaconf.h配置方案和一个完全可重入的解析器。
5.2 :实现可调用的pcall和元方法,用于全局变量的词法方案,暂时表,位运算新库,轻量级C函数,紧急垃圾回收器,goto语句和表的终结器。
5.3 :实现整数,按位运算符,基本的utf-8库以及对64位和32位平台的支持。
5.4 :实现新的增量垃圾回收,constclose变量。


En nombrando al ruin de Roma , luego asoma. nran a porfía.