SSブログ

Swift2がオープンソースに [日常のあれやこれや]

今年もWWDCが始まった。はでな新製品の発表なんかはもうついていくことができなくて、ふーん、で終わってしまうんだけど、今回はちょっとびっくりしたことがあった。Objective-Cに代わる専用言語のSwiftがオープンソース化されるという。でも、オープンソースにするということはどういうレベルのことを言っているんだろう。

Swiftは新しいシンタクスのコンパイラ用の言語だけど、実行時は(少なくとも今のところは)Objective-CのランタイムとCocoaフレームワークに完全に依存している(もちろん他にもGCDやブロック(クロージャ)やARCなんかの機能にも依存してる)。Swiftをオープンソースにして、例えばLinuxでも開発と実行ができるようにするためには、コンパイラの構文解析なんかの部分だけでなく、実行環境もなければ不可能である。

ということはとうとうCocoaフレームワークのコードが公開される、ということになるんだろうか?それとも他のOSにはSDKとライブラリが供給されるだけなんだろうか、それとも例によって他のOSは知らないよん、ということなんだろうか。

Objective-CはCLANG+LLVMがオープンなので実質的にコンパイラ部分は完全に公開されていて、ランタイムはそれとは別にDarwinの一部として昔からずっと公開されている。でも、動作させるためには最低でもFoundationフレームワークが必要だけど、そこは見ることができない状態になっていて、例えばLinuxで実行しようとすると、Foundationとは別の例えばGnuStepが必要になる。

Swiftの公開のレベルがこれと同じようなものだったら、がっかりだなあ。

追記:
長くなったので、続きへ....

発表の中にLinuxにも対応とあった。少なくともLinuxにSDKとライブラリは供給されるということになる。でもそうするとClang+LLVMも必要になる。Linuxのコードにはgcc決め打ちのがけっこうあったと思うので、そのときは両方持たないといけなくなる。

でもきっとSDKにはFoundationのヘッダだけで実行時にバイナリをリンクするかっこうなんだろうなあ。その場合AppKitはどうするんだろうか。X11に移植されるんだろうか。それともWindowServerごと、なんてことはないわなあ。ほんとにどうするんだろ???



さらに追記:
そもそも、SwiftをオープンにするAppleの目的はなんなのか。

Swiftを使えばiOSとLinuxの両方で動きますよ、iOSはこれからどんどん性能が上がりますよ、という触れ込みでLinuxに新しい開発者を呼び込もうと考えているのか。ただそれだけでAppleがソースを公開するとは思えない。

gccとClang+LLVMの違いはコンパイルや実行の速度のベンチマークばかり取りざたされてるけど、結構大きな違いだと僕は思っている。

Clang+LLVMは単なるピープホールな最適化だけでなく、構文解析と結びついた高いレベルの最適化が超強力で、これがなかったらARCやブロック(クロージャ)は実現できなかったし、Swiftがこんなに短期間には導入できなかっただろうと僕は思っている。

一方、gnuの高品質なプロダクトはgccがなければ成り立たなかったし、Linuxの移植性の高さもgccがあったからこそで、今のオープンソースの隆盛はgccに支えられていると言っていい。しかもそうやって20年間もコミュニティを支えてきた驚くべきコンパイラである。

Clang+LLVMにはAppleの影響力が及んでいる。Appleはgccに貢献するように見せかけて結局踏み台にしたと言われてもしかたない状況になった。レガシーな部分はさっさといさぎよく捨てるAppleらしい態度ではある。

Swiftそのものが目的ではなく、Swiftを使ってFoundationなどのプロプライエタリなプロダクトへの依存を増やそうというのではないか。Clang+LLVMをその実現のための秘密兵器とするつもりなのではないか....

Foundationの公開がありえない、と僕には思えたので。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。