CubicLouve

Spring_MTの技術ブログ

rubykaigi2014 一日目(途中までのメモ)

メモ程度に

RubyKaigi 2014 | Building the Ruby interpreter -- What is easy and what is difficult?

  • Ruby Interpreterの責務はクオリティを高めることと考えている。

    • 信頼性、高パフォーマンス、消費リソースが少ない、互換性、拡張性
  • これらの品質はそれぞれトレードオフが発生。例えばパフォーマンスは信頼性や少リソースと相反することが多い

*トレードオフに対して我々開発者が必要なこと。トレードオフを認識し、トレードオフに打ち勝つこと

  • トレードオフに打ち勝つ どっちもよくなる方を取る
  • スレッドプログラミングは難しい

try and research

Rubinusは後でGobiesVMとかと一緒に試してみる。

RubyKaigi 2014 | Symbol GC

  • 現状すべてのSymbolはGCされない
  • Symbol
    • 内部でIDという一意の数値をもっていて、比較はこの数値を比較することによって高速に行うことができる
    • freeze した文字列は同じIDを持っている
  • なぜGCできないのか?
    • C extensionので生成されたsymbolが問題(SYM2IDでIDを保持している時とか)
    • 一貫性が保てない
  • Immortal Symbol(Cの世界)とMotal Symbol(Rubyの世界)に分ける
    • Motal SymbolのみGC対象
    • Motal SymbolにIDを持たせない
    • Motal Symbolはfreezeされた文字列へのメモリアドレスを保持する
  • すべてのSymbolがGCされない
  • MortalからImmortalになることもあるので、要注意
  • Symbol.all_symbols.sizeでSymbolの数は確認する

try and research

RubyKaigi 2014 | Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory

try and research

  • 試そうと思ったけど、自分MBAのCPU対応してなかった。。。

TSXのチェック - CubicLouve

RubyKaigi 2014 | Cores unleashed Part II: Introduction to GobiesVM (and Software Transactional Memory)

RubyKaigi 2014 | Non-Linear Pattern Matching against Unfree Data Types in Ruby (Egison Pattern Matching in Ruby)

RubyKaigi 2014 | Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails