构建Lua解释器Part2:Garbage Collection基础架构

前言

        上一篇我已经设计和实现了Lua解释器最基础的基本数据结构,实现了纯C函数在栈中的调用流程,以及保护模式调用函数等内容,今天要介绍的则是Lua解释器的GC基础架构。Garbage Collection机制,可能是让人们听之不寒而栗的机制,都说GC很复杂,需要花费大量时间去消化和理解,那为什么要在本系列的第2篇就早早引入?做这个决定并非一时冲动之举,而是经过思考后而决定的。之前在阅读了云风大神翻译的《编程之魂》第7章[1],这篇关于对Lua设计者的访谈记录中,作者有这么说过:

[Read More]

构建Lua解释器Part1:虚拟机的基础--Lua基本数据结构、栈和基于栈的C函数调用的设计与实现

前言

        从本篇开始,我们正式进入到Lua解释器的开发阶段(这是一个遵循Lua5.3标准的项目)。本篇并不直接接入到设计和实现语法分析器和词法分析器的阶段,而是先设计和实现Lua虚拟机的基础数据结构(包括Lua最基本的数据结构,如基本数据类型,表示虚拟机状态的global_State和lua_State结构,在函数调用中扮演重要角色的CallInfo结构等)以及设计和实现基于栈的C函数调用流程。这些都是理解后面虚拟机运作的基础。由于这是一个仿制项目,为了和官方版本做区分,就称之为dummylua,后面要称呼本项目时,一律用dummylua来表示。

[Read More]

构建Lua解释器Part0:综述

项目简介

        lua是一门精妙简洁,而功能强大的语言,学习和掌握它的核心机制有着重要的意义。这是一个仿制lua解释器的项目(参照的版本是Lua5.3),我希望通过逐步实现lua解释器的各个部分,更加深刻地掌握lua的基本结构和运作原理。本项目将分为多个部分完成,并为每一个部分附上一篇博文为该部分的设计和实现进行解析。开发这个项目的目的,并不是做一个能用于生产环境的lua解释器,而是尝试追寻前辈的步伐,尽最大可能理解其设计lua语言的思路,理解其中的关键细节。这是一个探索原理的旅程,因此效率并不是本项目要考虑的关键因素。这里我遵循的是”FIRST make it run, THEN make it run fast”[1]的原则,先让它跑起来。整个系列暂时不包含GC部分,不过这些开发量也足以消耗我大量的时间和精力。

[Read More]