# Version string

**URL:** <https://www.ruby-forum.com/t/version-string/120068>\
**Category:** Development\
**Created:** [November 13, 2007, 3:02pm UTC](https://www.ruby-forum.com/t/version-string/120068 "2007-11-13T15:02:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 13, 2007, 3:02pm UTC](https://www.ruby-forum.com/t/version-string/120068/1 "2007-11-13T15:02:14Z")

</div>

e$B!!$5$5$@$G$9!%e(B

ruby --version e$B$G=PNO$5$l$k!$\<!$N$h$&$JJ8;zNse(B  
e$B!Ve(Bruby 1.9.0 (2007-11-13 patchlevel 0) [i686-linux]e$B!W$re(B Ruby  
e$BFb$G4Je(B  
e$BC1$K;2\>H$9$k$?$a$NJ}K!!JDj?t!)!K$r2C$($k$N$O$I$&$G$7$g$&$+!%e(BML  
e$B$KEje(B  
e$B9F$9$k$H$-$K;~!9M\_$7$/$J$j$^$9!%e(B

e$B!!e(Bplatform  
e$B$H$+$bF~$C$F$$$k$N$GHyL/$J5$$b$7$^$9$,!$e(BRUBY\_LONG\_VERSION  
e$B$H$$$&Dj?t$K$9$k$H$+!%e(B

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 13, 2007, 7:43pm UTC](https://www.ruby-forum.com/t/version-string/120068/2 "2007-11-13T19:43:54Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32266] version string”  
on Tue, 13 Nov 2007 23:00:46 +0900, SASADA Koichi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|ruby --version e$B$G=PNO$5$l$k!$\<!$N$h$&$JJ8;zNse(B  
|e$B!Ve(Bruby 1.9.0 (2007-11-13 patchlevel 0) [i686-linux]e$B!W$re(B Ruby e$BFb$G4Je(B  
|e$BC1$K;2\>H$9$k$?$a$NJ}K!!JDj?t!)!K$r2C$($k$N$O$I$&$G$7$g$&$+!%e(BML e$B$KEje(B  
|e$B9F$9$k$H$-$K;~!9M\_$7$/$J$j$^$9!%e(B  
|  
|e$B!!e(Bplatform e$B$H$+$bF~$C$F$$$k$N$GHyL/$J5$$b$7$^$9$,!$e(BRUBY\_LONG\_VERSION  
|e$B$H$$$&Dj?t$K$9$k$H$+!%e(B

e$B!V$=$l$O%P!\<%8%g%s$G$O$J$$$@$m$&!W$H$$$&5$$b$7$^$9$,!“B\>$KNIe(B  
e$B$$%”%$%G%#%“$,$J$1$l$P!”$=$NL\>A0$GDj?t$rDI2C$9$k$3$H$KH?BP$7e(B  
e$B$^$;$s!#e(B

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 13, 2007, 10:31pm UTC](https://www.ruby-forum.com/t/version-string/120068/3 "2007-11-13T22:31:24Z")

</div>

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

> |e$B!!e(Bplatform e$B$H$+$bF~$C$F$$$k$N$GHyL/$J5$$b$7$^$9$,!$e(BRUBY\_LONG\_VERSION  
> |e$B$H$$$&Dj?t$K$9$k$H$+!%e(B
> 
> e$B!V$=$l$O%P!\<%8%g%s$G$O$J$$$@$m$&!W$H$$$&5$$b$7$^$9$,!“B\>$KNIe(B  
> e$B$$%”%$%G%#%"$,$J$1$l$P!"$=$NL\>A0$GDj?t$rDI2C$9$k$3$H$KH?BP$7e(B  
> e$B$^$;$s!#e(B

Python e$B$@$H!$e(B

> > > import sys  
> > > sys.version  
> > > ‘2.4.4 (#2, Apr 5 2007, 20:11:18) \n[GCC 4.1.2 20061115  
> > > (prerelease) (Debian 4.1.1-21)]’

version e$B$G$3$3$^$G\<h$l$k$=$&$G$9!%e(B

e$B!!e(B[ruby-dev:31743]  
e$B$GCfED$5$s$,Ds0F$7$F$$$k$b$N$K!$$J$K$,$7$+$NL\>A0e(B  
e$B$GFM$C9~$`$N$,0lHV$$$$$h$&$J5$$O$7$F$$$^$9!%e(B

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 14, 2007, 2:47pm UTC](https://www.ruby-forum.com/t/version-string/120068/4 "2007-11-14T14:47:42Z")

</div>

On Nov 14, 2007 6:30 AM, SASADA Koichi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Python e$B$@$H!$e(B
> 
> > > > import sys  
> > > > sys.version  
> > > > ‘2.4.4 (#2, Apr 5 2007, 20:11:18) \n[GCC 4.1.2 20061115  
> > > > (prerelease) (Debian 4.1.1-21)]’
> 
> version e$B$G$3$3$^$G\<h$l$k$=$&$G$9!%e(B
> 
> [ruby-dev:31743] e$B$GCfED$5$s$,Ds0F$7$F$$$k$b$N$K!$$J$K$,$7$+$NL\>A0e(B  
> e$B$GFM$C9~$`$N$,0lHV$$$$$h$&$J5$$O$7$F$$$^$9!%e(B

e$B\<B:]$K0c$$$^$9$+!)e(B

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 14, 2007, 8:20am UTC](https://www.ruby-forum.com/t/version-string/120068/5 "2007-11-14T08:20:56Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32282] Re: version string”  
on Wed, 14 Nov 2007 06:30:35 +0900, SASADA Koichi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|e$B!!e(B[ruby-dev:31743] e$B$GCfED$5$s$,Ds0F$7$F$$$k$b$N$K!$$J$K$,$7$+$NL\>A0e(B  
|e$B$GFM$C9~$`$N$,0lHV$$$$$h$&$J5$$O$7$F$$$^$9!%e(B

e$B8D?ME\*$K$O$“$”$$$&8DJL%_%V%8%'%/%H$NF3F~$O$"$^$j9%$\_$G$J$$$Ne(B  
e$B$G!"e(BRUBY\_LONG\_VERSIONe$BE_$JJ8;zNs$r\<h$j9~$`$3$H$GBE6($G$-$^$;e(B  
e$B$s$+!)e(B

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [November 16, 2007, 5:37am UTC](https://www.ruby-forum.com/t/version-string/120068/6 "2007-11-16T05:37:12Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 14 Nov 2007 16:20:12 +0900,  
Yukihiro M. wrote in [ruby-dev:32288]:

> |e$B!!e(B[ruby-dev:31743] e$B$GCfED$5$s$,Ds0F$7$F$$$k$b$N$K!$$J$K$,$7$+$NL\>A0e(B  
> |e$B$GFM$C9~$`$N$,0lHV$$$$$h$&$J5$$O$7$F$$$^$9!%e(B
> 
> e$B8D?ME\*$K$O$"$"$$$&8DJL%_%V%8%’%/%H$NF3F~$O$"$^$j9%$\_$G$J$$$Ne(B  
> e$B$G!"e(BRUBY\_LONG\_VERSIONe$BE_$JJ8;zNs$r\<h$j9~$`$3$H$GBE6($G$-$^$;e(B  
> e$B$s$+!)e(B

e$B8DJL%\*%V%8%’%/%H$H$$$&$N$Oe(BRuby modulee$B$G$9$+e(B?  
e$B$?$V$s!"$5$5$@$5$se(B  
e$B$N$$$C$F$$$k$N$Oe(BRuby::VersionNumbere$B$N$3$H$G$O$J$$$N$G$O$J$$$+$He(B  
e$B;W$&$N$G$9$,!#e(B

e$B$H$j$"$($:$3$s$J$N$O$I$&$G$7$g$&$+!#e(B

# Index: include/ruby/defines.h

— include/ruby/defines.h (revision 13945)  
+++ include/ruby/defines.h (working copy)  
@@ -65,4 +65,9 @@ void _xrealloc2(void_,size\_t,size\_t);  
void xfree(void\*);

+#define STRINGIZE(expr) STRINGIZE0(expr)  
+#ifndef STRINGIZE0  
+#define STRINGIZE0(expr) #expr  
+#endif  
+  
#if SIZEOF\_LONG\_LONG \> 0

# define LONG\_LONG long long

# Index: version.c

— version.c (revision 13945)  
+++ version.c (working copy)  
@@ -15,4 +15,7 @@  
#include \<stdio.h\>

+#define PRINT(type) puts(RUBY\_##type)  
+#define MKSTR(type) rb\_str\_new(RUBY\_##type, sizeof(RUBY\_##type)-1)  
+  
const char ruby\_version[] = RUBY\_VERSION;  
const char ruby\_release\_date[] = RUBY\_RELEASE\_DATE;  
@@ -23,12 +26,21 @@ void  
Init\_version(void)  
{

- const char \*varname;  
+#define RUBY\_CONST(name, val) ( \
- varname = “RUBY\_” #name, \
- rb\_define\_const(mRuby, varname + 5, val), \
- rb\_define\_global\_const(varname, val))
- 
- VALUE mRuby = rb\_define\_module(“Ruby”);  
VALUE v = rb\_obj\_freeze(rb\_str\_new2(ruby\_version));  
VALUE d = rb\_obj\_freeze(rb\_str\_new2(ruby\_release\_date));  
VALUE p = rb\_obj\_freeze(rb\_str\_new2(ruby\_platform));

- rb\_define\_global\_const(“RUBY\_VERSION”, v);
- rb\_define\_global\_const(“RUBY\_RELEASE\_DATE”, d);
- rb\_define\_global\_const(“RUBY\_PLATFORM”, p);
- rb\_define\_global\_const(“RUBY\_PATCHLEVEL”,  
INT2FIX(RUBY\_PATCHLEVEL));

- RUBY\_CONST(VERSION, v);
- RUBY\_CONST(RELEASE\_DATE, d);
- RUBY\_CONST(PLATFORM, p);
- RUBY\_CONST(PATCHLEVEL, INT2FIX(RUBY\_PATCHLEVEL));
- RUBY\_CONST(DESCRIPTION, MKSTR(DESCRIPTION));
- RUBY\_CONST(COPYRIGHT, MKSTR(COPYRIGHT));  
}

@@ -36,5 +48,5 @@ void  
ruby\_show\_version(void)  
{

- printf(“ruby %s (%s patchlevel %d) [%s]\n”, RUBY\_VERSION,  
RUBY\_RELEASE\_DATE, RUBY\_PATCHLEVEL, RUBY\_PLATFORM);

- PRINT(VERSION);  
fflush(stdout);  
}  
@@ -43,5 +55,5 @@ void  
ruby\_show\_copyright(void)  
{

- printf(“ruby - Copyright © 1993-%d Yukihiro M.\n”,  
RUBY\_RELEASE\_YEAR);

- PRINT(COPYRIGHT);  
exit(0);  
}  
Index: version.h  
===================================================================  
— version.h (revision 13945)  
+++ version.h (working copy)  
@@ -1,2 +1,4 @@  
+#ifndef RUBY\_VERSION
- 

#define RUBY\_VERSION “1.9.0”  
#define RUBY\_RELEASE\_DATE “2007-11-16”  
@@ -18,2 +20,24 @@ RUBY\_EXTERN const char ruby\_platform[];  
RUBY\_EXTERN const int ruby\_patchlevel;  
#endif  
+  
+#define RUBY\_AUTHOR “Yukihiro M.”  
+#define RUBY\_BIRTH\_YEAR 1993  
+#define RUBY\_BIRTH\_MONTH 2  
+#define RUBY\_BIRTH\_DAY 24  
+  
+#define RUBY\_RELEASE\_STR “patchlevel”  
+#define RUBY\_RELEASE\_NUM RUBY\_PATCHLEVEL  
+  
+# define RUBY\_DESCRIPTION \

- "ruby "RUBY\_VERSION \
- " (“RUBY\_RELEASE\_DATE” " \
- RUBY\_RELEASE\_STR" " \
- STRINGIZE(RUBY\_RELEASE\_NUM)") " \
- “[“RUBY\_PLATFORM”]”  
+# define RUBY\_COPYRIGHT \
- "ruby - Copyright © " \
- STRINGIZE(RUBY\_BIRTH\_YEAR)"-" \
- STRINGIZE(RUBY\_RELEASE\_YEAR)" " \
- RUBY\_AUTHOR
- 

+#endif
