🚀

[Feature #21258] CGI ライブラリを Ruby から廃止するチケット

に公開

[Feature #21258] Retire CGI library from Ruby 3.5

  • CGI ライブラリを Ruby から廃止するチケット
    • 現状はおそらく default gem ぽい?
    • 今後は gem install cgi をする必要がある
  • 背景としては直近で CGI に対する脆弱性対応を行ったがそこにかけるコストがもう必要がない、みたいな感じみたいですね
  • ただし CGI の cgi/escape は依然として利用されているので
    • erb、net-http、bundler は CGI.escape/CGI.unescape に依存しているとかがあるみたい
  • なのでこのチケットでは以下のような提案をしています
    1. Ruby 本体では cgi/escape のみ残し、CGI ライブラリ自体は削除し cgi-util gem に依存する
      • cgi-utilcgi/escape を内包する想定かな
    2. cgi/escape を他のクラスやモジュールに移行し CGI ライブラリと cgi/escape 自体を削除する
    3. 2. + Ruby 3.5 では移行用に cgi-util gem を提供するが非推奨警告を出力する。来年 cgi-util gem を削除する
  • チケットでもいくつかコメントされていたんですが開発者会議で以下が決定したみたいですね
    • CGI.escape* / CGI.unescape* メソッドがない CGI ライブラリを削除する
      • これには escapeURIComponent、unescapeURIComponent、escapeHTML、unescapeHTML、escapeElement、unescapeElement が含まれる
    • cgi/util ではなくて cgi/escape で読み込むようにする
    • cgi/escape は今後も維持する
    • cgi.rbcgi/util.rb を使用すると警告が出る
  • これはすでに対応されており開発版の Ruby 3.5-dev では -W がある場合に以下のような警告が出力されます
$VERBOSE = true

# no warning
require "cgi/escape"

# warning: CGI library is removed from Ruby 3.5. Please use cgi/escape instead for CGI.escape and CGI.unescape features.
# If you need to use the full features of CGI library, Please install cgi gem.
require "cgi"
GitHubで編集を提案

Discussion