最近、Firefox Nightly 44の起動時にセッションを復元するようにしておくと、起動直後にタブ内が真っ白になり、本体のメニューパネルも開けないという事態に遭遇した。アドオンマネージャからマルチプルタブハンドラを無効化すると症状が治まったので、しばらくそのままにしていたのだが、調べてみたところ、2015年10月7日(米国時間)にBug 589199の修正パッチがコミットされたのが原因だったようだ(なお、10月13日にRESOLVED FIXEDとなった)。
同バグの修正により、トップレベルにおけるletおよびconstの扱いは、ECMAScript 2015 Language Specification(通称ES6)の仕様に合わせる形で変更された。その結果、以下のような具体的な影響が出ている。
どのBugで変わったのかは分からないけど、constで宣言された変数がグローバルオブジェクトのプロパティにならなくなってて(これは前からか?)、別のスクリプト内のeval()内で再定義された関数からは参照できないという挙動になったような気がする。
— Piro/「シス管系女子」好評発売中! (@piro_or) 2015, 10月 10
マルチプルタブハンドラだけでなく、ツリー型タブも動かなくなったわけだ。ちなみに、恒例行事になりつつあるが、はてなブックマーク拡張もアウトである。
マルチプルタブハンドラ、ツリー型タブ、テキストリンクなど、Piroさん作のアドオンに関しては、Nightlyビルドでしのげる。ただし、xpinstall.signatures.requiredをfalseに変更してFirefox側のデジタル署名チェックを回避することが前提なので、Nightly/Auroraチャンネル限定である。
問題は、Thunderbirdの開発陣が"Great JS Breakage"と呼んで懸念する今回の修正が、どの程度の範囲にまで影響するかだ。標準仕様をサポートするものなので、Mozillaが撤回することはまずあり得ない。現時点で有名どころの拡張機能がいくつも引っかかっているところをみると、影響範囲は決して小さくないと考えるべきだろう。
しかも、折悪しくFirefox 44は拡張機能のデジタル署名が必須となる時期である。また、マルチプロセス化(e10s)のA/BテストがFirefox 43 Betaで行われる予定であることから、e10sがFirefox 44リリース版で有効化される可能性は高い。つまり、Firefox 44では、アドオン互換性に大きく影響する措置や修正が重なりそうなのだ。準備期間があるとはいえ、アドオン作者がさじを投げてしまわなければよいが……。