Upload
hayabusa333
View
1.248
Download
0
Embed Size (px)
Citation preview
Elixir v1.3 で入る ( かもな )機能
自己紹介name = 橘田隼一|> TwitterID = hayabusa333|> heart = [ カーネル , GC, Erlang, Elixir]|> jobs = 派遣ウェッブプログラマ|> position = [Joel 教 , 翔鶴瑞鶴仲良し姉妹同盟 ]
Elixir と Phoenix の薄い本を出しました(ページ数:240 )電子書籍版を BOOTH で販売中https://hayabusa333.booth.pm/items/186705
自己紹介 ( 宣伝 )
本日のお話Elixir v1.3 で入ってくるであろう機能 (3 月 19 日時点 ) の一部の機能を紹介していきます
目次• Calendar/Date/Time/NaiveDateTime/
DateTime 型の定義の追加• —logger-otp-reports と — logger-sasl-
reports オプションの追加• with 句に else が追加• mix app.tree と mix deps.tree• mix escript
Calendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加Elixir に上記の型の内部定義について追加されました。例:Calendar の year は integer 型とかCalendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加
Calendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加今回の型定義が入ることによりElixir にて時刻系の型は、ライブラリごとに違っていたものが統一されることになるようです
—logger-otp-reports と — logger-sasl-reports オプションの追加elixir —logger-otp-reports trueelixir —ligger-sasl-reports trueなど、 elixir コマンドにオプションとして渡すことにより、 OTP やSASL のレポートを出すようになりました
—logger-otp-reports と — logger-sasl-reports オプションの追加こちらの修正については、erl -boot start_sasl で取得できるレポートを出せるように Elixirから Erlang 側の呼び出しのオプション追加となります
with 句に else が追加with 句にて、今まではwith ( 式 ), ( 式 ), do: ( 結果判定 )のような形でしたがwith ( 式 ), ( 式 ), do: ( 結果判定 ), else: ( 結果判定 ) のような形での記載ができるようになりました
Elixir v1.2 例iex(1)> with {:ok, contents} <- File.read("my_hoge.ex"),...(1)> {res, binding} <- Code.eval_string(contents),...(1)> do: {:ok, res}, else: {:error, _}** (CompileError) iex:1: undefined function with/3
Elixir v1.3 例iex(1)> with {:ok, contents} <- File.read("my_hoge.ex"),...(1)> {res, binding} <- Code.eval_string(contents),...(1)> do: {:ok, res}, else: {:error, :enoent}** (FunctionClauseError) no function clause matching in :elixir_with.expand_else/2 (elixir) src/elixir_with.erl:58: :elixir_with.expand_else({:error, :enoent}, %Macro.Env{aliases: [], context: nil, context_modules: [], export_vars: nil, file: "iex", function: nil, functions: [{IEx.Helpers, [c: 1, c: 2, cd: 1, clear: 0, flush: 0, h: 0, i:
with 句に else が追加申し訳ありません。正常に動くコードの記載まで確認できませんでした。
mix app.tree と mix deps.tree
新規に追加された タスクとして mix app.treemix deps.treeの 2 つが追加されました
mix app.tree 実行例
mix deps.tree 実行例
mix escriptmix escriptmix escript.buildmix escript.installmix escript.uninstallの 4 つのタスクが増えています。
mix escriptmix escript.install (PATH/URL)mix escript.uninstallは ~/.mix/escript の配下に escript を保存するようになっています
mix escriptmix escriptmix escript.buildにて保存している escript から環境を構築することが可能となっているようです。
他には• コンパイル時のモジュールの欠落のエラーメッセージ改善• File.copy/3 にて IO デバイスのサポート追加• %module{key: “value”} = struct のような構造体のパターンマッチが実行できるようになりました。• Process.sleep/1 のような time を指定して、プロセスを sleep できるようになりました。• Unicode 8.0.0 へと更新• テスト毎に属性をクリーンアップできるように
ExUnit.Case.register_attribute が追加• MIX_DEBUG=1 が設定されている場合に Mix.Error をスタックトレースに表示するようになりました。
まとめElixir v1.3 の更新内容だけでも、けっこう多い ( 非推奨機能とかは今日は話してない )
他の更新内容は、ハードリカーエンジニアのブログにて公開しています
ご静聴ありがとうございました