This was a difficult name choice but it is consistent with CompiledCode and (not yet used) SourceCode. The CompiledCode is an abstraction of computation that is the focal point around which much revolves. MachineCode is a representation of computation specialized for our (virtual) machine. While there is possible ambiguity against the idea of JIT'd machine code, our MachineCode is a proper data structure, not just the format of bits resulting from the JIT compilation process. Also, our MachineCode is properly scoped differently than any such class/concept in LLVM (or more generally, the JIT). Regarding naming of instances of MachineCode, the following rationale is used: * parameters/variables have been named 'mcode' since the use of the variable is elaborated by the surrounding code (ie making ambiguity less an issue) and long variable names can sometimes make code unweildy. * attributes/fields/accessors have been name 'machine_code' because they have less context to disambiguate.
There are systems that don't have sudo and there are people that believe executing sudo without the user's permission is rude. For example, a user may have run a sudo command for something else and then the sudo in the rbx build will run without prompting for permission. For these reasons, it's better to just let the user handle the situation explicitly.
This caused an error before when installing Rubinius with RVM because some compiler and FFI files were missing from the staged lib/ directory.