Mojolicious 6がリリースされました
少し情報提供が遅れましたが、先日Mojolicious 6がリリースされました。MojoliciousはPerlのWebフレームワークです。
Mojoliciousの作者のセバスチャン・リーデルさんのアナウンスを日本語訳しておきます。
リリース報告
Mojolicious 6.0(Clinking Beer Mugs)のリリースをアナウンスできて、とても大きな喜びに満たされています。これは、コアチームに新しいメンバーを迎えての最初のメジャーリリースです。ようこそ、ヤン・ヘニング・トーセン(Jan Henning Thorsen)。
2015年は、6.0のリリースの年として記憶されるように思えるでしょうけれど、まだこの年は早い時期ですし、楽しみにできることは、たくさんあります。IETFはHTTP/2を承認しました。これが、よいにしろ悪いにしろ、私たちがWebアプリケーションを開発する方法完全に変更してしまうかもしれません。
これが私たちを導く場所を待っていることは、できないでしょう。また、今年はニューヨークでMojoconfがあります。準備はすでに始まっており、まもなく詳細を共有することができるでしょう。
リアルタイムWebテクノロジーはますます主流になってきており、コミュニティは成熟してきましたけれど、着実な成長を続けています。Github上でも、もっともスターがついたPerlのプロジェクトとしての地位を強化できました。
公式ドキュメントには、毎日数百人のユーザーが訪れています。メーリングリストの購読者は1000人を超えました。みなさん、ありがとう。
今年の主要な焦点は、パフォーマンスの改善です。すべての部品がかなり速くなり、スケーラビリティも増しました。新しいいくつかの機能追加もあります。以下は、機能のハイライトです。
- ネストされたヘルパー。ヘルパーを名前空間の中に入れ子にできるようになりmさいた。たとえば、組み込みのヘルパー reply->asset のように。
- IO::Socket::Socksを通したSOCKS5のサポート。
- Net::DNS::Nativeを通して、ノンブロッキングの名前解決のサポート。
- 新しいMojo::DOM。完全にAPIがデザインされなおしました。また、ケース印センシティブな属性のセレクタのサポートが追加されました。[foo=”bar” i]の「ように。
- RFC 3339のサポート。ほとんどすべての新しいREST APIがそれを使います。
- コンテントネゴシエーション。コンテントネゴシエーションは、If-None-Match 、If-Modified-Sinceと一緒に使えます。
- IPv6をあらゆる場面でサポート: IO::Socket::IPが、とても信頼できるものになったので、いつでもそれを使用するようになりました。
- wantarray()は使いません。セキュリティの脆弱性を防ぐために、コードから完全に取り除かれました。
- Mojo::PgとMinion: 安定的な1.0のリリースに到達しました。これは、スピンオフプロジェクトになりました。
- より多くのことを知りたいなら、GitHub上のChangesを見てください。
楽しんでね!
Mojolicious 6で互換性が崩れる部分をピックアップ
MojoliciousはPerlのWebフレームワークのひとつで、ノンブロッキングI/Oをサポートしているので、並列HTTPリクエストに対する処理が最適に処理されるようになっています。
Mojoliciousの互換性は、全体的に高いですが、将来のために、部分的な非互換を許容しています。ですから、Mojoliciousは新しいバージョンいきなりアップグレードするのではなくって、開発環境で試験をしてから、アップグレードしてくださいね。
Mojolicious 6において互換性が崩れる部分が少しありますので、その部分について書いておきます。
paramメソッドは、リストコンテキストで評価されなくなりました。
paramメソッドは、リストコンテキストで評価されなくなりました。セキュリティの脆弱性を防ぐために、コード上のwantarrayを使っている部分ががすべて取り除かれました。
以下のようなコードが、以前のようには機能しなくなるので、注意してください。
my @params = $c->param('title');
paramメソッドは、配列のリファレンスを受け取らなくなりました。
paramメソッドは、配列のリファレンスを受け取らなくなりました。以下の記述が以前のようには、機能しなくなるので、注意してください。
my @params = $c->param(['title', 'author']);
paramメソッドの一部仕様変更は、広い範囲に影響があると思われますが、Webアプリは、セキュリティリスクを下げる必要が高い分野ですので、これは、いたしかたがないと感じます。上記のふたつのコードが利用されている可能性があれば、チェックしてみてください。
Mojo::JSONのオブジェクト指向サポートがなくなりました
Mojo::JSONのオブジェクト指向サポートがなくなりました。もし次のように記述していた場合は、下のものに書き換えてください。
# 旧 use Mojo::JSON; Mojo::JSON->new->encode($foo); Mojo::JSON->new->decode($foo); # 新 use Mojo::JSON 'encode_json', 'decode_json'; encode_json($foo); decode_json($foo);
render_static, render_not_found, render_exceptionがなくなります
コントローラクラスのrender_static, render_not_found, render_exceptionがなくなります。代わりに次のように記述しましょう。
# 旧 $c->render_static($path); $c->render_not_found; $c->render_exception; # 新 $c->reply->static($path); $c->reply->not_found; $c->reply->exception;
bridgeがなくなってunderになります。
bridgeと書いているところはunderに変更しましょう。
# 旧 $r->bridge(sub { ... }) # 新 $r->under(sub { ... });
Mojo::DOM周辺はまだ安定していません
Mojo::DOM周辺の実装はまだ安定していませんので、もし使っている場合は、変更箇所を確認しましょう。