BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//https://techplay.jp//JP
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALDESC:Ruby Hack Challenge Holiday #7
X-WR-CALNAME:Ruby Hack Challenge Holiday #7
X-WR-TIMEZONE:Asia/Tokyo
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
DTSTART:19700101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:748837@techplay.jp
SUMMARY:Ruby Hack Challenge Holiday #7
DTSTART;TZID=Asia/Tokyo:20191006T130000
DTEND;TZID=Asia/Tokyo:20191006T170000
DTSTAMP:20260512T230250Z
CREATED:20190903T061855Z
DESCRIPTION:イベント詳細はこちら\nhttps://techplay.jp/event/74883
 7?utm_medium=referral&utm_source=ics&utm_campaign=ics\n\nRuby Hack Challe
 nge Holiday\n休日に Ruby インタプリタをハックしよう！\n2
 019 年は、試しに休日の午後、半日の Ruby Hack Challenge (RH
 C) をやってみようと思います。\n好きなテーマで、Ruby 
 インタプリタをハックしてみてください。\nRuby コミッ
 タの笹田と遠藤がサポートします。\n講義形式では行
 いません。モクモク進めて頂いても良いですし、わか
 らなければ気軽に質問してください。\n今回も、Rails Gi
 rls More と同時開催になります。\nRuby アプリを作る勉強
 会ではなく、RubyインタプリタをC言語などでハックす
 るイベントです！　ご注意下さい。\nRuby 開発最前線\n
 今回は、我々が Ruby インタプリタ開発で取り組んでい
 る課題について、ガチでご紹介します。好評だったら
 続けます。\n\n\n時間：13:10～13:50 (40min)\n話者：笹田耕
 一\n題目：Cコンパイラの末尾呼び出しを活用した効率
 的命令ディスパッチ手法の研究開発\n発表概要：Rubyイ
 ンタプリタは、長らく（利用できるなら）Direct threading
 （DT）という仕組みを使っていました（YARV Maniacs 【第 
 3 回】 命令ディスパッチの高速化）。DT は（gcc拡張つ
 きの）C言語ですべて記述できるので、楽でいいのです
 が、(1) 次の実行命令をメモリから読み取り (2) そのア
 ドレスにジャンプする、という仕組み上、(1) メモリの
 ロードおよび (2) 間接ジャンプによる分岐というオー
 バヘッドが生じる。とくに、(2) についてはプロセッサ
 の分岐予測ミスを生じる必要があり、問題がある、と
 言われています（実際は、マイクロベンチマーク程度
 では、たいてい分岐あたります）。この方式に対し、
 アセンブラで call 命令を並べることで、分岐予測ミス
 をなくすサブルーティンスレッディング（ST）（もし
 くは、コンテキストスレッディング（CT））という手
 法が知られています。具体的には、「命令アドレスの
 ロード→間接ジャンプ」ではなく、各命令に対応した
 関数に対するcall 命令を並べることで、命令ディスパ
 ッチを行う、という手法が知られています。この手法
 では、call/return の組み合わせなので、プロセッサがジ
 ャンプ先を先読みすることが容易であり、分岐ミスが
 生じづらいというメリットがあります（が、デメリッ
 トも沢山あります）。そこで、現在 MRI に ST を実装し
 ています。実装にあたって、VM を実行するために必要
 になる仮想レジスタをどのように命令関数間で共有す
 るか、というのが問題になりますが、これに対しCコン
 パイラが行う末尾呼び出しの最適化が利用できること
 を発見し、これを実装しています。本講演では、仮想
 マシンの命令ディスパッチ手法をいくつか紹介し、今
 回実現しようとしている ST の利点欠点を議論し、最新
 の開発状況をご紹介します。\n\n\n\n※興味ない方は、
 もちろん聞かずにモクモクして頂いて構いません！\n
 ※事情によっては笹田の出席が困難な場合があります
 （もうすぐ子供が生まれる）。そのため、もし出来な
 かったらごめんなさい。\n\nもくもくするテーマ一覧\nR
 ubyインタプリタハッキングに関する好きなテーマに取
 り組んで下さい。\n（笹田、遠藤がサポートできそう
 なテーマを並べています）\n\nCookpad Ruby Hack Challenge を
 進めよう\n最新の Ruby を試そう\nRuby 2.7 では、今後推奨
 しないコードに警告が沢山でます。有名 gem や自分の
 アプリで試して、警告除去をしてみましょう。\nRuby 2.6
  で導入された JIT compiler を試してみましょう\nRuby に型
 付けを行う Steep で、自分のアプリケーションを型付け
 してみよう\nRuby 2.7 に導入予定の新機能（パターンマ
 ッチや numbered parameter など）を試してみよう。また、
 自分のアプリケーションがちゃんと動くか試して、動
 かなかったら報告してみよう。\nRuby 2.7 では、キーワ
 ード引数の仕様がいろいろ変わっています。Ruby 2.7 開
 発版で試して、動かなかったら報告してみよう。\n\n\n
 好きな Hack をしよう\n\nコミュニケーションチャンネル
 \n事前、開催中、事後のコミュニケーションチャンネ
 ルとして、 Gitter https://gitter.im/rubyhackchallenge/Lobby を用
 意しています。参加される方はご活用ください。\nま
 た、ruby-jp slack workspace の #rhc チャンネルも用意したの
 で、そちらもご利用下さい。
LOCATION:クックパッド株式会社 〒150-6012 東京都渋谷区恵
 比寿4-20-3　恵比寿ガーデンプレイスタワー12F
URL:https://techplay.jp/event/748837?utm_medium=referral&utm_source=ics&utm
 _campaign=ics
END:VEVENT
END:VCALENDAR
