Amazon Linux で Crystal を動かしてみた

最近 Ruby-like な Crystal という言語が流行っているようで、勉強会に参加してみたということもあり、Amazon Linux にインストールして、ちょっとだけいじってみました。

インストール

Installation On RedHat and CentOS にあるとおりにすれば問題なくインストールできます。1

$ curl http://dist.crystal-lang.org/rpm/setup.sh | sudo bash
$ cat /etc/yum.repos.d/crystal.repo 
[crystal]
name = Crystal
baseurl = http://dist.crystal-lang.org/rpm/
$ sudo yum install -y crystal gcc

実行

Hello, world を書いてみます。

$ echo 'puts "Hello, world!"' > helloworld.cr

ビルドすると、カレントディレクトリに実行形式ファイルが生成されます。2

$ crystal build helloworld.cr
$ ls
helloworld  helloworld.cr
$ ./helloworld 
Hello, world!

Crystal 用 runtime などに依存しているわけではなさそうため、立ち上げただけで何もインストールしていない素の EC2 (Amazon Linux) インスタンスでも実行させられそうです。3

$ ldd ./helloworld
    linux-vdso.so.1 =>  (0x00007ffed0fde000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f848edff000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f848ebe3000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f848e9cc000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f848e60b000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f848f00d000)

まとめ

まだまだプロダクトに使えるほどの実績があるわけではないですが、ちょっと試してみたい場合にも EC2 でさくっと動かせることが確認できました。


  1. ビルドにはリンカが必要になるため gcc もインストールしておきます。 
  2. カレントディレクトリに .crystal というディレクトリが生成され、その配下にオブジェクトファイルが出力され、リンカがこれらのオブジェクトファイルを結合して、実行形式ファイルを生み出します。 
  3. 調べてみたところ、必要なライブラリはすべて static link されているようです。(たしかにバイナリサイズも 600K と helloworld にしては大きいです。)