Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

RubyによるRuby実装「Runinius」でRubyの挙動を学ぶ


Rubinius : Use Ruby™
Runiniusは、RubyLLVMによるRuby実装です。
聞いた所では、本家より高速だとか何とか・・・

例えば、文字列こんな感じです。
rubinius/string.rb at master · rubinius/rubinius · GitHub

each_charやeach_byteのようなイテレータまわりを覗いてみると・・・

  def each_char
    return to_enum :each_char unless block_given?

    bytes = 0
    while bytes < @num_bytes
      char = find_character(bytes)
      yield char
      bytes += char.num_bytes
    end

    self
  end

  alias_method :chars, :each_char

  def each_byte
    return to_enum :each_byte unless block_given?
    i = 0
    while i < @num_bytes do
      yield @data.get_byte(i)
      i += 1
    end
    self
  end