From 171c496e5082c2e1e9aad80bcd204c1e850512c1 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Thu, 22 Feb 2018 14:53:17 +0000 Subject: version.c: show +JIT when --jit is passed in version output. version.h: ditto ruby.c: propagate option for it common.mk: updated dependency for version.c mjit.c: overwrites the RUBY_DESCRIPTION to have +JIT when --jit is passed test/ruby/test_rubyoptions.rb: add test for them Only `ruby --jit -v` will have "+JIT", but this is intentional. This may not be convenient for debugging by ticket with `ruby -v`, but it's convenient for benchmark tools that pass options (--jit) when showing it. At least such behavior is planned for benchmark_driver.gem and this behavior is designed for it. Other benchmark tools are recommended to follow the behavior too if they show version. RUBY_DESCRIPTION might be useful for it too. The position of "+JIT" is changed from original proposal because other platforms like JRuby and TruffleRuby end it with archtecture. It's made similar to JRuby, but it's upper-cased because Matz made approval for "+JIT" in the ticket. Example: $ ruby -v ruby 2.6.0dev (2018-02-22 trunk 62529) [x86_64-linux] $ ruby --jit -v ruby 2.6.0dev (2018-02-22 trunk 62529) +JIT [x86_64-linux] After --jit is made default in the future, this output may be removed. So do not rely on this output if possible. [Feature #14462] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- version.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'version.c') diff --git a/version.c b/version.c index 4c7b1abb40..ec0dee91f0 100644 --- a/version.c +++ b/version.c @@ -11,6 +11,8 @@ #include "ruby/ruby.h" #include "version.h" +#include "vm_core.h" +#include "mjit.h" #include #ifndef EXIT_SUCCESS @@ -31,6 +33,7 @@ const char ruby_release_date[] = RUBY_RELEASE_DATE; const char ruby_platform[] = RUBY_PLATFORM; const int ruby_patchlevel = RUBY_PATCHLEVEL; const char ruby_description[] = RUBY_DESCRIPTION; +const char ruby_description_with_jit[] = RUBY_DESCRIPTION_WITH_JIT; const char ruby_copyright[] = RUBY_COPYRIGHT; const char ruby_engine[] = "ruby"; @@ -65,6 +68,7 @@ Init_version(void) rb_define_global_const("RUBY_REVISION", MKINT(revision)); /* * The full ruby version string, like ruby -v prints' + * This might be overwritten by mjit_init(). */ rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description)); /* @@ -86,7 +90,12 @@ Init_version(void) void ruby_show_version(void) { - PRINT(description); + if (mjit_opts.on) { + PRINT(description_with_jit); + } + else { + PRINT(description); + } #ifdef RUBY_LAST_COMMIT_TITLE fputs("last_commit=" RUBY_LAST_COMMIT_TITLE, stdout); #endif -- cgit v1.2.3