Differences between mri and jruby

From JRubyWiki

Jump to: navigation, search

Although ideally mri and jruby would behave 100% the same in all situations, there are some minor differences. Some differences are due to bugs, and those are not reported here. This page is for differences that are not bugs.


Contents

Continuations

JRuby does not support continuations (Kernel.callcc).


Invoking external processes

On windows, jruby is a little smarter when launching external processes. If the executable file is not a binary executable (.exe), mri requires you give the file suffix as well, but jruby manages without it.

An example: say you have file foo.bat on your PATH and want to run it.

system( 'foo' ) # works on jruby, fails on mri

system( 'foo.bat' ) # works both in jruby and mri

Fork is not implemented

JRuby doesn't implement fork() on any platform, including those where fork() is available in MRI.

Native Endian is Big Endian

Since the JVM presents a 'compatible' CPU to JRuby, the 'native' endianness of JRuby is Big Endian. This does matter for operations which depend on that like String.pack() and Array.unpack() for formats like "I", "i", "S" and "s".

Personal tools