debase-ruby_core_source 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/debase/ruby_core_source.rb +2 -1
  4. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/addr2line.h +21 -0
  5. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ccan/build_assert/build_assert.h +40 -0
  6. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ccan/check_type/check_type.h +63 -0
  7. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ccan/container_of/container_of.h +142 -0
  8. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ccan/list/list.h +635 -0
  9. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ccan/str/str.h +16 -0
  10. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/constant.h +43 -0
  11. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/dln.h +51 -0
  12. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/eval_intern.h +275 -0
  13. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/gc.h +107 -0
  14. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/id.h +210 -0
  15. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/insns.inc +107 -0
  16. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/insns_info.inc +752 -0
  17. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/internal.h +1178 -0
  18. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/iseq.h +157 -0
  19. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/known_errors.inc +746 -0
  20. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/method.h +141 -0
  21. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/node.h +544 -0
  22. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/node_name.inc +212 -0
  23. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/opt_sc.inc +734 -0
  24. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/optinsn.inc +83 -0
  25. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/optunifs.inc +124 -0
  26. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/parse.h +203 -0
  27. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/probes_helper.h +67 -0
  28. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/regenc.h +234 -0
  29. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/regint.h +972 -0
  30. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/regparse.h +363 -0
  31. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/revision.h +1 -0
  32. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/ruby_atomic.h +170 -0
  33. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/siphash.h +48 -0
  34. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/symbol.h +87 -0
  35. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/thread_pthread.h +54 -0
  36. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/thread_win32.h +36 -0
  37. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/timev.h +42 -0
  38. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/transcode_data.h +123 -0
  39. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/version.h +53 -0
  40. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm.inc +3353 -0
  41. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm_core.h +1158 -0
  42. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm_debug.h +37 -0
  43. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm_exec.h +182 -0
  44. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm_insnhelper.h +233 -0
  45. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vm_opts.h +56 -0
  46. data/lib/debase/ruby_core_source/ruby-2.2.0-preview2/vmtc.inc +105 -0
  47. data/lib/debase/ruby_core_source/version.rb +1 -1
  48. metadata +45 -2
@@ -0,0 +1,48 @@
1
+ #ifndef SIPHASH_H
2
+ #define SIPHASH_H 1
3
+ #include <stdlib.h>
4
+ #ifdef HAVE_STDINT_H
5
+ #include <stdint.h>
6
+ #endif
7
+ #ifdef HAVE_INTTYPES_H
8
+ #include <inttypes.h>
9
+ #endif
10
+
11
+ #ifndef HAVE_UINT64_T
12
+ typedef struct {
13
+ uint32_t u32[2];
14
+ } sip_uint64_t;
15
+ #define uint64_t sip_uint64_t
16
+ #else
17
+ typedef uint64_t sip_uint64_t;
18
+ #endif
19
+
20
+ typedef struct {
21
+ int c;
22
+ int d;
23
+ uint64_t v[4];
24
+ uint8_t buf[sizeof(uint64_t)];
25
+ uint8_t buflen;
26
+ uint8_t msglen_byte;
27
+ } sip_state;
28
+
29
+ typedef struct sip_interface_st sip_interface;
30
+
31
+ typedef struct {
32
+ sip_state state[1];
33
+ const sip_interface *methods;
34
+ } sip_hash;
35
+
36
+ sip_hash *sip_hash_new(const uint8_t key[16], int c, int d);
37
+ sip_hash *sip_hash_init(sip_hash *h, const uint8_t key[16], int c, int d);
38
+ int sip_hash_update(sip_hash *h, const uint8_t *data, size_t len);
39
+ int sip_hash_final(sip_hash *h, uint8_t **digest, size_t *len);
40
+ int sip_hash_final_integer(sip_hash *h, uint64_t *digest);
41
+ int sip_hash_digest(sip_hash *h, const uint8_t *data, size_t data_len, uint8_t **digest, size_t *digest_len);
42
+ int sip_hash_digest_integer(sip_hash *h, const uint8_t *data, size_t data_len, uint64_t *digest);
43
+ void sip_hash_free(sip_hash *h);
44
+ void sip_hash_dump(sip_hash *h);
45
+
46
+ uint64_t sip_hash24(const uint8_t key[16], const uint8_t *data, size_t len);
47
+
48
+ #endif
@@ -0,0 +1,87 @@
1
+ /**********************************************************************
2
+
3
+ symbol.h -
4
+
5
+ $Author$
6
+ created at: Tue Jul 8 15:49:54 JST 2014
7
+
8
+ Copyright (C) 2014 Yukihiro Matsumoto
9
+
10
+ **********************************************************************/
11
+
12
+ #ifndef RUBY_SYMBOL_H
13
+ #define RUBY_SYMBOL_H 1
14
+
15
+ #include "id.h"
16
+
17
+ #define DYNAMIC_ID_P(id) (!(id&ID_STATIC_SYM)&&id>tLAST_OP_ID)
18
+ #define STATIC_ID2SYM(id) (((VALUE)(id)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG)
19
+
20
+ #ifdef __GNUC__
21
+ #define rb_id2sym(id) \
22
+ __extension__(__builtin_constant_p(id) && !DYNAMIC_ID_P(id) ? \
23
+ STATIC_ID2SYM(id) : rb_id2sym(id))
24
+ #endif
25
+
26
+ struct RSymbol {
27
+ struct RBasic basic;
28
+ VALUE fstr;
29
+ ID id;
30
+ };
31
+
32
+ #define RSYMBOL(obj) (R_CAST(RSymbol)(obj))
33
+
34
+ static inline int
35
+ id_type(ID id)
36
+ {
37
+ if (id<=tLAST_OP_ID) {
38
+ return -1;
39
+ }
40
+ return (int)(id&ID_SCOPE_MASK);
41
+ }
42
+
43
+ #define is_notop_id(id) ((id)>tLAST_OP_ID)
44
+ #define is_local_id(id) (id_type(id)==ID_LOCAL)
45
+ #define is_global_id(id) (id_type(id)==ID_GLOBAL)
46
+ #define is_instance_id(id) (id_type(id)==ID_INSTANCE)
47
+ #define is_attrset_id(id) (id_type(id)==ID_ATTRSET)
48
+ #define is_const_id(id) (id_type(id)==ID_CONST)
49
+ #define is_class_id(id) (id_type(id)==ID_CLASS)
50
+ #define is_junk_id(id) (id_type(id)==ID_JUNK)
51
+
52
+ static inline int
53
+ sym_type(VALUE sym)
54
+ {
55
+ ID id;
56
+ if (STATIC_SYM_P(sym)) {
57
+ id = RSHIFT(sym, RUBY_SPECIAL_SHIFT);
58
+ if (id<=tLAST_OP_ID) {
59
+ return -1;
60
+ }
61
+ }
62
+ else {
63
+ id = RSYMBOL(sym)->id;
64
+ }
65
+ return (int)(id&ID_SCOPE_MASK);
66
+ }
67
+
68
+ #define is_local_sym(sym) (sym_type(sym)==ID_LOCAL)
69
+ #define is_global_sym(sym) (sym_type(sym)==ID_GLOBAL)
70
+ #define is_instance_sym(sym) (sym_type(sym)==ID_INSTANCE)
71
+ #define is_attrset_sym(sym) (sym_type(sym)==ID_ATTRSET)
72
+ #define is_const_sym(sym) (sym_type(sym)==ID_CONST)
73
+ #define is_class_sym(sym) (sym_type(sym)==ID_CLASS)
74
+ #define is_junk_sym(sym) (sym_type(sym)==ID_JUNK)
75
+
76
+ RUBY_FUNC_EXPORTED const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
77
+
78
+ static inline int
79
+ is_global_name_punct(const int c)
80
+ {
81
+ if (c <= 0x20 || 0x7e < c) return 0;
82
+ return (ruby_global_name_punct_bits[(c - 0x20) / 32] >> (c % 32)) & 1;
83
+ }
84
+
85
+ ID rb_intern_cstr_without_pindown(const char *, long, rb_encoding *);
86
+
87
+ #endif
@@ -0,0 +1,54 @@
1
+ /**********************************************************************
2
+
3
+ thread_pthread.h -
4
+
5
+ $Author: normal $
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ #ifndef RUBY_THREAD_PTHREAD_H
12
+ #define RUBY_THREAD_PTHREAD_H
13
+
14
+ #ifdef HAVE_PTHREAD_NP_H
15
+ #include <pthread_np.h>
16
+ #endif
17
+
18
+ #define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
19
+ #define RB_NATIVETHREAD_COND_INIT { PTHREAD_COND_INITIALIZER, }
20
+
21
+ typedef struct rb_thread_cond_struct {
22
+ pthread_cond_t cond;
23
+ #ifdef HAVE_CLOCKID_T
24
+ clockid_t clockid;
25
+ #endif
26
+ } rb_nativethread_cond_t;
27
+
28
+ typedef struct native_thread_data_struct {
29
+ void *signal_thread_list;
30
+ rb_nativethread_cond_t sleep_cond;
31
+ } native_thread_data_t;
32
+
33
+ #undef except
34
+ #undef try
35
+ #undef leave
36
+ #undef finally
37
+
38
+ typedef struct rb_global_vm_lock_struct {
39
+ /* fast path */
40
+ unsigned long acquired;
41
+ rb_nativethread_lock_t lock;
42
+
43
+ /* slow path */
44
+ volatile unsigned long waiting;
45
+ rb_nativethread_cond_t cond;
46
+
47
+ /* yield */
48
+ rb_nativethread_cond_t switch_cond;
49
+ rb_nativethread_cond_t switch_wait_cond;
50
+ int need_yield;
51
+ int wait_yield;
52
+ } rb_global_vm_lock_t;
53
+
54
+ #endif /* RUBY_THREAD_PTHREAD_H */
@@ -0,0 +1,36 @@
1
+ /**********************************************************************
2
+
3
+ thread_win32.h -
4
+
5
+ $Author: ko1 $
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ /* interface */
12
+ #ifndef RUBY_THREAD_WIN32_H
13
+ #define RUBY_THREAD_WIN32_H
14
+
15
+ # ifdef __CYGWIN__
16
+ # undef _WIN32
17
+ # endif
18
+
19
+ WINBASEAPI BOOL WINAPI
20
+ TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection);
21
+
22
+ typedef struct rb_thread_cond_struct {
23
+ struct cond_event_entry *next;
24
+ struct cond_event_entry *prev;
25
+ } rb_nativethread_cond_t;
26
+
27
+ typedef struct native_thread_data_struct {
28
+ HANDLE interrupt_event;
29
+ } native_thread_data_t;
30
+
31
+ typedef struct rb_global_vm_lock_struct {
32
+ HANDLE lock;
33
+ } rb_global_vm_lock_t;
34
+
35
+ #endif /* RUBY_THREAD_WIN32_H */
36
+
@@ -0,0 +1,42 @@
1
+ #ifndef RUBY_TIMEV_H
2
+ #define RUBY_TIMEV_H
3
+
4
+ PACKED_STRUCT_UNALIGNED(struct vtm {
5
+ VALUE year; /* 2000 for example. Integer. */
6
+ VALUE subsecx; /* 0 <= subsecx < TIME_SCALE. possibly Rational. */
7
+ VALUE utc_offset; /* -3600 as -01:00 for example. possibly Rational. */
8
+ const char *zone; /* "JST", "EST", "EDT", etc. */
9
+ uint16_t yday:9; /* 1..366 */
10
+ uint8_t mon:4; /* 1..12 */
11
+ uint8_t mday:5; /* 1..31 */
12
+ uint8_t hour:5; /* 0..23 */
13
+ uint8_t min:6; /* 0..59 */
14
+ uint8_t sec:6; /* 0..60 */
15
+ uint8_t wday:3; /* 0:Sunday, 1:Monday, ..., 6:Saturday 7:init */
16
+ uint8_t isdst:2; /* 0:StandardTime 1:DayLightSavingTime 3:init */
17
+ });
18
+
19
+ #define TIME_SCALE 1000000000
20
+
21
+ #ifndef TYPEOF_TIMEVAL_TV_SEC
22
+ # define TYPEOF_TIMEVAL_TV_SEC time_t
23
+ #endif
24
+ #ifndef TYPEOF_TIMEVAL_TV_USEC
25
+ # if INT_MAX >= 1000000
26
+ # define TYPEOF_TIMEVAL_TV_USEC int
27
+ # else
28
+ # define TYPEOF_TIMEVAL_TV_USEC long
29
+ # endif
30
+ #endif
31
+
32
+ #if SIZEOF_TIME_T == SIZEOF_LONG
33
+ typedef unsigned long unsigned_time_t;
34
+ #elif SIZEOF_TIME_T == SIZEOF_INT
35
+ typedef unsigned int unsigned_time_t;
36
+ #elif SIZEOF_TIME_T == SIZEOF_LONG_LONG
37
+ typedef unsigned LONG_LONG unsigned_time_t;
38
+ #else
39
+ # error cannot find integer type which size is same as time_t.
40
+ #endif
41
+
42
+ #endif
@@ -0,0 +1,123 @@
1
+ /**********************************************************************
2
+
3
+ transcode_data.h -
4
+
5
+ $Author: nobu $
6
+ created at: Mon 10 Dec 2007 14:01:47 JST 2007
7
+
8
+ Copyright (C) 2007 Martin Duerst
9
+
10
+ **********************************************************************/
11
+
12
+ #include "ruby/ruby.h"
13
+
14
+ #ifndef RUBY_TRANSCODE_DATA_H
15
+ #define RUBY_TRANSCODE_DATA_H 1
16
+
17
+ RUBY_SYMBOL_EXPORT_BEGIN
18
+
19
+ #define WORDINDEX_SHIFT_BITS 2
20
+ #define WORDINDEX2INFO(widx) ((widx) << WORDINDEX_SHIFT_BITS)
21
+ #define INFO2WORDINDEX(info) ((info) >> WORDINDEX_SHIFT_BITS)
22
+ #define BYTE_LOOKUP_BASE(bl) ((bl)[0])
23
+ #define BYTE_LOOKUP_INFO(bl) ((bl)[1])
24
+
25
+ #define PType (unsigned int)
26
+
27
+ #define NOMAP (PType 0x01) /* direct map */
28
+ #define ONEbt (0x02) /* one byte payload */
29
+ #define TWObt (0x03) /* two bytes payload */
30
+ #define THREEbt (0x05) /* three bytes payload */
31
+ #define FOURbt (0x06) /* four bytes payload, UTF-8 only, macros start at getBT0 */
32
+ #define INVALID (PType 0x07) /* invalid byte sequence */
33
+ #define UNDEF (PType 0x09) /* legal but undefined */
34
+ #define ZERObt (PType 0x0A) /* zero bytes of payload, i.e. remove */
35
+ #define FUNii (PType 0x0B) /* function from info to info */
36
+ #define FUNsi (PType 0x0D) /* function from start to info */
37
+ #define FUNio (PType 0x0E) /* function from info to output */
38
+ #define FUNso (PType 0x0F) /* function from start to output */
39
+ #define STR1 (PType 0x11) /* string 4 <= len <= 259 bytes: 1byte length + content */
40
+ #define GB4bt (PType 0x12) /* GB18030 four bytes payload */
41
+ #define FUNsio (PType 0x13) /* function from start and info to output */
42
+
43
+ #define STR1_LENGTH(byte_addr) (unsigned int)(*(byte_addr) + 4)
44
+ #define STR1_BYTEINDEX(w) ((w) >> 6)
45
+ #define makeSTR1(bi) (((bi) << 6) | STR1)
46
+ #define makeSTR1LEN(len) ((len)-4)
47
+
48
+ #define o1(b1) (PType((((unsigned char)(b1))<<8)|ONEbt))
49
+ #define o2(b1,b2) (PType((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|TWObt))
50
+ #define o3(b1,b2,b3) (PType(((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned int)(unsigned char)(b3))<<24)|THREEbt)&0xffffffffU))
51
+ #define o4(b0,b1,b2,b3) (PType(((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|((((unsigned char)(b0))&0x07)<<5)|FOURbt)&0xffffffffU))
52
+ #define g4(b0,b1,b2,b3) (PType(((((unsigned char)(b0))<<8)|(((unsigned char)(b2))<<16)|((((unsigned char)(b1))&0x0f)<<24)|((((unsigned int)(unsigned char)(b3))&0x0f)<<28)|GB4bt)&0xffffffffU))
53
+ #define funsio(diff) (PType((((unsigned int)(diff))<<8)|FUNsio))
54
+
55
+ #define getBT1(a) ((unsigned char)((a)>> 8))
56
+ #define getBT2(a) ((unsigned char)((a)>>16))
57
+ #define getBT3(a) ((unsigned char)((a)>>24))
58
+ #define getBT0(a) (((unsigned char)((a)>> 5)&0x07)|0xF0) /* for UTF-8 only!!! */
59
+
60
+ #define getGB4bt0(a) ((unsigned char)((a)>> 8))
61
+ #define getGB4bt1(a) (((unsigned char)((a)>>24)&0x0F)|0x30)
62
+ #define getGB4bt2(a) ((unsigned char)((a)>>16))
63
+ #define getGB4bt3(a) (((unsigned char)((a)>>28)&0x0F)|0x30)
64
+
65
+ #define o2FUNii(b1,b2) (PType((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|FUNii))
66
+
67
+ /* do we need these??? maybe not, can be done with simple tables */
68
+ #define ONETRAIL /* legal but undefined if one more trailing UTF-8 */
69
+ #define TWOTRAIL /* legal but undefined if two more trailing UTF-8 */
70
+ #define THREETRAIL /* legal but undefined if three more trailing UTF-8 */
71
+
72
+ typedef enum {
73
+ asciicompat_converter, /* ASCII-compatible -> ASCII-compatible */
74
+ asciicompat_decoder, /* ASCII-incompatible -> ASCII-compatible */
75
+ asciicompat_encoder /* ASCII-compatible -> ASCII-incompatible */
76
+ /* ASCII-incompatible -> ASCII-incompatible is intentionally omitted. */
77
+ } rb_transcoder_asciicompat_type_t;
78
+
79
+ typedef struct rb_transcoder rb_transcoder;
80
+
81
+ /* static structure, one per supported encoding pair */
82
+ struct rb_transcoder {
83
+ const char *src_encoding;
84
+ const char *dst_encoding;
85
+ unsigned int conv_tree_start;
86
+ const unsigned char *byte_array;
87
+ unsigned int byte_array_length;
88
+ const unsigned int *word_array;
89
+ unsigned int word_array_length;
90
+ int word_size;
91
+ int input_unit_length;
92
+ int max_input;
93
+ int max_output;
94
+ rb_transcoder_asciicompat_type_t asciicompat_type;
95
+ size_t state_size;
96
+ int (*state_init_func)(void*); /* ret==0:success ret!=0:failure(errno) */
97
+ int (*state_fini_func)(void*); /* ret==0:success ret!=0:failure(errno) */
98
+ VALUE (*func_ii)(void*, VALUE); /* info -> info */
99
+ VALUE (*func_si)(void*, const unsigned char*, size_t); /* start -> info */
100
+ ssize_t (*func_io)(void*, VALUE, const unsigned char*, size_t); /* info -> output */
101
+ ssize_t (*func_so)(void*, const unsigned char*, size_t, unsigned char*, size_t); /* start -> output */
102
+ ssize_t (*finish_func)(void*, unsigned char*, size_t); /* -> output */
103
+ ssize_t (*resetsize_func)(void*); /* -> len */
104
+ ssize_t (*resetstate_func)(void*, unsigned char*, size_t); /* -> output */
105
+ ssize_t (*func_sio)(void*, const unsigned char*, size_t, VALUE, unsigned char*, size_t); /* start -> output */
106
+ };
107
+
108
+ void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib);
109
+ void rb_register_transcoder(const rb_transcoder *);
110
+
111
+ /*
112
+ * To get rid of collision of initializer symbols in statically-linked encodings
113
+ * and transcoders
114
+ */
115
+ #if defined(EXTSTATIC) && EXTSTATIC
116
+ # define TRANS_INIT(name) void Init_trans_ ## name(void)
117
+ #else
118
+ # define TRANS_INIT(name) void Init_ ## name(void)
119
+ #endif
120
+
121
+ RUBY_SYMBOL_EXPORT_END
122
+
123
+ #endif /* RUBY_TRANSCODE_DATA_H */
@@ -0,0 +1,53 @@
1
+ #define RUBY_VERSION "2.2.0"
2
+ #define RUBY_RELEASE_DATE "2014-11-28"
3
+ #define RUBY_PATCHLEVEL -1
4
+ #define RUBY_BRANCH_NAME "trunk"
5
+
6
+ #define RUBY_RELEASE_YEAR 2014
7
+ #define RUBY_RELEASE_MONTH 11
8
+ #define RUBY_RELEASE_DAY 28
9
+
10
+ #include "ruby/version.h"
11
+
12
+ #if !defined RUBY_LIB_VERSION && defined RUBY_LIB_VERSION_STYLE
13
+ # if RUBY_LIB_VERSION_STYLE == 3
14
+ # define RUBY_LIB_VERSION STRINGIZE(RUBY_API_VERSION_MAJOR)"."STRINGIZE(RUBY_API_VERSION_MINOR)"."STRINGIZE(RUBY_API_VERSION_TEENY)
15
+ # elif RUBY_LIB_VERSION_STYLE == 2
16
+ # define RUBY_LIB_VERSION STRINGIZE(RUBY_API_VERSION_MAJOR)"."STRINGIZE(RUBY_API_VERSION_MINOR)
17
+ # endif
18
+ #endif
19
+
20
+ #if RUBY_PATCHLEVEL == -1
21
+ #define RUBY_PATCHLEVEL_STR "preview2"
22
+ #else
23
+ #define RUBY_PATCHLEVEL_STR "p"STRINGIZE(RUBY_PATCHLEVEL)
24
+ #endif
25
+
26
+ #ifndef RUBY_REVISION
27
+ # include "revision.h"
28
+ #endif
29
+ #ifndef RUBY_REVISION
30
+ # define RUBY_REVISION 0
31
+ #endif
32
+
33
+ #if RUBY_REVISION
34
+ # ifdef RUBY_BRANCH_NAME
35
+ # define RUBY_REVISION_STR " "RUBY_BRANCH_NAME" "STRINGIZE(RUBY_REVISION)
36
+ # else
37
+ # define RUBY_REVISION_STR " revision "STRINGIZE(RUBY_REVISION)
38
+ # endif
39
+ #else
40
+ # define RUBY_REVISION_STR ""
41
+ #endif
42
+
43
+ # define RUBY_DESCRIPTION \
44
+ "ruby "RUBY_VERSION \
45
+ RUBY_PATCHLEVEL_STR \
46
+ " ("RUBY_RELEASE_DATE \
47
+ RUBY_REVISION_STR") " \
48
+ "["RUBY_PLATFORM"]"
49
+ # define RUBY_COPYRIGHT \
50
+ "ruby - Copyright (C) " \
51
+ STRINGIZE(RUBY_BIRTH_YEAR)"-" \
52
+ STRINGIZE(RUBY_RELEASE_YEAR)" " \
53
+ RUBY_AUTHOR