Firefox 5 is here

原文: Firefox is here

本日,  Firefox 4 のリリースより3ヶ月を経て、私達は Firefox 5 をリリースしました。新しい development cycle による最初のリリースです。開発者はよりリッチなアニメーションを CSS3 Animations を使うことで作成できます。このリリースでは様々な改善、性能の最適化、そしてバグ修正が行われました。

CSS3 アニメーション

CSS アニメーション (この文書を参照してください) は、CSS を使用してアニメーションを作成する新たな手段です。  CSS Transitions のように、効率的でスムーズに動きます (David Baronの 投稿記事をご覧ください)また、開発者はそれぞれのステップ(keyframes)においてよりきめ細かな制御を行い、複雑なアニメーションを作成することができるようになりました。

主な変更

  • createImageData への引数として、寸法をコピーするための画像を渡すことができるようになりました。
  • setTimeoutsetInterval はアクティブでないタブでは1秒に1度だけコールバックを実行できます。これは、requestAnimationFrame の挙動に沿い、CPU と電源の消費を減らすためです。

その他のバグ修正と性能の改善:

HTML

Canvas の改善

  • <canvas> 2D 描画のコンテキストにおいて ImageData オブジェクトを createImageData() メソッドへの入力として指定できるようになりました; こうすると指定されたオブジェクトと同じ寸法を持ち、すべてのピクセルが透明な黒にセットされた 新たなImageData オブジェクト を生成します。
  • CanvasGradientaddColorStop() メソッドの呼び出しで非有限なカラーストップが指定された際、INDEX_SIZE_ERR が適切に投げられるようになりました (これまでは SYNTAX_ERR が投げられていました)。
  • HTMLCanvasElementtoDataURL() メソッド実装が修正され、指定した MIME 型をマッチングの前に小文字に変換するようになりました。
  • getImageData() が修正され、canvas の境界を超えた矩形を受け入れるようになりました。canvas 外にあるピクセルは透明な黒として返されます。
  • drawImage()createImageData() が仕様に準拠し、負の引数を処理するようになりました。この処理は、適切な軸にそって矩形を反転させます。
  • createImageData() の呼び出しで非有限な値が指定された際、NOT_SUPPORTED_ERR が適切に投げられるようになりました。
  • 1px より小さな矩形が指定された際、createImageData()getImageData() は適切に 1px 相当の ImageData を返すようになりました。
  • createRadialGradient() の半径に負の値を指定した際、INDEX_SIZE_ERR が適切に投げられるようになりました。
  • createPattern()drawImage() の呼び出しで、画像に nullundefined が指定された際、TYPE_MISMATCH_ERR 例外が適切に投げられるようになりました。
  • globalAlpha に不正な値が指定されても SYNTAX_ERR 例外が投げられないようになりました。このような場合は適切にただ無視されます。
  • translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo(), arc() に不正な値が指定されても例外が投げられないようになりました。このような場合は適切にただ無視されます。
  • shadowOffsetX, shadowOffsetY, shadowBlur に不正な値が指定された際、それらはただ無視されるようになりました。
  • rotate, scale に不正な値が指定された際、それらはただ無視されるようになりました。

CSS

  • CSS animations のサポートが追加されました。現時点では -moz- プレフィックスを付けて使ってください。

DOM

  • selection オブジェクトの modify() メソッドが変更され、単語の選択で単語の後にある空白を含まなくなりました。この変更でプラットフォームを超えての一貫性が向上し、また WebKit の挙動とも一致します。
  • アクティブでないタブにおいて window.setTimeout() メソッドのタイムアウトが 1秒に1回を超えることがなくなりました。また、入れ子のタイムアウトが HTML5 仕様で定められた最小値 4ms になりました (これまでは 10ms でした)。
  • 上記と同様に、アクティブでないタブにおける window.setInterval() メソッドのインターバルも 1回/s 以下になりました。
  • XMLHttpRequest が進行リスナの loadend イベントをサポート するようになりました。このイベントはすべての転送が終了した際 (つまり、abort, error, load イベントの後) に発生します。このイベントを利用すると、転送の成功・失敗に関わらず実行されるタスクを処理できます。
  • Blob オブジェクトと File オブジェクトの slice() メソッドが削除され、代わりに提案中のメソッドに置き換えられました。提案中のメソッドは JavaScript の Array.slice(), String.slice() メソッドにより近いものです。現時点では mozSlice() という名前がつけられています。
  • window.navigator.language の値が Accept-Language HTTP ヘッダ の値から決定されるようになりました。

JavaScript

  • 正規表現を関数のように呼び出せなくなりました。この変更は WebKit チームと互換性の確保について話し合った結果行われたものです( WebKit bug 28285 をお読みください)。
  • Function.prototype.isGenerator() メソッドがサポートされました。このメソッドによってある関数が generator であるかを調べられます。

SVG

  • class SVG アトリビュートを動的に変化させられるようになりました。
  • SVGLengthList , SVGNumberList , SVGPathSegList , SVGPointList など、オブジェクトのリストを表す SVG DOM インターフェースがインデックス可能となり、配列のようにアクセスできるようになりました。加えて、リスト中の項目数を表す length も持ちます。

HTTP

  • Firefox は “Keep-Alive” HTTP ヘッダを送信しなくなりました。私たちはこのヘッダを正しく整形していませんでした。また、 Connection:Proxy-Connection: ヘッダに “keep-alive” を指定していたため、これらと重複していました。
  • HTTP のトランザクションモデルを変更し、持続的接続プール内の接続を再利用するという、より高度なものになりました。Necko はプールを FIFO として扱うのではなく、プール内の接続を congestion window (CWND) の大きい順に並べ替えます。多くのケースで Window のサイズ拡大を避け、 HTTP トランザクションの確認応答時間 (RTT) を減少させることができるでしょう。
  • Firefox は Content-Disposition HTTP レスポンスヘッダについて、filename, filename* パラメタがどちらも与えられている場合にそれらをより効果的に処理するようになりました。これは filename が先に与えられている場合でも  filename* をまず調べすべての名前を読み取ることで実現しています。これまでは最初にマッチしたパラメタが使われており、後により適切な名前が与えられていた場合でもそれが使われなかったのです。詳細は bug 588781 をお読みください。

MathML

開発者向けツール