この記事は Crystal Advent Calendar 2015 の 5 日目の記事です
凄い!Crystalのアドベントカレンダーが二組同時に走ってる!
[このカレンダー]
(http://www.adventar.org/calendars/800) と並行したもう一つの tmtmsさんの一人カレンダー
こんにちは yahhonobです。
東京Crystal勉強会 第1回で RuPyの流れでCrystalは生まれた! という滑りそうなネタをLTしましたが、こちらも覗いてもらえると感謝です。
滑りそうでしたが、元気がもらえたとのコメントもいただいてちょっと嬉しくなりました。
今日はプログラミングネタというより Crystal言語にまつわる私の誇大妄想的想像ネタを書きます。
twitterではリツイートが多いですが、ほとんど Crystal言語ネタとコンパイラ言語ネタです。最初の Crystal言語関係ツイートは ”Ruby Topaz Crystal Mirah Ruby周辺は名前が華やかな” でした(^^)。
あ、まず最初に Crystal の作者 Aryさん ご結婚おめでとうございます!!
この情報は、14日カレンダーに登場するトルコの sdogruyol さんの11月8日の Twitter情報からです。
その後 Aryさんが自身 issueの中でプライベートが忙しくなるから、と暗に認めておられます!!!
そういえば、確かにあれだけプルリクとレスを書きまくっていた Aryさん、ここ1か月くらい静かだと思いませんか?
これには、ご結婚と、もう一つ別の理由がありそうです。
その前10月初めに一度 Aryさんが一週間ほど静かになって出没しなくなった時期がありました。
私は Crystalの開発を横で見ているのが楽しくて、2年半以上眺めているわけですが、このとき不安に駆られました。
Manas社の活動資金が底をついて、もう今までのようなペースで開発されなくなるのじゃないかと...そういえば8月 bountysource で活動資金を募集始めたし..
つい10月10日のTwitterにはこんなことを書いてしまいました。"Manas #crystallang is still silent today,what happen next?"
ところが心配は、思いっきり裏切られました。Aryさんはブランチで Crystal Formatterを熱中して開発していました。ほぼ一週間で Goformat の Crystal版が出来てしまったのです! す凄い!
で、今の静けさですが、これは Aryさんが [The next step #1824] (https://github.com/manastech/crystal/issues/1824) に関連して IRC CHAT #crystal-lang とか Google-Group-Crystal で秘密を漏らしていますが、新しいコンパイラの開発を見えないブランチで取り組んでいるそうです!!
新コンパイラ書き直しの動機は Crystalの大規模プロジェクトで Go, Swift, Rust にコンパイル時間に引けを取りたくない、とのことだそうですし、たぶん issueで要望されている機能充実を織り込んで、突然現れてくれるのではないかと、まさに妄想しています!! 楽しみですね!
前書きが(?)長くなりましたが、ぜひ一つ Crystal言語周りで紹介したい別のプログラム言語があります。
Rustライクな Brickといいます。作者は Rust大好き人間だそうですが、それでも Brickが欲しいと思い、開発されています。
それは Rustがシステムプログラミング言語であるからだそうです。つまり Brickはシステムプログラム言語ではなく、Rustっぽいけれどもうちょっとアプリ寄り向けの言語です。作者はそういった言語が日ごろ使う領域なので好きだそうです。
Crystal言語はまさに、そういった上位スタック向けを狙ったプログラム言語と Aryさんが言い切っています。凄く存在箇所が明確ですね。
この存在箇所が明確なところが、最近あちこちで Crystal言語が引用されている気がしませんか?
The End of Dynamic Languages とか、
Have Static Languages Won? で両方でCrystalが良い方向と引用されています。
また Rubyの本流でも引用されてたりします。
「20年目のRubyの真実」インタビュー では笹田氏とMatzさんの会話でCrystal言語が引用されています。
それから、12月11日 RubyKaigi2015 Tokyoで Heroku の Will Leinweber さんが Introducing the Crystal Programming Language を講演されます!
私は残念です、行けないので。 聞かれた方、ぜひ早めにblogしてください!
こりゃあ、もう、まもなく Crystal言語 は本流の仲間入りですね! よき Diversity 仲間 として。
Ruby3*3にも影響してるのではないかと、勝手に妄想しちゃってます。
妄想は広がり、いつか Crystal言語の良さにアルゼンチンの大学や国が注目して、ブラジルの Lua, アルゼンチンの Crystal になったりして..
ところで、私はコンパイラマニアのはじくれですが、新言語がメジャーになっていくのは、
見ていて並大抵ではありません。 理由の一つにコンパイラの言語仕様の魅力にくわえて、オブジェクト効率や実行速度が、そう簡単に実現できないからです。
ところが近年新言語に追い風が吹いています。 コンパイラインフラ LLVM が登場、普及してきたためです。
Apple が全面採用し、Swift, Go, Rust, Julia 話題の言語は皆 LLVMベースです。 コード生成最適化は大変な作業で、ここで投資ができるコンパイラだけが生き残ってきた側面があります。
Crystal言語は、LLVM を最初からレスペクトし、最適化作業は LLVMに任せて、言語仕様、構文解析とライブラリ充実に専念して(うまく大域最適化ができるよう情報をどれだけ LLVM に渡せば良いかを意識して)インフラとして骨までしゃぶっていることが Crystal言語を後押ししているのは明瞭です。( Crystal言語は8コア並列実行コードがデフォールト設定です)
Ary さんは LLVM, Clang をかなり経験して精通している方のようで、コンパイラにインラインアセンブラ機能を追加するのを1日、2日で終えています。
それに加えて言語の解釈を大胆にオブジェクト 32ビットバイナリにマッピングしていますが、この辺りはカレンダでどなたかが解説してくれると期待します。
最後に
Crystallian という英文での Crystal情報Web も公開しています。こちらもよろしくお願いします。
Windowsで Crystal言語 ちょっとでも移植できないか、横好きでトライ始めているのですが、
11月30日に Visual Studio 2015 Release1が clang/c2/LLVM 織り込みで公開されました。
こちらは愛機 Windows10 では、まだインストールでエラーになってしまっています。
どなたかカレンダーでトライされた結果を楽しみにしています!