といってもネタは3週間以上も前のもの。5月8日に「safari-538.34-branch」というWebKitのブランチが切られた。
昨年も書いたのだけど、これまでの動きから考えてこれが次のSafariのもとになるブランチのはず。というわけでコミットログとかから次のSafariを予想しようかと。
WebKitのMac portで有効にされる機能は、FeatureDefines.xcconfig というファイルで管理されている。これらはビルドフラグなので、有効にされてないとナイトリーでも使えない。あと、ランタイムフラグもあるらしいんだけどこれは詳しく知らない。
Safari 8に入りそうなもの
538ブランチのFeatureDefines.xcconfigで有効にされてるものはこんな感じ。
- CSS Shapes
- Indexed Database API
- Media Source Extensions
- Promises
- Subpixel Layout
<template>
Element- FTL JIT
このうち、IndexedDBについてはバグのコメントを読むとwindow.IndexedDB
にアクセスしてもnull
を返すように仕組んであるとか書いてある。ソースのコメントによるとまだ作ってる最中という話だけど、状況はどうなのかしら。
FTL JITは昨年ブランチ後にパッチがガンガン入っていたし、先日Surfin' Safariでも大々的に取り上げられた。
その他入ったもの
とかとか。昨年から真面目に追いかけてないのもあって思い出せない……
JavaScriptCoreに追加されたもの
JSCにはENABLEマクロ的なものが見当たらない。ここらへんSpiderMonkeyみたくそんな後方互換性重視してないのかなという感じがする。
というわけでJavaScriptCoreのログをふにふにと追ってみた。
Array.prototype.find()
Array.prototype.fill()
Math.hypot()
Number.prototype.clz()
Array.prototype.keys()
/values()
/entries()
Math
functionsMap
iteratorsSet
iterators- for-of
- Destructuring assignment
Set
Map
- Spread operators
ES6がいろいろ入った。Spread oprsやDestructuring assgnmnt、for-ofはうれしい。
あとArray
の関数がJavaScriptで書き直されたりもしていた。その前にビルトイン関数をJavaScriptで書けるようになったので、今後他のものもJavaScriptで書かれるようになるんだろうか。
Safari 8に入りそうにないもの
538.34ブランチで無効にされてるものはこちら。
- CSS Exclusions
- Shared Workers
- Grid Layout
- Canvas Path
- Web Timing
<input type="color">
しゅーん。
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_101000
というので特定のOS Xで有効にされてるのは他にもある。
こんな感じかなあ。さてどうなりますかね。