ElixirChanges-20150722

josevalim:b37e8fdac613a77eb3fff72926797ac4d721b1e0

ファイル名
lib/mix/lib/mix/compilers/elixir.ex

Elixirのコンパイラマニフェストとして file:consult/1 を使用するアップデートが行われました。

josevalim:d25d7046e5198decea28f8cd70ac281865755684

ファイル名
lib/elixir/lib/kernel/lexical_tracker.ex
lib/elixir/lib/macro.ex
lib/elixir/src/elixir_aliases.erl
lib/elixir/src/elixir_dispatch.erl
lib/elixir/src/elixir_exp.erl
lib/elixir/src/elixir_lexical.erl
lib/elixir/src/elixir_quote.erl
lib/elixir/test/elixir/kernel/lexical_tracker_test.exs
lib/mix/lib/mix/compilers/elixir.ex

字句トラッカーにて分割コンパイルとランタイムの更新が行われました。

josevalim:7e0ecec061afcc0f437944daa4ef74b42cec935d

ファイル名
lib/mix/lib/mix/compilers/elixir.ex

Mix projects においてコンパイル時に依存する再コンパイルの修正が行われました。
モジュールAがBに呼び出されている場合に、Bが修正が行われた場合には再コンパイルが必要です。
今回のコミットにて、再コンパイル時に再コンパイルが不要なものに関しては再コンパイルを行わないように修正が施されました。

具体的には「AにてBのマクロ呼び出しがあり、 BにてCの機能の呼び出し」という機能であった場合に、Cが変更されても、今まではAも再コンパイル対象だったようですが、修正後にはAは再コンパイルの対象ではなくなったようです。

Twitterでも José Valim さんが、masterのElixir compilerは既存のものより早くスマートになったということをつぶやかれています。
https://twitter.com/josevalim/status/623661915588435968

josevalim:1fd72ba72f94c96d56a308539184bffdaebdd723

ファイル名
lib/elixir/lib/kernel/lexical_tracker.ex
lib/elixir/lib/kernel/typespec.ex
lib/elixir/src/elixir_exp.erl
lib/elixir/src/elixir_lexical.erl
lib/elixir/test/elixir/kernel/lexical_tracker_test.exs

字句トラッカーの出力において、ノイズとなりそうな出力の削除が実施されたようです。

josevalim:80fd98f01afbf9118e6dc64b82441229da2f9909

ファイル名
lib/elixir/lib/kernel/lexical_tracker.ex
lib/elixir/lib/macro.ex
lib/elixir/src/elixir_aliases.erl
lib/elixir/src/elixir_dispatch.erl
lib/elixir/src/elixir_exp.erl
lib/elixir/src/elixir_lexical.erl
lib/elixir/src/elixir_quote.erl
lib/elixir/test/elixir/kernel/lexical_tracker_test.exs

字句トラッカーのaliasesとimportsの効率化が実施されました。
aliases はコンパイル時や実行時にNodeをマークしないように、importsはこんなピル時に依存関係を解決するためなので、Nodeをマークする必要があります。
コンパイル後にはNodeの値が実行時の値より優先されるようになっているようです。

whatyouhide:ee2b679be10c511085d923b5a93512f688bcde5a

(#3521)
ファイル名

Mix.Task.alias?/1 メソッドのドキュメントに対して、aliasの詳細に関してはMixのドキュメントの「Aliasing」のセクションを確認してもらうようにドキュメントのブラッシュアップが行われました。