1.4 KiB
Limitations and Differences
The philosophy of mruby is to be a lightweight implementation of the Ruby ISO standard. These two objectives are partially contradicting. Ruby is an expressive language with complex implementation details which are difficult to implement in a lightweight manner. To cope with this, limitations to the "Ruby Compatibility" are defined.
This document is collecting these limitations.
Integrity
This document does not contain a complete list of limitations. Please help to improve it by submitting your findings.
1/2 gives 0.5
Since mruby does not have Bignum, bigger integers are represented
by Float numbers. To enhace interoperability between Float
and Float, mruby provides Float#upto``` and other iterationg methods for ```Float class. As a side effect, 1/2 gives 0.5
not 0.
Array passed to puts
Passing an Array to puts results in different output.
puts [1,2,3]
Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)]
1
2
3
mruby [1.2.0 (2015-11-17)]
[1, 2, 3]
Kernel.raise in rescue clause
Kernel.raise without arguments does not raise the current exception within
a rescue clause.
begin
1 / 0
rescue
raise
end
Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)]
ZeroDivisionError is raised.
mruby [1.2.0 (2015-11-17)]
No exception is raised.