2016年1月31日日曜日

puma, Rubinius, and other

 puma 2.16 リリース記事に、

スループットを出すためにはRuniniusやJRubyなどのRuby実装の利用を推奨している。」との記載が。(Runinius は Rubinius のタイプミスだろう)
やはりパフォーマンスのためには CRuby でない選択肢なのね〜と思いつつ、そういえば rbenv で Rubinius さくっと入るんだったけ?とお試し・・。

% rbenv --version
rbenv 1.0.0-14-gc388331


% rbenv install -l |grep rbx|tail -5
  rbx-3.10
  rbx-3.11
  rbx-3.12
  rbx-3.13
  rbx-3.14


% rbenv install rbx-3.14
をすると、下記のエラーが。

ERROR: Rubinius will not be able to compile using Apple's LLVM-based
build tools on OS X. You will need to install LLVM 3.5 first.


ふむ、、

% llvm-gcc --version
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.3.0
Thread model: posix


Apple LLVM はなんだか謎なバージョン・・。

3.5 より新しければいいだろ、と勝手に思い 3.7 を入れてリトライ。
RUBY_CONFIGURE_OPTS で --lvm-config 渡せばよいようだ。

https://github.com/rbenv/ruby-build#special-environment-variables

% RUBY_CONFIGURE_OPTS=--llvm-config=/opt/local/bin/llvm-config-mp-3.7 rbenv install rbx-3.14
Downloading openssl-1.0.2f.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/932b4ee4def2b434f85435d9e3e19ca8ba99ce9a065a61524b429a9d5e9b2e9c
Installing openssl-1.0.2f...
Installed openssl-1.0.2f to /Users/katsuji/.rbenv/versions/rbx-3.14

Downloading rubinius-3.14.tar.bz2...
-> https://dqw8nmjcqpjn7.cloudfront.net/19043116e885c428041677f672f54480bba171da9d43f369d1c854cb794c8426
Installing rubinius-3.14...

BUILD FAILED (OS X 10.11.3 using ruby-build 20160130-4-ge3d13db)


だめ。次はこのようなメッセージ

Detected old configuration settings, forcing a clean build
  Checking for 'llvm-config': only LLVM 3.0-3.5 is supported
ABORT: unable to set up LLVM


おとなしく 3.5 で。(Requirements ちゃんとみると LLVM <= 3.5 と書いてある)
http://rubinius.com/doc/en/getting-started/requirements/

% RUBY_CONFIGURE_OPTS=--llvm-config=/opt/local/bin/llvm-config-mp-3.5 rbenv install rbx-3.14
Downloading openssl-1.0.2f.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/932b4ee4def2b434f85435d9e3e19ca8ba99ce9a065a61524b429a9d5e9b2e9c
Installing openssl-1.0.2f...
Installed openssl-1.0.2f to /Users/katsuji/.rbenv/versions/rbx-3.14

Downloading rubinius-3.14.tar.bz2...
-> https://dqw8nmjcqpjn7.cloudfront.net/19043116e885c428041677f672f54480bba171da9d43f369d1c854cb794c8426
Installing rubinius-3.14...
(ながい)

Installed rubinius-3.14 to /Users/katsuji/.rbenv/versions/rbx-3.14


OK.

rbenv local で設定後確認

% ruby --version
rubinius 3.14 (2.2.2 2016-01- 2016-01-31 3.5.2 JI) [x86_64-darwin15.3.0]

gem list すると rubysl-hogehoge なものが結構入っていた。
そういうのあるのね・・
https://rubygems.org/gems/rubysl/versions/2.2.0

puma, Rubinius をぐぐってみつけた昨年の記事
http://gihyo.jp/news/report/01/rubykaigi2015/0003
なるほど Rubinius と Puma は中の人が同じ。
Rubinius の中の人にとっても CRuby が記事に書かれているような改善がなされたほうが嬉しいのかしら。

速くする、で LLVM, JIT というと Python だと Pyston
https://github.com/dropbox/pyston
次の 0.5 で Dropbox のプロダクション環境で実行するための準備っぽいので 0.6 くらいで実際に利用するのかな。
Mac は未サポートなのでまだ気軽に手元に入れられない。

PHP はバージョン7 で JIT 持ち込まずにかなりの高速化を果たしていた。
http://www.publickey1.jp/blog/15/php_7_1.html

話は戻って、puma のサイトに Passenger は載ってないけど Passenger のサイトに puma は載っている

http://puma.io/
https://www.phusionpassenger.com/#why

 

0 件のコメント:

コメントを投稿