Turing Complete Fm
19. Gauche Schemeのスタックとヒープのハンドリング (川合史朗)
- Autor: Vários
- Narrador: Vários
- Editora: Podcast
- Duração: 1:42:25
- Mais informações
Informações:
Sinopse
川合史朗さんが作っているScheme処理系Gaucheの実装について、特にメモリ管理やクロージャ、継続の実装などに焦点を当てて話をしました。最近のCPUでは単純にJITしても速くならない理由などについても話をしています。出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314) https://turingcomplete.fm/19 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) Schemeのストレージモデルではすべてが無限エクステント (1:06) 関数呼び出しのモデルとアクティベーションレコードのアロケーション (4:34) SPARCのレジスタウィンドウ (9:20) Alphaの速さの秘密 (12:41) 大コケしたIntel Itaniumプロセッサ (14:11) GoのGC停止時間の劇的な改善 (16:55) ページテーブルのダーティービットをユーザプログラムから使う話 (20:14) Goの分割スタック機能 (23:07) クロージャを作ったときに使ってない変数を不必要に掴んでしまう問題 (25:54) 32ビットハッシュ値を大量に作ると32ビットマシンで偽ポインタがたくさんできてしまう問題 (27:44) 決してreturnしないCプログラムにコンパイルするScheme処理系 (33:00) タグ付きポインタ (41:23) C言語の仕様を満たすためのBoehm GCの機能と、それを使いたくない理由 (46:10) 64ビット浮動小数点数をなるべくヒープにアロケートせずに扱いたい (50:30) 16ビット"Brain"浮動小数点フォーマット (55:27) Gaucheの正規表現エンジン (56:44) Scheme→C→Schemeという呼び出しをした先で継続を取得すると限定継続になる (1:00:19) Schemeスタックからヒープへのコピー (1:04:44) 末尾呼び出しはスタックを消費しないように手続きを呼び出す (1:05:50) Chez Schemeでは多値ありと多値なしの2つの継続を渡す (1:10:29) 最近のCPUの分岐予測の賢さとMeltdow