[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も、注目されるにしたがって、少しずつ「きちんとした」言語に成長しているように思う。
# あとは開発のリポジトリが公開されればパッチが作りやすくなるのだが・・・