1. 5
  1.  

  2. 5

    I’m working on the Ruby JIT portion of this project, and can answer some questions if people have them.

    1. 2

      How Java-ish is the underlying VM?

      In my experience, the JVM is actually a big pain point because of its complexity (I’ve probably seen more downtimes due to the JVM needing tuning than the application being wrong), and part of that is because the semantics of Java are unfriendly when it comes to creating garbage. As a comparison point, Go and Ocaml have run-times and GC times that are competitive with Java despite being significantly less tunable and significantly less man-years put into them.

      1. 2

        We are integrating directly into the CRuby (MRI) interpreter.

        The Ruby VM (or at least the YARV bytecode interpreter portion) has certainly taken some inspiration from the bytecode of the JVM, though Ruby’s bytecode is untyped. Pat Shaughnessy’s excellent book Ruby Under a Microscope has some pretty good coverage of the YARV VM, and would be worth perusing if you’re interested in the VM mechanics. As far as object allocation, I don’t have a good feel for how YARV would compare against the JVM, nor vs. Go/OCaml.

      2. 1

        Any thoughts on supporting Haskell/OCaml? How many people are working on the project?

        1. 3

          Hmm. Hard to give a good roll call off the top of my head. I’m not really comfortable guessing outside of the compiler team (mine). On the compiler team, I would say seven developers mostly full time (most developers have responsibilities for pieces outside this effort still).

          Doing a functional language like Haskell/OCaml would be a really interesting proof point for the effort we’re trying, to make language agnostic compiler technology. For now, we’re focused on Ruby and Python as our proof points, but we definitely want to make it relatively simple to support other languages.

          I’ve never really peeked into the intermediate language of a functional language compiler, so I can’t speak to how it would map to our technology, though I can say that our intermediate representation is fairly imperative… so I suspect there could be an impedance mismatch. Not insurmountable mind you, but just more challenging.