Bootsnap 1.24.1:`BOOTSNAP_READONLY`モード時のソースファイルエンコーディング修正
Bootsnap 1.24.1 では、BOOTSNAP_READONLY 環境変数が設定されている場合にRubyソースファイルのエンコーディングが正しく処理されない不具合が修正されました。
背景
BOOTSNAP_READONLY は、キャッシュの書き込みを行わずにBootsnapの読み込み高速化のみを利用するモードです。このモードでは、ファイルをキャッシュから読み込む際のエンコーディング処理に欠陥があり、本来 UTF-8 であるべきリテラル文字列が ASCII-8BIT として扱われていました。
影響を受けるのは、純粋なASCII範囲を超える文字(日本語・絵文字・アクセント付き文字など)をソースコード中に含むファイルです。通常の読み込みモードでは発生しない問題であり、BOOTSNAP_READONLY を有効にしている環境に限定されていました。
技術的な変更
今回のリリースは、バージョン番号の更新とCHANGELOGへの記載が変更内容の全てです。
lib/bootsnap/version.rb のバージョン定数が "1.24.0" から "1.24.1" へ更新されました。
# frozen_string_literal: true
module Bootsnap
VERSION = "1.24.1"
end
エンコーディング修正の実装自体は、CHANGELOG に記載されているとおり 1.24.1 としてリリースされた変更に含まれており、本コミットはそのリリース作業(バージョンバンプ+CHANGELOG整理)に相当します。
設計判断
パッチバージョン(1.24.0 → 1.24.1)としてリリースされた点は、この修正が後方互換性を壊さないバグフィックスであることを示しています。BOOTSNAP_READONLY モードを使用しない環境には影響がなく、使用している環境では ASCII-8BIT エンコーディングに起因する文字列処理の問題が解消されます。
まとめ
Bootsnap 1.24.1 は、BOOTSNAP_READONLY モードにおけるエンコーディング処理の正確性を回復するパッチリリースです。BOOTSNAP_READONLY を有効にしている環境では、マルチバイト文字を含むソースファイルの安全な読み込みを保証するために、本バージョンへのアップデートが有効です。