Optimizing Lua string literals to save 400 bytes
a day ago
- #Compression
- #Lua
- #ComputerCraft
- 作者在ComputerCraft: Tweaked中面临磁盘空间限制,其中用Lua编写的程序超过了125KB的软盘上限,而其存储库的代码量超过了440KB。
- 他们使用压缩技术来创建自解压存档以便于安装,将数据与解压器合并成单个文件。
- 将Lua数据序列化为字面量具有挑战性,尤其是对于表和字符串的处理,涉及多种表示上的细微差别。
- 字符串序列化需要处理带转义的引号字符串以及用括号分隔的原始字符串——后者忽略反斜杠但需管理换行序列和转义字符。
- 为了处理包含所有字节序列(包括回车符)的原始字符串,他们采用了一种替换技术,通过'gsub'函数结合转义字符和位编码来最小化大小开销。