Turing Complete FMはRui Ueyamaによるプログラミングについてのポッドキャストです。
19. Gauche Schemeのスタックとヒープのハンドリング
ゲスト: 川合史朗 (@anohana)
川合史朗さんが作っているScheme処理系Gaucheの実装について、特にメモリ管理やクロージャ、継続の実装などに焦点を当てて話をしました。最近のCPUでは単純にJITしても速くならない理由などについても話をしています。

速度 x1.0 (遅く / 速く) -15秒 / -5秒 / +5秒 / +15秒
この時点にリンク
0:00イントロ
1:06Schemeのストレージモデルではすべてが無限エクステント
4:34関数呼び出しのモデルとアクティベーションレコードのアロケーション
9:20SPARCのレジスタウィンドウ
12:41Alphaの速さの秘密
14:11大コケしたIntel Itaniumプロセッサ
16:55GoのGC停止時間の劇的な改善
20:14ページテーブルのダーティービットをユーザプログラムから使う話
23:07Goの分割スタック機能
25:54クロージャを作ったときに使ってない変数を不必要に掴んでしまう問題
27:4432ビットハッシュ値を大量に作ると32ビットマシンで偽ポインタがたくさんできてしまう問題
33:00決してreturnしないCプログラムにコンパイルするScheme処理系
41:23タグ付きポインタ
46:10C言語の仕様を満たすためのBoehm GCの機能と、それを使いたくない理由
50:3064ビット浮動小数点数をなるべくヒープにアロケートせずに扱いたい
55:2716ビット"Brain"浮動小数点フォーマット
56:44Gaucheの正規表現エンジン
1:00:19Scheme→C→Schemeという呼び出しをした先で継続を取得すると限定継続になる
1:04:44Schemeスタックからヒープへのコピー
1:05:50末尾呼び出しはスタックを消費しないように手続きを呼び出す
1:10:29Chez Schemeでは多値ありと多値なしの2つの継続を渡す
1:13:16最近のCPUの分岐予測の賢さとMeltdown & Spectre
1:20:08Gaucheを単純にJIT化してもCPUの分岐予測が賢いのでそれだけでは速くならない
1:25:05社会的や経済的理由で速くなる言語
1:27:29リテラルで書けるオブジェクト
1:28:32正規表現リテラル
1:30:55マップのリテラル
1:36:41Gaucheのハッシュテーブルとハッシュ衝突攻撃
1:39:24TCFMの難易度

追記