Safari 8?の機能予想

WWDC直前ということでSafariの話題を。

といってもネタは3週間以上も前のもの。5月8日に「safari-538.34-branch」というWebKitのブランチが切られた。

昨年も書いたのだけど、これまでの動きから考えてこれが次のSafariのもとになるブランチのはず。というわけでコミットログとかから次のSafariを予想しようかと。

WebKitMac portで有効にされる機能は、FeatureDefines.xcconfig というファイルで管理されている。これらはビルドフラグなので、有効にされてないとナイトリーでも使えない。あと、ランタイムフラグもあるらしいんだけどこれは詳しく知らない。

Safari 8に入りそうなもの

538ブランチのFeatureDefines.xcconfigで有効にされてるものはこんな感じ。

FTL JITは昨年ブランチ後にパッチがガンガン入っていたし、先日Surfin' Safariでも大々的に取り上げられた

このうち、IndexedDBについてはバグのコメントを読むとwindow.IndexedDBにアクセスしてもnullを返すように仕組んであるとか書いてある。ソースのコメントによるとまだ作ってる最中という話だけど、状況はどうなのかしら。

その他入ったもの

とかとか。昨年から真面目に追いかけてないのもあって思い出せない……

JavaScriptCoreに追加されたもの

JSCにはENABLEマクロ的なものが見当たらない。ここらへんSpiderMonkeyみたくそんな後方互換性重視してないのかなという感じがする。

というわけでJavaScriptCoreのログをふにふにと追ってみた。

ES6がいろいろ入った。Spread oprsやDestructuring assgnmnt、for-ofはうれしい。

あとArrayの関数がJavaScriptで書き直されたりもしていた。その前にビルトイン関数をJavaScriptで書けるようになったので、今後他のものもJavaScriptで書かれるようになるんだろうか。

Safari 8に入りそうにないもの

538.34ブランチで無効にされてるものはこちら。

しゅーん。

Web TimingはNavigation Timing, Resource Timing, User Timingを指す(もともとGoogleから提案された時にWeb Timingという1つの仕様だったことに由来する)。Trunkで有効にされてうおーって思ったのだけど、ブランチが切られてからしばらくして消されてしまった。ただ作業はしているので、実装が追いついてないのかもしれない。

機能的にこれからというものもある。CSS Exclusionsはparsingしか入ってなかったらしい

他にもChromiumが離脱した絡みか、Shadow DOMやらiframe@seamlessとかいろいろなくなっていたりする。

よくわからないもの

条件付きで有効にされているものがある。そのひとつがtelephone number detectionで、iOSの電話番号に自動リンクつけるやつ。たぶんiOSのコードをupstreamした関係でWebKitの方にも入ったのだけど、今年のはじめの方にちょこちょこ作業されてて、Mac port用のマクロが用意されている。有効にされてるのは ENABLE_TELEPHONE_NUMBER_DETECTION_macosx_101000 となってるので、10.10なんだろう。あれが便利だと思ったことはないのだけれど、デスクトップにもあの機能がつくのかな。

ENABLE_FOO_macosx_10nnnn っていう特定のOS Xで有効にされてるのは他にもある。


こんな感じかなあ。さてどうなりますかね。