Opal does not support some language/runtime features of ruby. These are documented here when possible, as well as the reasons why they are not supported.
For performance and ease of runtime features, all strings in Opal are immutable, i.e.
#gsub!, etc. do not exist. Also, symbols are just strings. There is no class, runtime or feature difference between Symbols and Strings. Their syntaxes can be used interchangeably.
\z, there are a lot of incompatibilities that you should be aware of - for example
In Opal, both integers and floats belong to same class
1 / 4 is
4.0 / 2 is
Number is a subclass of
Encodings only have a very small implementation inside Opal.
Thread implementation, so they are not present inside Opal. There is a placeholder
Thread class just to provide some small level of compatibility with libraries that expect it. It does not have any function.
All methods in Opal are defined as
public to avoid additional runtime overhead.
Module#protected exist as just placeholder methods and are no-op methods.