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を実行して、その後破損しないことを期待するようなものだ。