@@ -33,62 +33,46 @@ Performance:
33
33
New features:
34
34
35
35
* We are now compatible with Ruby 2.4.4.
36
-
37
36
* ` object.class ` on a Java ` Class ` object will give you an object on which you
38
37
can call instance methods, rather than static methods which is what you get by
39
38
default.
40
-
41
39
* The log level can now also be set with ` -Dtruffleruby.log=info ` or
42
40
` TRUFFLERUBY_LOG=info ` .
43
-
44
41
* ` -Xbacktraces.raise ` will print Ruby backtraces whenever an exception is
45
42
raised.
46
-
47
43
* ` Java.import name ` imports Java classes as top-level constants.
48
-
49
44
* Coercion of foreign numbers to Ruby numbers now works.
50
-
51
45
* ` to_s ` works on all foreign objects and calls the Java ` toString ` .
52
-
53
46
* ` to_str ` will try to ` UNBOX ` and then re-try ` to_str ` , in order to provoke
54
47
the unboxing of foreign strings.
55
48
56
49
Changes:
57
50
58
51
* The version string now mentions if you're running GraalVM Community Edition
59
52
(` GraalVM CE ` ) or GraalVM Enterprise Edition (` GraalVM EE ` ).
60
-
61
53
* The inline JavaScript functionality ` -Xinline_js ` has been removed.
62
-
63
54
* Line numbers ` < 0 ` , in the various eval methods, are now warned about, because
64
55
we don't support these at all. Line numbers ` > 1 ` are warned about (at the
65
56
fine level) but the are shimmed by adding blank lines in front to get to the
66
57
correct offset. Line numbers starting at ` 0 ` are also warned about at the fine
67
58
level and set to ` 1 ` instead.
68
-
69
59
* The ` erb ` standard library has been patched to stop using a -1 line number.
70
-
71
60
* ` -Xbacktraces.interleave_java ` now includes all the trailing Java frames.
72
-
73
61
* Objects with a ` [] ` method, except for ` Hash ` , now do not return anything
74
62
for ` KEYS ` , to avoid the impression that you could ` READ ` them. ` KEYINFO `
75
63
also returns nothing for these objects, except for ` Array ` where it returns
76
64
information on indices.
77
-
78
65
* ` String ` now returns ` false ` for ` HAS_KEYS ` .
79
-
80
66
* The supported additional functionality module has been renamed from ` Truffle `
81
67
to ` TruffleRuby ` . Anything not documented in
82
68
` doc/user/truffleruby-additions.md ` should not be used.
83
-
84
69
* Imprecise wrong gem directory detection was replaced. TruffleRuby newly marks
85
70
its gem directories with a marker file, and warns if you try to use
86
71
TruffleRuby with a gem directory which is lacking the marker.
87
72
88
73
Bug fixes:
89
74
90
75
* TruffleRuby on SubstrateVM now correctly determines the system timezone.
91
-
92
76
* ` Kernel#require_relative ` now coerces the feature argument to a path and
93
77
canonicalizes it before requiring, and it now uses the current directory as
94
78
the directory for a synthetic file name from ` #instance_eval ` .
@@ -108,28 +92,20 @@ Changes:
108
92
109
93
* ` RubyTruffleError ` has been removed and uses replaced with standard
110
94
exceptions.
111
-
112
95
* C++ libraries like ` libc++ ` are now not needed if you don't run C++
113
96
extensions. ` libc++abi ` is now never needed. Documentation updated to make it
114
97
more clear what the minimum requirements for pure Ruby, C extensions, and C++
115
98
extensions separately.
116
-
117
99
* C extensions are now built by default - ` TRUFFLERUBY_CEXT_ENABLED ` is assumed
118
100
` true ` unless set to ` false ` .
119
-
120
101
* The ` KEYS ` interop message now returns an array of Java strings, rather than
121
102
Ruby strings. ` KEYS ` on an array no longer returns indices.
122
-
123
103
* ` HAS_SIZE ` now only returns ` true ` for ` Array ` .
124
-
125
104
* A method call on a foreign object that looks like an operator (the method name
126
105
does not begin with a letter) will call ` IS_BOXED ` on the object and based on
127
106
that will possibly ` UNBOX ` and convert to Ruby.
128
-
129
107
* Now using the native version of Psych.
130
-
131
108
* The supported version of LLVM on Oracle Linux has been dropped to 3.8.
132
-
133
109
* The supported version of Fedora has been dropped to 25, and the supported
134
110
version of LLVM to 3.8, due to LLVM incompatibilities. The instructions for
135
111
installing ` libssl ` have changed to match.
@@ -139,33 +115,25 @@ Changes:
139
115
New features:
140
116
141
117
* The Ruby version has been updated to version 2.3.6.
142
-
143
118
* Context pre-initialization with TruffleRuby ` --native ` , which significantly
144
119
improves startup time and loads the ` did_you_mean ` gem ahead of time.
145
-
146
120
* The default VM is changed to SubstrateVM, where the startup is significantly
147
121
better. Use ` --jvm ` option for full JVM VM.
148
-
149
122
* The ` Truffle::Interop ` module has been replaced with a new ` Polyglot ` module
150
123
which is designed to use more idiomatic Ruby syntax rather than explicit
151
124
methods. A [ new document] ( doc/user/polyglot.md ) describes polyglot programming
152
125
at a higher level.
153
-
154
126
* The ` REMOVABLE ` , ` MODIFIABLE ` and ` INSERTABLE ` Truffle interop key info flags
155
127
have been implemented.
156
-
157
128
* ` equal? ` on foreign objects will check if the underlying objects are equal
158
129
if both are Java interop objects.
159
-
160
130
* ` delete ` on foreign objects will send ` REMOVE ` , ` size ` will send ` GET_SIZE ` ,
161
131
and ` keys ` will send ` KEYS ` . ` respond_to?(:size) ` will send ` HAS_SIZE ` ,
162
132
` respond_to?(:keys) ` will send ` HAS_KEYS ` .
163
-
164
133
* Added a new Java-interop API similar to the one in the Nashorn JavaScript
165
134
implementation, as also implemented by Graal.js. The ` Java.type ` method
166
135
returns a Java class object on which you can use normal interop methods. Needs
167
136
the ` --jvm ` flag to be used.
168
-
169
137
* Supported and tested versions of LLVM for different platforms have been more
170
138
precisely [ documented] ( doc/user/installing-llvm.md ) .
171
139
@@ -179,10 +147,8 @@ Performance:
179
147
180
148
* ` Dir.glob ` is much faster and more memory efficient in cases that can reduce
181
149
to direct filename lookups.
182
-
183
150
* ` SecureRandom ` now defers loading OpenSSL until it's needed, reducing time to
184
151
load ` SecureRandom ` .
185
-
186
152
* ` Array#dup ` and ` Array#shift ` have been made constant-time operations by
187
153
sharing the array storage and keeping a starting index.
188
154
@@ -193,7 +159,6 @@ Bug fixes:
193
159
Internal changes:
194
160
195
161
* Changes to the lexer and translator to reduce regular expression calls.
196
-
197
162
* Some JRuby sources have been updated to 9.1.13.0.
198
163
199
164
# 0.32, March 2018
@@ -220,9 +185,7 @@ Internal changes:
220
185
221
186
* The launcher is now part of the TruffleRuby repository, rather than part of
222
187
the GraalVM repository.
223
-
224
188
* ` ArrayBuilderNode ` now uses ` ArrayStrategies ` and ` ArrayMirrors ` to remove
225
189
direct knowledge of array storage.
226
-
227
190
* ` RStringPtr ` and ` RStringPtrEnd ` now report as pointers for interop purposes,
228
191
fixing several issues with ` char * ` usage in C extensions.
0 commit comments