Lua文字列リテラルを最適化して400バイト節約する方法

Optimizing Lua string literals to save 400 bytes

ComputerCraftのプログラムを圧縮するため、Luaコードの文字列リテラルを最適化する手法を紹介。生文字列(raw string)の扱いには、改行の正規化や先頭改行の削除などCobaltランタイム特有の癖があり、CR文字のエスケープにはgsubとビット演算を組み合わせた巧妙なテクニックを使う。この工夫により、ほぼ均一なバイト分布の文字列でもオーバーヘッドを約1%に抑えられる。

Cobaltは改行シーケンス(CRLF、LFCR、単独CR、単独LF)を生文字列内で単一のLFに折りたたむ。これはPNGに対してdos2unixを実行して、その後破損しないことを期待するようなものだ。

この日のほかの記事

2026-07-16