「どんな種類の獣?」-私は考えて、登って情報を探しました。 私が見つけたのは、感動したことです。
クリスタルを満たす
言語を作成するために、著者は次の目標を設定しました。
- 最もRubyの構文を持っている
- 型推論がある
- バインダーを作成してCコードを呼び出す
- コンパイル段階でコードとコード生成を実行できる
- すべてをネイティブコードにコンパイルする
Ruby構文の簡潔さ+ Cの速度? いいですね。
githubリポジトリへの最初のコミットは2012年9月2日に行われました。 現在、言語の開発はバージョン0.7.1のアルファ段階にあります-構文と標準ライブラリは変更される可能性があります。
興味深いことに、バージョン0.7.0では、デフォルトですべてのIOが非同期になりました。 Goでは、Crystalでは、チャネルを使用してマルチスレッドを簡単にできます。 素数の計算例(Goから移植されたリポジトリの例)で、チャネルの使用がどのように見えるかを以下に示します。
def generate(chan) i = 2 loop do chan.send(i) i += 1 end end def filter(in_chan, out_chan, prime) loop do i = in_chan.receive if i % prime != 0 out_chan.send(i) end end end def run_filter(in_chan, out_chan, prime) spawn { filter(in_chan, out_chan, prime) } end ch = Channel(Int32).new spawn { generate(ch) } 100.times do prime = ch.receive puts prime ch1 = Channel(Int32).new run_filter(ch, ch1, prime) ch = ch1 end
リポジトリには、 赤黒木の実装、 光線追跡 、 N体問題の解決 、 ニューラルネットワーク 、 ブレインファックインタープリターなど、さまざまな問題を解決するための言語の使用例が多数あります。 単純なhttpサーバーの例もあります。
7月6日に、開発者はプラハで開催されたCurry Onカンファレンスで言語に関するプレゼンテーションを行います。