mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
171c496e50
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
114 lines
3.1 KiB
C
114 lines
3.1 KiB
C
/**********************************************************************
|
|
|
|
version.c -
|
|
|
|
$Author$
|
|
created at: Thu Sep 30 20:08:01 JST 1993
|
|
|
|
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
|
|
|
**********************************************************************/
|
|
|
|
#include "ruby/ruby.h"
|
|
#include "version.h"
|
|
#include "vm_core.h"
|
|
#include "mjit.h"
|
|
#include <stdio.h>
|
|
|
|
#ifndef EXIT_SUCCESS
|
|
#define EXIT_SUCCESS 0
|
|
#endif
|
|
|
|
#define PRINT(type) puts(ruby_##type)
|
|
#define MKSTR(type) rb_obj_freeze(rb_usascii_str_new_static(ruby_##type, sizeof(ruby_##type)-1))
|
|
#define MKINT(name) INT2FIX(ruby_##name)
|
|
|
|
const int ruby_api_version[] = {
|
|
RUBY_API_VERSION_MAJOR,
|
|
RUBY_API_VERSION_MINOR,
|
|
RUBY_API_VERSION_TEENY,
|
|
};
|
|
const char ruby_version[] = RUBY_VERSION;
|
|
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";
|
|
|
|
/*! Defines platform-depended Ruby-level constants */
|
|
void
|
|
Init_version(void)
|
|
{
|
|
enum {ruby_patchlevel = RUBY_PATCHLEVEL};
|
|
enum {ruby_revision = RUBY_REVISION};
|
|
VALUE version;
|
|
VALUE ruby_engine_name;
|
|
/*
|
|
* The running version of ruby
|
|
*/
|
|
rb_define_global_const("RUBY_VERSION", (version = MKSTR(version)));
|
|
/*
|
|
* The date this ruby was released
|
|
*/
|
|
rb_define_global_const("RUBY_RELEASE_DATE", MKSTR(release_date));
|
|
/*
|
|
* The platform for this ruby
|
|
*/
|
|
rb_define_global_const("RUBY_PLATFORM", MKSTR(platform));
|
|
/*
|
|
* The patchlevel for this ruby. If this is a development build of ruby
|
|
* the patchlevel will be -1
|
|
*/
|
|
rb_define_global_const("RUBY_PATCHLEVEL", MKINT(patchlevel));
|
|
/*
|
|
* The SVN revision for this ruby.
|
|
*/
|
|
rb_define_global_const("RUBY_REVISION", MKINT(revision));
|
|
/*
|
|
* The full ruby version string, like <tt>ruby -v</tt> prints'
|
|
* This might be overwritten by mjit_init().
|
|
*/
|
|
rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description));
|
|
/*
|
|
* The copyright string for ruby
|
|
*/
|
|
rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright));
|
|
/*
|
|
* The engine or interpreter this ruby uses.
|
|
*/
|
|
rb_define_global_const("RUBY_ENGINE", ruby_engine_name = MKSTR(engine));
|
|
ruby_set_script_name(ruby_engine_name);
|
|
/*
|
|
* The version of the engine or interpreter this ruby uses.
|
|
*/
|
|
rb_define_global_const("RUBY_ENGINE_VERSION", (1 ? version : MKSTR(version)));
|
|
}
|
|
|
|
/*! Prints the version information of the CRuby interpreter to stdout. */
|
|
void
|
|
ruby_show_version(void)
|
|
{
|
|
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
|
|
#ifdef HAVE_MALLOC_CONF
|
|
if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf);
|
|
#endif
|
|
fflush(stdout);
|
|
}
|
|
|
|
/*! Prints the copyright notice of the CRuby interpreter to stdout. */
|
|
void
|
|
ruby_show_copyright(void)
|
|
{
|
|
PRINT(copyright);
|
|
fflush(stdout);
|
|
}
|