Elixir 1.2リリース,機能とパフォーマンスが向上

José Valim氏は,動的な関数プログラミング言語であるElixirのバージョン1.2を発表した

言語の開発者である氏によると,今回のリリースでは“拡張,バグ修正,パフォーマンス向上など”が提供されると同時に,Erlang 18以上が必要だということだ。

リリースのブログ記事には,注目に値する改良点がいくつかあげられている。複数のalias/import/requireの追加,マップキー内の変数サポート,マップキーとfunction句でのピン演算子サポートに加え,複数の式に一致する特殊形式のwithによって,次の文が,

case File.read("my_file.ex") do
  {:ok, contents} ->
    case Code.eval_string(contents) do
      {res, _binding} ->
        {:ok, res}
      error ->
        error
  error -> error
    error
end

このように簡潔に記述できるようになる。

with {:ok, contents} <- File.read("my_file.ex"),
     {res, binding} <- Code.eval_string(contents),
     do: {:ok, res}

Elixirワークフローの改善には,ビルドとコンフィギュレーションを共有するアンブレラアプリケーションの機能が含まれている。Valim氏によると,これによってアンブレラプロジェクトの“コンパイル時間が劇的に削減される”。次のように,

build_path: "../../_build",
config_path: "../../config/config.exs",

各アンブレラアプリのmix.exsファイルを設定すればよい。

“Mixによるプロトコルの統合がデフォルトで並列化されると同時に,統合結果のキャッシュが行われるようになりました。これにより,コンパイル時間に影響を与えることなく,すべての環境において最高のパフォーマンスが提供されます”,とValim氏は説明している。

Elixir 1.2の実験的機能として,Rebar 3の依存性をMixからフェッチおよびコンパイルすることが,開発者の選択で可能になっている。

Hacker Newsの“Elixir 1.2.0 Released”ディスカッションには,Elixirと今回のリリースに対して,ユーザcxzによる次のコメントに代表されるように,総じて肯定的な感想があげられている。

経験の深い人たちからの批判や否定的なエクスペリエンス,欠点の指摘も聞いてみたいですね。HNには実に珍しく,100%肯定的で賞賛ばかりのスレッドですから。

こういった意見もあるが,実際の感想はやはり肯定的なものだ。ユーザeltetoのコメントは,“私自身の限られた経験からの感想ですが,Elixirは素晴らしいコミュニティ(新言語のほとんどがそうであるように)に支えられた,素晴らしい,そして若い言語だと思います。”

批判的な面が確認できるのは,唯一,小さな“問題点”をいくつか指摘したユーザglebからのコメントである。

ひとつだけ気になるのは,Echoと,それがPhoenixに統合されていることです。 簡単なことが難しく,難しいことが不可能になっています。

全般的に言ってPhoenixは,Railsのように“実際のWebアプリから抽出した”ものであるようには思えません。ご存知のようにRailsにはBasecampという,その上に構築されたアプリが少なくともひとつ存在していました。Phoenixでそのようなものは知りません。かなり先走った意見ですが,第1印象は重要です。

コミュニティの評価を代表してJosé Valim氏は,ユーザglebへの個人的な返答として,“Ecto/Phoenix統合や難しい部分,実現できない部分についても意見を聞いてみたい”と述べている。

Elixir 1.2に関する詳細はchangelogに記載されている。ElixirはApache 2ライセンスの下でリリースされている。コントリビュートを希望する読者は,CODE_OF_CONDUCT.mdCONTRIBUTING.mdなどで詳しい情報を確認するとよいだろう。