$30 off During Our Annual Pro Sale. View Details »

mruby VM

mruby VM

RubyKaigi 2023 LT

The internal of the mruby VM (in 5 minutes)

Yukihiro Matsumoto

July 04, 2023
Tweet

More Decks by Yukihiro Matsumoto

Other Decks in Programming

Transcript

  1. Powered by Rabbit 3.0.1
    mruby VM
    OSS Vision
    Ruby Association
    Yukihiro "Matz" Matsumoto
    @yukihiro_matz

    View Slide

  2. Powered by Rabbit 3.0.1
     
    mruby

    View Slide

  3. Powered by Rabbit 3.0.1
     
    Alternative Ruby Implementation

    View Slide

  4. Powered by Rabbit 3.0.1
     
    M-Ruby

    View Slide

  5. Powered by Rabbit 3.0.1
     
    Modular Ruby

    View Slide

  6. Powered by Rabbit 3.0.1
     
    eMbeddable Ruby

    View Slide

  7. Powered by Rabbit 3.0.1
     
    Memory efficient Ruby

    View Slide

  8. Powered by Rabbit 3.0.1
     
    Embeddable VM

    View Slide

  9. Powered by Rabbit 3.0.1
     
    Register Based Instruction Set
    Ruby Specialized Instructions
    Portable Instruction Set

    View Slide

  10. Powered by Rabbit 3.0.1
     
    Register vs Stack

    View Slide

  11. Powered by Rabbit 3.0.1
    Stack based Instructions
    PUSH 1
    PUSH 2
    ADD

    View Slide

  12. Powered by Rabbit 3.0.1
     
    Less Operands
    Smaller Instructions
    Highly Dependent Instruction Order

    View Slide

  13. Powered by Rabbit 3.0.1
    Register based Instructions
    LOADINT R1 1
    LOADINT R2 2
    ADD R1 R2

    View Slide

  14. Powered by Rabbit 3.0.1
     
    More Operands
    Longer Instructions
    Independent Instruction Order
    Easier to Peep-hole Optimize

    View Slide

  15. Powered by Rabbit 3.0.1
     
    # a (R1) = 42
    LOADINT R2 42
    MOVE R1 R2

    View Slide

  16. Powered by Rabbit 3.0.1
     
    # a (R1) = 42
    LOADINT R1 42

    View Slide

  17. Powered by Rabbit 3.0.1
     
    Ruby Specialized Instructions

    View Slide

  18. Powered by Rabbit 3.0.1
     
    GETIV,GETCV,GETCONST
    SEND,SENDB
    SUPER
    EXCEPT,RESCUE,RAISEIF

    View Slide

  19. Powered by Rabbit 3.0.1
     
    Portable

    View Slide

  20. Powered by Rabbit 3.0.1
     
    Can be dumped in binary format

    View Slide

  21. Powered by Rabbit 3.0.1
     
    Used by mruby, mruby/c

    View Slide

  22. Powered by Rabbit 3.0.1
     
    Not easy to upgrade

    View Slide

  23. Powered by Rabbit 3.0.1
     
    Compile Once, Run Anywhere

    View Slide

  24. Powered by Rabbit 3.0.1
     
    Even on Keyboards

    View Slide

  25. Powered by Rabbit 3.0.1
     
    Sponsored by
    Salesforce.com

    View Slide

  26. Powered by Rabbit 3.0.1
     
    Sponsored by
    NaCl

    View Slide

  27. Powered by Rabbit 3.0.1
     
    Sponsored by
    GitHub Sponsors

    View Slide

  28. Powered by Rabbit 3.0.1
     
    Sponsored by
    Ruby Community

    View Slide

  29. Powered by Rabbit 3.0.1
     
    Thank you

    View Slide