2014年8月20日水曜日

Google Dartが気になる。

Googleが開発を進めている言語 Dart が気になります。
javascriptの欠点を解決したうえに、サーバーでもクライアントでも使え性能も良かったりする、いわゆるjavascript代替言語altJSの一派です。
altJSといえば Typescript, CoffeeScript などがありますが、Dartが個人的に素敵だと思うところは、

・コンパイル無しに直接VM上で実行できる
・言語だけでなく開発環境もしっかりしている
・言語仕様がモダンな感じ
      javascriptのエグい言語仕様(class風に書くのも自由すぎて一苦労、thisがコロコロ変わる、変数スコープが関数、等々々)から解放される。
・性能も良さそう。Isolateでスレッド分離してるから、並列化のボトルネックになるGIL(Global Interpreter Lock)もきっと無いに違いない。

です。

気になってインストールしてちょっと使ってみた感想は
・DartEditorのコード補完の気持ち良さや型付き言語風の守られている感は、今までの動的言語とは次元が違う感じです。統合開発環境もいい感じ。
・promise(コールバック地獄回避)とかarrow function(=>)もあたりまえに使えるのでスッキリ書けそう。
・javaやjavascriptと構文が似てるので案外スルスルっと書けそう。
・サーバー/クライアントどちらでも使える書き方はヤッパリ難しそう。サーバー側からはDOM (dart:html)をなかなか触れないとか、クライアント側からファイルIO(dart:io)触れないとか、クロスドメインアクセス制限はやっぱりあるとか、当たり前と言えば当たり前の制限なんだけど思ってたんと違う感が...
・ライブラリアーカイブ(pub)の品揃えがやっぱりまだまだ。

総評としては、期待の超大型新人、仕事はこなすし、実績積んで人脈広げたら将来天下取るかもよ? という感じです。

現時点で勝ってに比較するなら、
   node.js > Dart
かと。
頑張れDart応援してるぞ!(=普及したらちゃんと使ってみようかな)

2014年8月9日土曜日

祝! linux 3.16 kernel公開

linux 3.16が7回のリリース候補を経て公開されました。(言ってる間にlinux 3.17-rc1も公開されちゃいましたが...)
前回のlinux 3.15も凄まじい量の更新がありましたが、今回の3.16の目玉はarm 64bit対応の更新でしょう。

まもなく公開されるllvm/clang 3.5ではappleが寄贈したarm64コードが取り込まれ、
今秋の次期android "L"に置いてもarm64対応が謳われています。

モバイルの64bit CPU普及の準備が整ったといえるでしょう。

ところでandroidのlinux kernelはNexusシリーズのandroid Lでも3.4.0と本流からするとかなり古いものを使っています。

android kernelは標準のlinux kernelから省電力やプロセス権限など随分変更点があるようですが、arm64対応を考えると最新のlinuxに追従しておきたいところなおではないでしょうか?

android kernelの対応版はLSIチップベンダー主導で進められることが多く、
linuxのarm対応進めているlinaroではlinux3.16-rc6ベースのandroid kernelが公開されています。

Linaro Release
http://releases.linaro.org/14.07/components/kernel/linux-linaro

とはいえ、まだ安定版とはいえない状況のようなので、今秋発表されるといわれている初の64bit arm端末Nexus9ではどうなっているかが気になります。
(Nivdiaが泣きながら64bit Denver対応を頑張っているのでしょうが...)

8/25のllvm3.5リリースといい、今秋にむけてarm64の動向は目が離せません。

2014年8月8日金曜日

FTL llvm: javascriptをコンパイル?!

fourth tier llvm(FTL)なるものが開発中らしい。
chromeブラウザのV8 みたいにjavascriptを高速化する技術なんですが、これがappleのSafariに載るらしい。
safariもnitroとかいうjavascriptエンジンで既にかなり高速化しているんですが、FTLの何がスゴいってllvmでjavascriptをコンパイルしちゃうらしいんですよ!

ここまで聞いて詳しい方なら、「ああ、あれね、 llvmとjavascriptね。ecmascriptenとかasm.jsでやってるやつね。」といわれるかもしれませんが、

違う!違うんです!

ecmascriptenはC言語からjavascriptに変換。
FTLはjavascriptからネイティブコードに変換。

なんです!

XXX言語(のllvm中間言語)からネイティブコードに変換はllvm様のバックエンドの力を持ってすれば造作もないことなのはわかりますが、javascriptのような型の無い いい加減な、否、柔軟な動的言語をllvm中間言語の変換するとは!!フロントエンドで一体どんな革命が起きたのか!

答えはこちら!
FTL: WebKit's LLVM based JIT

...難しくてわからんがな。易しく教えて偉い人。

なんにしてもllvmプロジェクトにとっても動的言語への対応は挑戦的なことみたいですね。

カリカリに高速化されている現状からさらにこんな高速化って凄まじいなぁおい。

今秋リリースのiOS8にも載るとか載らないとか。早~く来い来いiPhone6~♪