Amazon Linux で Crystal を動かしてみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

最近 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 にしては大きいです。)