Skip to content

Commit 3d9646c

Browse files
committed
Pass in the Truffle runtime implementation name
* Creating a nested Engine is not well supported, and can lead to errors if experimental options are set in system properties.
1 parent aec6d78 commit 3d9646c

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

src/launcher/java/org/truffleruby/launcher/RubyLauncher.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.graalvm.nativeimage.ProcessProperties;
1414
import org.graalvm.options.OptionCategory;
1515
import org.graalvm.polyglot.Context;
16+
import org.graalvm.polyglot.Engine;
1617
import org.graalvm.polyglot.PolyglotException;
1718
import org.graalvm.polyglot.Source;
1819
import org.truffleruby.shared.options.CommandLineOptions;
@@ -57,7 +58,7 @@ protected void validateArguments(Map<String, String> polyglotOptions) {
5758

5859
@Override
5960
protected void printVersion() {
60-
System.out.println(TruffleRuby.getVersionString(isAOT()));
61+
System.out.println(TruffleRuby.getVersionString(getImplementationNameFromEngine(), isAOT()));
6162
System.out.println();
6263
printPolyglotVersions();
6364
}
@@ -271,7 +272,7 @@ private String setRubyLauncher() {
271272

272273
private static void printPreRunInformation(CommandLineOptions config) {
273274
if ((boolean) config.getOption(OptionsCatalog.SHOW_VERSION)) {
274-
System.out.println(TruffleRuby.getVersionString(isAOT()));
275+
System.out.println(TruffleRuby.getVersionString(getImplementationNameFromEngine(), isAOT()));
275276
}
276277

277278
if ((boolean) config.getOption(OptionsCatalog.SHOW_COPYRIGHT)) {
@@ -290,6 +291,12 @@ private static void printPreRunInformation(CommandLineOptions config) {
290291
}
291292
}
292293

294+
private static String getImplementationNameFromEngine() {
295+
try (Engine engine = Engine.create()) {
296+
return engine.getImplementationName();
297+
}
298+
}
299+
293300
// To update this, use:
294301
// ruby --help | ruby -e 'puts STDIN.readlines.map{|line|"out.println(#{line.chomp.inspect});"}'
295302
// replace ruby by truffleruby for the first line, and remove unsupported flags.

src/main/java/org/truffleruby/core/CoreLibrary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.concurrent.ConcurrentMap;
2525

2626
import com.oracle.truffle.api.CompilerDirectives;
27+
import com.oracle.truffle.api.Truffle;
2728
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
2829
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2930
import com.oracle.truffle.api.TruffleOptions;
@@ -711,7 +712,7 @@ private void initializeConstants() {
711712
setConstant(objectClass, "RUBY_ENGINE_VERSION", frozenUSASCIIString(TruffleRuby.getEngineVersion()));
712713
setConstant(objectClass, "RUBY_PLATFORM", frozenUSASCIIString(RubyLanguage.PLATFORM));
713714
setConstant(objectClass, "RUBY_RELEASE_DATE", frozenUSASCIIString(BuildInformationImpl.INSTANCE.getCompileDate()));
714-
setConstant(objectClass, "RUBY_DESCRIPTION", frozenUSASCIIString(TruffleRuby.getVersionString(TruffleOptions.AOT)));
715+
setConstant(objectClass, "RUBY_DESCRIPTION", frozenUSASCIIString(TruffleRuby.getVersionString(Truffle.getRuntime().getName(), TruffleOptions.AOT)));
715716
setConstant(objectClass, "RUBY_COPYRIGHT", frozenUSASCIIString(TruffleRuby.RUBY_COPYRIGHT));
716717

717718
// BasicObject knows itself

src/shared/java/org/truffleruby/shared/TruffleRuby.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,7 @@ public class TruffleRuby {
2727
public static final String RUBY_COPYRIGHT = "truffleruby - Copyright (c) 2013-2019 Oracle and/or its affiliates";
2828
public static final boolean PRE_INITIALIZE_CONTEXTS = System.getProperty("polyglot.engine.PreinitializeContexts") != null;
2929

30-
public static String getVersionString(boolean isAOT) {
31-
final String implementationName;
32-
try (Engine engine = Engine.create()) {
33-
implementationName = engine.getImplementationName();
34-
}
35-
30+
public static String getVersionString(String implementationName, boolean isAOT) {
3631
final String vm;
3732
if (isAOT) {
3833
vm = implementationName + " Native";

0 commit comments

Comments
 (0)