読者です 読者をやめる 読者になる 読者になる

Erlang R14A (dev) を試してみた

erlang

本来ならば常に最新の dev を buildbot か何かで常に確認できるようにしておきたい所なんだとは思いますが、まぁ将来的にはってことで。

R14 リリーススケジュールについて

  • R14A のリリースは 2010-06-16 とのことなのでそろそろ。
  • 安定版である R14B は 2010-09-01 です。
  • R14B01, 02, 03 はそれぞれ 2 ~ 3 ヶ月のペースで更新していくとのことです。

R14 の新機能

  • (EEP-31) binary モジュールの追加です。
    • match, matches, split ...
  • マルチコアパフォーマンスの向上
  • NIF モジュールが正式リリース
  • crypto モジュールの NIF 化
  • Erlang VM の 64 bit 化について効率があがります。 ets が 64 bit のサイズを格納できるようになったり、Erlang term が最大 4G まで使えるようになります。
  • type/spec の公式サポート
  • edoc における type/spec の公式サポート
    • 個人的に edoc よりは sphinx erlang-domain のほうがイイトオモイマスが:-P
  • ssl が new_ssl に取って代わります。暗号部分が NIF になるのでそこでも速度向上がありそうです。
  • Reltool がもう少し簡単になるようです。今はかなり複雑なので ... 。Reltool を使えば Erlang がインストールされていないシステムでも Erlang で書かれたアプリを使う事が出来るようになります(スタンドアローン)

将来的なお話

とにかくマルチコアでのパフォーマンス向上を目指すというのが今のスタンスのようです。

コントリビュータ募集

  • JSON encode/decode NIF (EEP-18) 募集中
  • DETS の 4Gbyte 越え
  • 素敵な素敵なドキュメントサーチ機能 (Sphinx でイイと思う ...)

binary モジュール

Erlang R14A (erts-5.8) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:30] [hipe] [kernel-poll:true]

Eshell V5.8  (abort with ^G)
1> binary:split(<<0,1,0,0,4,255,255,9>>, [<<0,0>>, <<255,255>>],[global]).
[<<0,1>>,<<4>>,<<"\t">>]
2> binary:replace(<<"abcde">>,<<"b">>,<<"[]">>,[{insert_replaced,1}]).
<<"a[b]cde">>
3> binary:replace(<<"abcde">>,[<<"b">>,<<"d">>],<<"[-]">>,[global,{insert_replaced,[1,2]}]).
<<"a[b-b]c[d-d]e">>
4> binary:replace(<<"abcde">>,[<<"b">>,<<"d">>],<<"[]">>,[global,{insert_replaced,[1,1]}]).
<<"a[bb]c[dd]e">>
5> binary:longest_common_prefix([<<"erlang">>,<<"ergonomy">>]).
2
6> binary:longest_common_prefix([<<"erlang">>,<<"perl">>]).
0
5> binary:longest_common_prefix([<<"erlang">>,<<"ergonomy">>]).
2
6> binary:longest_common_prefix([<<"erlang">>,<<"perl">>]).
0
7> binary:longest_common_suffix([<<"erlang">>,<<"fang">>]).
3
8> binary:longest_common_suffix([<<"erlang">>,<<"perl">>]).
0
10> binary:bin_to_list(<<"erlang">>,{1,3}).
"rla"
11> binary:
at/2                     bin_to_list/1            bin_to_list/2            
bin_to_list/3            compile_pattern/1        copy/1                   
copy/2                   decode_unsigned/1        decode_unsigned/2        
encode_unsigned/1        encode_unsigned/2        first/1                  
last/1                   list_to_bin/1            longest_common_prefix/1  
longest_common_suffix/1  match/2                  match/3                  
matches/2                matches/3                module_info/0            
module_info/1            part/2                   part/3                   
referenced_byte_size/1   replace/3                replace/4                
split/2                  split/3 

R14A (dev ブランチ) インストール編

環境
Mac OS X 10.6.3

clone して configure, make, make install です。

git clone http://github.com/erlang/otp.git

configure

./configure --prefix=/usr/local/erlang/dev --enable-smp-support --enable-darwin-64bit --enable-kernel-poll --enable-hipe

% /usr/local/erlang/dev/bin/erl +A 30 +K true
Erlang R14A (erts-5.8) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:30] [hipe] [kernel-poll:true]

Eshell V5.8 (abort with ^G)
1>