bytes.pm will be deprecated in Perl 5.12

[追記]その後deprecated(廃止予定)ではなくstrongly discouraged(強く非奨励)に状態が改められたが、使用すべきでないという点は変わらない。[/追記]
bleadperlのコミットログを眺めていたところ,以下のような記述があった。

この件でTwitterで議論が起きたので,Togetterでまとめてみた。

要点をまとめると以下のようになる。

  • Perlの文字列モデルを正しく理解していれば,bytes.pmを使う必要はない
  • 入力されたデータををdecode,出力するデータをencodeする,というスタイルを採用すれば,bytes::lengthなどは必要ない
    • たとえば,PSGIの仕様では,encodeした文字列を渡すことになっている
    • decode/encodeが面倒なら,その面倒をみるようなフレームワークを使うとよい
  • 文字列モデルを意識しないまま,utf8のままのバイト長をbytes::lengthで取るのは逆に危険
  • ただし,それでもbytes::length相当のものは必要という意見もある

こんなところか。deprecateの報を見て最初は驚いたが,いろいろな人の意見を聞いているとどうやら妥当な変更のようだ。

*1:まだrepository上での変更であり,「次の正規リリースでdeprecatedになる見込み」が正しい