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

本当は怖い情報科学

情報系大学院生の趣味&実益ブログ。

[erlang] ErlangのR12-B0リリースでは、インタプリタでのエラーメッセージが大幅に改善されている

2007年の12月に、Erlangの新バージョン R12-B0 (Release12、パッチレベル0) がリリースされている。環境・ライブラリ周りでいろいろ変更があるようだけど、個人的に一番大きいのはerlコマンドのシェルでのエラーメッセージがわかりやすくなっていること。

例えば、foo().というエラーになるコード(存在しない関数の呼び出し)を入力した時のエラーメッセージを例にあげてみる。前バージョンのR11B5では

$ erl
Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.5.5  (abort with ^G)
1> foo().
** exited: {undef,[{shell_default,foo,[]},
                   {erl_eval,do_apply,5},
                   {shell,exprs,6},
                   {shell,eval_loop,3}]} **

=ERROR REPORT==== 28-Jan-2008::02:31:48 ===
Error in process <0.30.0> with exit value: {undef,[{shell_default,foo,[]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}

であったものが、

$erl
Erlang (BEAM) emulator version 5.6 [source] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6  (abort with ^G)
1> foo().
** exception error: undefined function shell_default:foo/0

のように表示される。R11B5では意味不明であったエラーが、R12では「fooっていう関数は無いぜ」というエラーにちゃんと読める。これは地味に嬉しい。

erlangも、注目されるにしたがって、少しずつ「きちんとした」言語に成長しているように思う。

# あとは開発のリポジトリが公開されればパッチが作りやすくなるのだが・・・

【広告】