Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
fukuoka.rb 祝 #100!
Search
take_cheeze
July 20, 2018
700
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
fukuoka.rb 祝 #100!
take_cheeze
July 20, 2018
More Decks by take_cheeze
See All by take_cheeze
goluaをさわってみる
takecheeze
0
400
html5everをスクリプト言語から呼ぶ
takecheeze
0
270
mgemのCIを支える諸々
takecheeze
2
570
Go_2のドラフトを読む__エラー編_.pdf
takecheeze
0
1.8k
dep ensure浅掘り
takecheeze
0
470
LuaJIT as a Ruby backend
takecheeze
1
3.8k
Fukuoka Ruby Award 10th
takecheeze
1
280
コンパイル時計算への招待.pdf
takecheeze
1
1.4k
mrubyにとるRubyのシングルバイナリ運用
takecheeze
0
1.4k
Featured
See All Featured
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Between Models and Reality
mayunak
4
370
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.8k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Transcript
minirakeを 並列化した話 @take-cheeze
mrubyのビルドに使うあいつ - Makefileはあるけど実体はrakeっぽいあいつ - Ruby 1.9でも動く
minirake - rakeのサブセット - 1000行未満でrakeのほしい機能が大体ある - MobiRubyの作者の方が導入
minirakeの問題点 - `-j` オプションがなかった(過去形) - ビルドスクリプトが副作用自由すぎてつらい(関数型言語信者(狂
minirakeに-jオプションを実装した - (Rubyの)パパが喜んでた - ダリフラのフトシは漢だと思う - ゴローが代役の方になってしまって残念だった。。。 - 最終話の録画に失敗した。。。 -
パパが喜んでたけど、いい実験台だった... - マルチなんちゃらプログラミングは難しい - なんか挙動がおかしいとは思っていた
実装方法 - 子プロセスは `Thread` で待って管理 - タスクは `Fiber` 上で実行 -
子プロセスを立ち上げると `FIber` が停止する - rakeは `ThreadGroup` でやっているが使い方がよくわからなかっ たので...
試行錯誤(実験したこと) - `Fiber.yield` だとちゃんと切り替わらないケースがある - あくまで可能性だったが、微妙な実装はリリースにのってほしくなかった - `resume` / `yield`
の代わりに、 `transfer` で置き換え - 同時実行の上限をうまく設定できてなかった - 実装終わったと思ったらあるある実装の抜け - タスクが上限を天元突破して動作してた(おかげで見つかった依存関係のバグ - OSたぶんよろしくやってたか、いいマシンで実行してた - 同時実行のバグを潰したら、CPUを食いつぶす - スリープを適切に入れてあげる - `pthread_yield` 相当がほしかった。。。
バグらせて、別のバグを見つける - ビルドシステムで依存漏れってよくありますよね? - 並列ビルドは、義務です
おまけ: rakeにもパッチ送ったよ - prerequisitesと打てない人のためのalias - https://github.com/ruby/rake/pull/268 - `prereqs` でほぼ半分のタイプ数 -
rakeでもorder only dependencyがほしい - https://github.com/ruby/rake/pull/269 - スクリプト内でprerequisitesからは除外される - 依存するコマンドをprereqsから除外するのに便利
おしまい ありがとうございました 入れられるかわからないけど、1.4にバックポートしたみ