Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rustでゴミ集め

 Rustでゴミ集め

プログラミング言語Slack 定期ミートアップ#2 2021/06/13

Rustでゴミ集め

monochrome

June 13, 2021
Tweet

More Decks by monochrome

Other Decks in Programming

Transcript

  1. Rubyオブジェクトの内部表現 struct Value(std::num::NonZeroU64); struct RValue { class: Module, var_table: Option<Box<ValueTable>>,

    kind: ObjKind, } (56 bytes) struct GCBox<T: GC> { inner: T, next: Option<GCBoxRef<T>>, } (64 bytes)
  2. Page 0 7 8 15 16 20 23 4031 0x4_0000

    20 mark bitmap 0 7 64b x 4032 slot
  3. Garbage collection: Mark local variables method Array local variables method

    Hash K V K V K V K V Object Instance variables Free list
  4. Garbage collection: Sweep local variables method Array local variables method

    Hash K V K V K V K V Object Instance variables Free list
  5. バグりがちな点 var = [1, 2, 3].map { |x| x.to_s }

    配列オブジェクトをイテレートし、 各要素を関数で処理して戻り値を集め 配列を作って返すRubyスクリプト