Firefox 79: 一般ユーザーにとっては薄いリリースだが、開発者にとっては貪欲に取り組める内容が豊富

Table of Contents

Firefox 79: 一般ユーザーにとっては薄いリリースだが、開発者にとっては貪欲に取り組める内容が豊富

Mozilla の Firefox 79 がリリースされましたが、一般ユーザーは興奮しすぎる必要はありません。新機能のほぼすべては開発者向けです。

4 週間のリリース サイクルの問題点は、このような速いペースで注目すべき新機能を考案することが困難であり、安定性と親しみやすさも歓迎される属性であるため、おそらく望ましくないということです。

Firefox 79のリリースノートは簡潔です。GPUを使用してページレンダリングを高速化し、スムーズにするWebRenderを利用できるユーザーが増えています。具体的には、AMD GPUを搭載したWindows 10ユーザーは、バッテリー駆動時でもWebRenderを利用できるようになります。MacとLinuxユーザーは、プレリリースビルドを利用しない限り、まだ対応を待っています。MacではWebRenderの「リリースを阻むバグ」が依然として存在します。

セキュリティ上の修正も含まれています。多くのウェブページでは、target="_blank"リンクをクリックした際に別のタブやウィンドウが開く間も、読者は元のページに留まるようにオンリンクが使用されています。この方法の問題点は、リンク先ページが window.opener プロパティを介してソースページにアクセスしてしまうことです。これにより、ユーザーは逆タブナッピングの危険にさらされます。修正方法は、rel=noopenerリンクに を追加し、window.opener プロパティを null に設定することです。Firefox 79 では、この処理が自動的に行われるようになりました。正当な理由でこのリンクが必要な場合は、明示的に有効化できます。

リバースタブナッピングの仕組み(写真:OWASP)

リバースタブナッピングの仕組み(写真:OWASP)

ハッキングされないことに加え、共有メモリの復活によりスレッド間の高速通信が可能になり、パフォーマンスの向上も実感できるでしょう。これは、Spectreやその他のプロセッサバグによって危険性が高まったため、2018年に無効化されました。現在は再度有効化できますが、ポップアップを含む、同じタブ内にある特殊なヘッダーが設定されたウェブページのみに適用されます。

最大のリリースではありませんが、特にタブナップされてしまう人にとっては良い作品です。

開発者はより多くの遊びを見つけるでしょう。 を使用すると、Promise.any()複数のPromiseを起動し、最初に解決したPromiseを履行するコードを記述できます。これは試験的な機能として説明されています。既存の と似ていますPromise.raceが、 ではPromise.race、返される最初のPromiseが拒否された場合、他のPromiseの1つが解決されても、Promiseは拒否されるという点が異なります。Promise.anyの方が便利そうです。

珍しい演算子が好きな人にもきっと気に入っていただけるでしょう。Firefox 79 では、 を含む論理代入提案が実装されており??=、これは左辺が null または undefined(「nullish」)の場合にのみ代入を行います。

さらに、弱参照(ガベージ コレクションによってメモリから削除されることを妨げずに対象オブジェクトを参照すること)(注記には「可能な場合は避ける」と記載されています)、共有メモリが有効な場合の WebAssembly スレッドを含む新しい WebAssembly 操作、tab.warmup()ユーザーが新しいタブを開こうとしている場合のパフォーマンスを向上させる機能などがあります。

デバッグツールも強化され、非同期スタックトレース機能が追加されました。これにより、Promiseやその他の非同期コードのデバッグが容易になり、ネットワークリクエストエラーがデバッグコンソールに表示されるようになりました。以前は、これらのエラーはデバッグツールのネットワークパネルにのみ表示されていました。デバッガーも改良され、ソースコード内のエラーが説明付きでハイライト表示されるようになりました。また、「フレームを再開」機能も追加されました。これは、コールスタック内の現在のフレームの先頭に戻る機能です。注記には「現在のコールスタック内でタイムトラベルする」と記載されていますが、変数は元の値にリセットされません。®

Discover More