@@ -7,13 +7,13 @@ Our policy is to match the behaviour of MRI, except where we do not know how to
7
7
do so with good performance for typical Ruby programs. Some features work but
8
8
will have very low performance whenever they are used and we advise against
9
9
using them on TruffleRuby if you can. Some features are missing entirely and may
10
- never be implemented. In a few limited cases we are deliberately incompatible
10
+ never be implemented. In a few limited cases, we are deliberately incompatible
11
11
with MRI in order to provide a greater capability.
12
12
13
13
In general, we are not looking to debate whether Ruby features are good, bad, or
14
14
if we could design the language better. If we can support a feature, we will do.
15
15
16
- In the future we aim to provide compatibility with extra functionality provided
16
+ In the future, we aim to provide compatibility with extra functionality provided
17
17
by JRuby, but at the moment we do not.
18
18
19
19
## Identification
@@ -27,11 +27,11 @@ TruffleReport defines these constants for identification:
27
27
- ` RUBY_RELEASE_DATE ` is the Git commit date
28
28
- ` RUBY_ENGINE_VERSION ` is the GraalVM version, or ` 0.0- ` and the Git commit hash if your build is not part of a GraalVM release.
29
29
30
- Additionally, TruffleRuby defines
30
+ Additionally, TruffleRuby defines:
31
31
32
32
- ` TruffleRuby.revision ` which is the Git commit hash
33
33
34
- In the C API we define a preprocessor macro ` TRUFFLERUBY ` .
34
+ In the C API, we define a preprocessor macro ` TRUFFLERUBY ` .
35
35
36
36
## Features entirely missing
37
37
@@ -43,15 +43,15 @@ as their semantics fundamentally do not match the technology that we are using.
43
43
#### Fork
44
44
45
45
You cannot ` fork ` the TruffleRuby interpreter. The feature is unlikely to ever
46
- be supported when running on the JVM, but could be supported in the future on
46
+ be supported when running on the JVM but could be supported in the future on
47
47
the SVM. The correct and portable way to test if ` fork ` is available is:
48
48
``` ruby
49
49
Process .respond_to?(:fork )
50
50
```
51
51
52
52
#### Standard libraries
53
53
54
- Quite a few of the less commonly used standard libraries are currently not
54
+ Quite a few of the less commonly used standard libraries are currently not
55
55
supported, such as ` fiddle ` , ` sdbm ` , ` gdbm ` , ` tk ` . It's quite hard to get an
56
56
understanding of all the standard libraries that should be available, so it's
57
57
hard to give a definitive list of those that are missing.
@@ -98,7 +98,7 @@ development tools.
98
98
99
99
` -X ` is an undocumented synonym for ` -C ` and we (and other alternative
100
100
implementations of Ruby) have repurposed it for extended options. We warn if
101
- your ` -X ` options looks like it was actually intended to be as in MRI.
101
+ your ` -X ` options look like they are actually intended to be as in MRI.
102
102
103
103
Programs passed in ` -e ` arguments with magic-comments must have an encoding that
104
104
is UTF-8 or a subset of UTF-8, as the JVM has already decoded arguments by the
@@ -124,7 +124,7 @@ If you use standard IO streams provided by the Polyglot engine, via the
124
124
be redirected to these streams. That means that other IO operations on these
125
125
file descriptors, such as ` isatty ` may not be relevant for where these streams
126
126
actually end up, and operations like ` dup ` may lose the connection to the
127
- polyglot stream. For example if you ` $stdout.reopen ` , as some logging frameworks
127
+ polyglot stream. For example, if you ` $stdout.reopen ` , as some logging frameworks
128
128
do, you will get the native standard-out, not the polyglot out.
129
129
130
130
Also, IO buffer drains, writes on IO objects with ` sync ` set, and
@@ -168,7 +168,7 @@ disabled where we dynamically detect that they probably won't be used. See the
168
168
#### Storing Ruby objects in native structures and arrays
169
169
170
170
You cannot store a Ruby object in a structure or array that has been natively
171
- allocated, such as on the stack, or in a heap allocated structure or array.
171
+ allocated, such as on the stack, or in a heap- allocated structure or array.
172
172
173
173
Simple local variables of type ` VALUE ` , and locals arrays that are defined such
174
174
as ` VALUE array[n] ` are an exception and are supported, provided their address
@@ -207,7 +207,7 @@ cannot be accessed with `va_start` etc. You can use
207
207
208
208
Pointers to local variables that have the type ` VALUE ` and hold Ruby objects can
209
209
only be passed as function arguments if the function is inlined. LLVM will never
210
- inline variadic functions, so pointers to local variables that hold Ruby objects
210
+ inline variadic functions so pointers to local variables that hold Ruby objects
211
211
cannot be passed as variadic arguments.
212
212
213
213
` rb_scan_args ` is an exception and is supported.
0 commit comments