SlideShare a Scribd company logo
elixir-lang
bootstrap
tokyo.ex #1 LT
@ohrdev
self
おーはら
@ohrdev
好きなビヘイビア: GenEvent
beam-lang.tokyo/ElixirMeetup/tokyo.ex
写経/仏像彫り/寺社仏閣
所属:Drecom
Erlang/Elixir/Ruby/Rails/Lisp/…
Bootstrap(事始め)
• elixir-langのコードリーディング時の所感
– elixir-lang(自身)のソース、どこから読めば良いか
– elixir-lang(自身)のコンパイルの流れ
– リポジトリ/ビルド構成
elixir-langのインストール
$ git clone git@github.com:elixir-
lang/elixir.gitgit@github.com:elixir-lang/elixir.git
$ make clean
$ make ★今日の話
$ make test
$ make install
ディレクトリ構成
elixir_repo
|- Makefile
|- bin # 実行ファイル(elixir,elixirc,iex,mix)、実体はerlのシェルスクリプト
|- lib
|- elixir ★
| |- ebin # beamファイルの出力先
| |- src # コンパイラ(rebarでerlangコードをコンパイル)
| |- lib # カーネル/コアモジュール(elixircでelixirコードをコンパイル)
|- eex
|- iex
|- logger
|- mix
make
• elixir(コンパイラ/カーネル)のコンパイル
– コンパイラ:erlangコード
– コア:elixir_compiler.erl # elixir:core
– カーネル:elixirコード
• mixのコンパイル(elixirコード)
• ex_unitのコンパイル(elixirコード)
• loggerのコンパイル(elixirコード)
• eexのコンパイル(elixirコード)
• iexのコンパイル(elixirコード)
compile elixir
1. elixirコンパイラ(erlang)のコンパイル
– lib/elixir/src 以下のerlファイル,use rebar
2. コア/カーネルモジュールのコンパイル
– elixir_compilerモジュール/core関数の実行
• lib/elixir/lib 以下のコアルモジュールハンドリング
3. lib/elixir/lib/*.ex のコンパイル(elixirc)
4. Unicodeモジュールのコンパイル(elixirc)
– lib/elixir/unicode # String.Unicode module
compile elixir compiler
• lib/elixir/src/*.erl
– Rebarでコンパイル
– lib/elixir/ebin/elixir_xxx.beam を吐く
– Core: elixir_compiler.erl
• Behaviour
– Application
• elixir.erl
– GenServer
• elixir_config.erl
• elixir_counter.erl
• elixir_code_server.erl
– Supervisour
• elixir_sup.erl
compile elixir core
• コアモジュール
– elixir_compiler.erl
• core()
• target -> core_main()
compile elixir kernel
• lib/elixir/lib/*.ex, */*.ex, */*/*.ex
– elixircでコンパイル
– lib/elixir/ebin_/Elixir.XXX.beam を吐く
bin
• elixir/elixirc
– 実体はシェルスクリプト
– やっている事はerlコマンドの実行
• erl –s Mod Func # ModモジュールのFunc関数を実行
• iex:
– elixirモジュール,start_cli関数 を実行
– 実体はElixir.Kernel.CLI.main の実行
• mix: Mix.CLI.mainをbin/elixirで実行
まとめ
• Makefileを読めば大体のフローが把握できる
• Elixirコンパイラ
– Erlangコード,rebarでコンパイル
– lib/elixir/src => lib/elixir/ebin/elixir_xxxx.beam
• Elixirカーネル/コアモジュール
– Elixirコード,elixircでコンパイル
– lib/elixir/lib => lib/elixir/ebin/Elixir.XXXX.beam

More Related Content

PDF
Cowboyとelixir
PDF
パーフェクト"Elixir情報収集"
PDF
ChefユーザのためのAnsible入門
PPTX
2014 08-30 life with roslyn
PPTX
running web app on elixir
PDF
Phoenixを使った案件でリリースまでに起きた問題と対応
PDF
elixirを使ったゲームサーバ
PDF
機械学習概論 講義テキスト
Cowboyとelixir
パーフェクト"Elixir情報収集"
ChefユーザのためのAnsible入門
2014 08-30 life with roslyn
running web app on elixir
Phoenixを使った案件でリリースまでに起きた問題と対応
elixirを使ったゲームサーバ
機械学習概論 講義テキスト

Similar to Elixir lang bootstrap (20)

PDF
関数型言語ElixirのIoTシステム開発への展開
PPTX
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
PPTX
Elixirハンズオン-2017-03-11
PDF
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
PDF
Ember コミュニティとわたし
PDF
Cookpad Summer Intern 2015 - Programming Paradigm
PDF
Xcore introduction
PDF
Build Dockferile with Haskell
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
PDF
研究生のためのC++ no.6
PDF
Debianを用いたCortex-M3マイコン開発事例のご紹介
PDF
動的なILの生成と編集
PDF
asm.js x emscripten: The foundation of the next level Web games
PPTX
解説?FSharp.Quotations.Compiler
PDF
PlaySQLAlchemy: SQLAlchemy入門
PPTX
Elixir言語紹介
PDF
130427 kansai-emacs-github
PPTX
Tokyoex6 EEx
PDF
デザインパターンを用いたリファクタリング
PDF
PlaySQLAlchemyORM2017.key
関数型言語ElixirのIoTシステム開発への展開
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
Elixirハンズオン-2017-03-11
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Ember コミュニティとわたし
Cookpad Summer Intern 2015 - Programming Paradigm
Xcore introduction
Build Dockferile with Haskell
やや関数型を意識した風Elixir/Phoenixご紹介
研究生のためのC++ no.6
Debianを用いたCortex-M3マイコン開発事例のご紹介
動的なILの生成と編集
asm.js x emscripten: The foundation of the next level Web games
解説?FSharp.Quotations.Compiler
PlaySQLAlchemy: SQLAlchemy入門
Elixir言語紹介
130427 kansai-emacs-github
Tokyoex6 EEx
デザインパターンを用いたリファクタリング
PlaySQLAlchemyORM2017.key
Ad

More from Tsunenori Oohara (17)

PPTX
Elixirハンズオン2
PPTX
meguro.rb LT
PPTX
Elixir解答
PDF
パンチラに関する考察
PPTX
how-to-learn-elixir
PPTX
Elixir-Conf-Japan-2017-session-ohr486
PPTX
Re:デブ デブナイト vol.2 LT
PPTX
失敗という概念が存在しない退屈なweb開発
PPTX
running-elixir-in-production
PPTX
hello waf, hello phoenix
PPTX
tokyo.ex3 LT
PPTX
Elixirと他言語の比較的紹介 ver.2
PPTX
Elixirについて私が知ってる二、三の事柄
PPTX
elixir in production
PPTX
地獄のElixir(目黒スタートアップ勉強会)
PPTX
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
PDF
地獄Spec
Elixirハンズオン2
meguro.rb LT
Elixir解答
パンチラに関する考察
how-to-learn-elixir
Elixir-Conf-Japan-2017-session-ohr486
Re:デブ デブナイト vol.2 LT
失敗という概念が存在しない退屈なweb開発
running-elixir-in-production
hello waf, hello phoenix
tokyo.ex3 LT
Elixirと他言語の比較的紹介 ver.2
Elixirについて私が知ってる二、三の事柄
elixir in production
地獄のElixir(目黒スタートアップ勉強会)
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
地獄Spec
Ad

Elixir lang bootstrap