Ruby Forum Ruby-dev > [ANN] Ruby 1.9.1$B;EMME`7k(B

Posted by Yugui (Yuki Sonoda) (Guest)
on 02.09.2008 08:29
(Received via mailing list)
Yugui$B$G$9!#(B

$B4{$K$*CN$i$;$7$?$h$&$K!"(BRuby 
1.9.1$B$N;EMM$O(B9$B7n(B25$BF|$GE`7k$5$l$^$9!#(B

$B$=$l0J9_!"(B
 * Ruby$B%l%Y%k$N(BAPI$B$OJQ99IT2D(B
 * 
C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
   * 
include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
$B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
   * 
$B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B

$B$^$?!"(B10$B7n(B25$BF|$K$O(Bruby_1_9_1$B%V%i%s%A$r:n@.$7$F(B1.9.1 
RC1$B$r%j%j!<%9$7$^(B
$B$9!#$=$l0J9_$O(B
 * C$B%l%Y%k(BAPI$BJQ99IT2D(B

$B$=$l$+$i!"(B1.9.x$B$N(BC$B%l%Y%k(BAPI$B$O(B1.9.1$B$KBP$7$F%P%$%J%j8eJ}8_49@-$r;}$D$3$H$,(B
$B4|BT$5$l$^$9!#(B

$B0J>e%j%^%$%s%@$H!"(Birc$B$G$NAjCL$NJs9p$G$7$?!#(B


$B$H$$$&$3$H$r4U$_$F!"(B
 * 
node.h$B$r(Binclude/ruby/$B$+$i0\F0$5$;$?$$(B(ripper$B$O$J$s$H$+$9$k(B)$B$N$G$9$,!"(B
$B$3$N$X$s$N7hDj8"$OC/$K$"$k$N$G$7$g$&(B?

 * ruby_io_t$B$OHs8x3+$K$7$J$$$H8e2y$7$^$;$s$+(B?

 * oniguruma.h$B$OBg>fIW(B?
Posted by Tadashi Saito (Guest)
on 02.09.2008 12:26
(Received via mailing list)
$B:XF#$H?=$7$^$9!#(B

On Tue, 2 Sep 2008 15:23:30 +0900
"Yugui (Yuki Sonoda)" <yugui@yugui.jp> wrote:

>  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B

$BA0!9$+$i5$$K$J$C$F$?$s$G$9$,!"(B

NUM2DBL
rb_cstr_to_dbl
rb_str_to_dbl
rb_num2dbl
rb_dbl_cmp
rb_dbl2big
rb_big2dbl

$B$H$$$&!V(Bdbl$B!W$NA0Nc$O$?$/$5$s$"$k$N$K!"$I$&$7$F(B

DOUBLE2NUM

$B$@$1!V(Bdouble$B!W$J$N$G$7$g$&$+!#(B1.9$B$+$iF~$C$?%^%/%m$N$h$&$G$9$,!"FCJL$JM}M3$,$J$$8B$j(B
$BB7$($F$"$C$?J}$,!"N`?d$,8z$$$F%W%m%0%i%`$,=q$-$d$9$$$G$9!#(B

Index: math.c
===================================================================
--- math.c  (revision 19065)
+++ math.c  (working copy)
@@ -85,7 +85,7 @@
 math_atan2(VALUE obj, VALUE y, VALUE x)
 {
     Need_Float2(y, x);
-    return DOUBLE2NUM(atan2(RFLOAT_VALUE(y), RFLOAT_VALUE(x)));
+    return DBL2NUM(atan2(RFLOAT_VALUE(y), RFLOAT_VALUE(x)));
 }


@@ -101,7 +101,7 @@
 math_cos(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(cos(RFLOAT_VALUE(x)));
+    return DBL2NUM(cos(RFLOAT_VALUE(x)));
 }

 /*
@@ -117,7 +117,7 @@
 {
     Need_Float(x);

-    return DOUBLE2NUM(sin(RFLOAT_VALUE(x)));
+    return DBL2NUM(sin(RFLOAT_VALUE(x)));
 }


@@ -133,7 +133,7 @@
 {
     Need_Float(x);

-    return DOUBLE2NUM(tan(RFLOAT_VALUE(x)));
+    return DBL2NUM(tan(RFLOAT_VALUE(x)));
 }

 /*
@@ -152,7 +152,7 @@
     errno = 0;
     d = acos(RFLOAT_VALUE(x));
     domain_check(d, "acos");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -171,7 +171,7 @@
     errno = 0;
     d = asin(RFLOAT_VALUE(x));
     domain_check(d, "asin");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -185,7 +185,7 @@
 math_atan(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(atan(RFLOAT_VALUE(x)));
+    return DBL2NUM(atan(RFLOAT_VALUE(x)));
 }

 #ifndef HAVE_COSH
@@ -208,7 +208,7 @@
 {
     Need_Float(x);

-    return DOUBLE2NUM(cosh(RFLOAT_VALUE(x)));
+    return DBL2NUM(cosh(RFLOAT_VALUE(x)));
 }

 #ifndef HAVE_SINH
@@ -231,7 +231,7 @@
 math_sinh(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(sinh(RFLOAT_VALUE(x)));
+    return DBL2NUM(sinh(RFLOAT_VALUE(x)));
 }

 #ifndef HAVE_TANH
@@ -254,7 +254,7 @@
 math_tanh(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(tanh(RFLOAT_VALUE(x)));
+    return DBL2NUM(tanh(RFLOAT_VALUE(x)));
 }

 /*
@@ -273,7 +273,7 @@
     errno = 0;
     d = acosh(RFLOAT_VALUE(x));
     domain_check(d, "acosh");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -287,7 +287,7 @@
 math_asinh(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(asinh(RFLOAT_VALUE(x)));
+    return DBL2NUM(asinh(RFLOAT_VALUE(x)));
 }

 /*
@@ -307,7 +307,7 @@
     d = atanh(RFLOAT_VALUE(x));
     domain_check(d, "atanh");
     infinity_check(x, d, "atanh");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -321,7 +321,7 @@
 math_exp(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(exp(RFLOAT_VALUE(x)));
+    return DBL2NUM(exp(RFLOAT_VALUE(x)));
 }

 #if defined __CYGWIN__
@@ -359,7 +359,7 @@
     }
     domain_check(d, "log");
     infinity_check(x, d, "log");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 #ifndef log2
@@ -391,7 +391,7 @@
     d = log2(RFLOAT_VALUE(x));
     domain_check(d, "log2");
     infinity_check(x, d, "log2");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -411,7 +411,7 @@
     d = log10(RFLOAT_VALUE(x));
     domain_check(d, "log10");
     infinity_check(x, d, "log10");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -447,7 +447,7 @@
     errno = 0;
     d = sqrt(RFLOAT_VALUE(x));
     domain_check(d, "sqrt");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -486,7 +486,7 @@
 math_cbrt(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(cbrt(RFLOAT_VALUE(x)));
+    return DBL2NUM(cbrt(RFLOAT_VALUE(x)));
 }

 /*
@@ -510,7 +510,7 @@
     Need_Float(x);

     d = frexp(RFLOAT_VALUE(x), &exp);
-    return rb_assoc_new(DOUBLE2NUM(d), INT2NUM(exp));
+    return rb_assoc_new(DBL2NUM(d), INT2NUM(exp));
 }

 /*
@@ -527,7 +527,7 @@
 math_ldexp(VALUE obj, VALUE x, VALUE n)
 {
     Need_Float(x);
-    return DOUBLE2NUM(ldexp(RFLOAT_VALUE(x), NUM2INT(n)));
+    return DBL2NUM(ldexp(RFLOAT_VALUE(x), NUM2INT(n)));
 }

 /*
@@ -544,7 +544,7 @@
 math_hypot(VALUE obj, VALUE x, VALUE y)
 {
     Need_Float2(x, y);
-    return DOUBLE2NUM(hypot(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
+    return DBL2NUM(hypot(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
 }

 /*
@@ -558,7 +558,7 @@
 math_erf(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(erf(RFLOAT_VALUE(x)));
+    return DBL2NUM(erf(RFLOAT_VALUE(x)));
 }

 /*
@@ -572,7 +572,7 @@
 math_erfc(VALUE obj, VALUE x)
 {
     Need_Float(x);
-    return DOUBLE2NUM(erfc(RFLOAT_VALUE(x)));
+    return DBL2NUM(erfc(RFLOAT_VALUE(x)));
 }

 /*
@@ -624,7 +624,7 @@
     errno = 0;
     d = tgamma(RFLOAT_VALUE(x));
     domain_check(d, "gamma");
-    return DOUBLE2NUM(d);
+    return DBL2NUM(d);
 }

 /*
@@ -649,7 +649,7 @@
     errno = 0;
     d = lgamma_r(RFLOAT_VALUE(x), &sign);
     domain_check(d, "lgamma");
-    v = DOUBLE2NUM(d);
+    v = DBL2NUM(d);
     return rb_assoc_new(v, INT2FIX(sign));
 }

@@ -667,15 +667,15 @@
     rb_mMath = rb_define_module("Math");

 #ifdef M_PI
-    rb_define_const(rb_mMath, "PI", DOUBLE2NUM(M_PI));
+    rb_define_const(rb_mMath, "PI", DBL2NUM(M_PI));
 #else
-    rb_define_const(rb_mMath, "PI", DOUBLE2NUM(atan(1.0)*4.0));
+    rb_define_const(rb_mMath, "PI", DBL2NUM(atan(1.0)*4.0));
 #endif

 #ifdef M_E
-    rb_define_const(rb_mMath, "E", DOUBLE2NUM(M_E));
+    rb_define_const(rb_mMath, "E", DBL2NUM(M_E));
 #else
-    rb_define_const(rb_mMath, "E", DOUBLE2NUM(exp(1.0)));
+    rb_define_const(rb_mMath, "E", DBL2NUM(exp(1.0)));
 #endif

     rb_define_module_function(rb_mMath, "atan2", math_atan2, 2);
Index: time.c
===================================================================
--- time.c  (revision 19065)
+++ time.c  (working copy)
@@ -1016,7 +1016,7 @@
     struct time_object *tobj;

     GetTimeval(time, tobj);
-    return 
DOUBLE2NUM((double)tobj->ts.tv_sec+(double)tobj->ts.tv_nsec/1e9);
+    return 
DBL2NUM((double)tobj->ts.tv_sec+(double)tobj->ts.tv_nsec/1e9);
 }

 /*
@@ -1513,7 +1513,7 @@
             f = (double)(unsigned_time_t)(tobj->ts.tv_sec - 
tobj2->ts.tv_sec);
   f += ((double)tobj->ts.tv_nsec - (double)tobj2->ts.tv_nsec)*1e-9;

-  return DOUBLE2NUM(f);
+  return DBL2NUM(f);
     }
     return time_add(tobj, time2, -1);
 }
Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h  (revision 19065)
+++ include/ruby/ruby.h  (working copy)
@@ -568,7 +568,7 @@
     double float_value;
 };
 #define RFLOAT_VALUE(v) (RFLOAT(v)->float_value)
-#define DOUBLE2NUM(dbl)  rb_float_new(dbl)
+#define DBL2NUM(dbl)  rb_float_new(dbl)

 #define ELTS_SHARED FL_USER2

Index: insns.def
===================================================================
--- insns.def  (revision 19065)
+++ insns.def  (working copy)
@@ -1319,7 +1319,7 @@
   else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
      HEAP_CLASS_OF(obj) == rb_cFloat &&
      BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
-      val = DOUBLE2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
+      val = DBL2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
   }
 #endif

@@ -1420,7 +1420,7 @@
   else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
      HEAP_CLASS_OF(obj) == rb_cFloat  &&
      BASIC_OP_UNREDEFINED_P(BOP_MULT)) {
-      val = DOUBLE2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
+      val = DBL2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
   }
 #endif
   else {
@@ -1484,7 +1484,7 @@
   else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
      HEAP_CLASS_OF(obj) == rb_cFloat  &&
      BASIC_OP_UNREDEFINED_P(BOP_DIV)) {
-      val = DOUBLE2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
+      val = DBL2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
   }
 #endif
   else {
@@ -1564,7 +1564,7 @@
     mod += y;
     div -= 1.0;
       }
-      val = DOUBLE2NUM(mod);
+      val = DBL2NUM(mod);
   }
   else {
       goto INSN_LABEL(normal_dispatch);
Index: object.c
===================================================================
--- object.c  (revision 19065)
+++ object.c  (working copy)
@@ -850,7 +850,7 @@
 static VALUE
 nil_to_f(VALUE obj)
 {
-    return DOUBLE2NUM(0.0);
+    return DBL2NUM(0.0);
 }

 /*
@@ -2230,16 +2230,16 @@
 {
     switch (TYPE(val)) {
       case T_FIXNUM:
-  return DOUBLE2NUM((double)FIX2LONG(val));
+  return DBL2NUM((double)FIX2LONG(val));

       case T_FLOAT:
   return val;

       case T_BIGNUM:
-  return DOUBLE2NUM(rb_big2dbl(val));
+  return DBL2NUM(rb_big2dbl(val));

       case T_STRING:
-  return DOUBLE2NUM(rb_str_to_dbl(val, Qtrue));
+  return DBL2NUM(rb_str_to_dbl(val, Qtrue));

       case T_NIL:
   rb_raise(rb_eTypeError, "can't convert nil into Float");
Index: string.c
===================================================================
--- string.c  (revision 19065)
+++ string.c  (working copy)
@@ -3763,7 +3763,7 @@
 static VALUE
 rb_str_to_f(VALUE str)
 {
-    return DOUBLE2NUM(rb_str_to_dbl(str, Qfalse));
+    return DBL2NUM(rb_str_to_dbl(str, Qfalse));
 }


Index: pack.c
===================================================================
--- pack.c  (revision 19065)
+++ pack.c  (working copy)
@@ -1642,7 +1642,7 @@
     float tmp;
     memcpy(&tmp, s, sizeof(float));
     s += sizeof(float);
-    UNPACK_PUSH(DOUBLE2NUM((double)tmp));
+    UNPACK_PUSH(DBL2NUM((double)tmp));
       }
       PACK_ITEM_ADJUST();
       break;
@@ -1656,7 +1656,7 @@
     memcpy(&tmp, s, sizeof(float));
     s += sizeof(float);
     tmp = VTOHF(tmp,ftmp);
-    UNPACK_PUSH(DOUBLE2NUM((double)tmp));
+    UNPACK_PUSH(DBL2NUM((double)tmp));
       }
       PACK_ITEM_ADJUST();
       break;
@@ -1670,7 +1670,7 @@
     memcpy(&tmp, s, sizeof(double));
     s += sizeof(double);
     tmp = VTOHD(tmp,dtmp);
-    UNPACK_PUSH(DOUBLE2NUM(tmp));
+    UNPACK_PUSH(DBL2NUM(tmp));
       }
       PACK_ITEM_ADJUST();
       break;
@@ -1682,7 +1682,7 @@
     double tmp;
     memcpy(&tmp, s, sizeof(double));
     s += sizeof(double);
-    UNPACK_PUSH(DOUBLE2NUM(tmp));
+    UNPACK_PUSH(DBL2NUM(tmp));
       }
       PACK_ITEM_ADJUST();
       break;
@@ -1696,7 +1696,7 @@
     memcpy(&tmp, s, sizeof(float));
     s += sizeof(float);
     tmp = NTOHF(tmp,ftmp);
-    UNPACK_PUSH(DOUBLE2NUM((double)tmp));
+    UNPACK_PUSH(DBL2NUM((double)tmp));
       }
       PACK_ITEM_ADJUST();
       break;
@@ -1710,7 +1710,7 @@
     memcpy(&tmp, s, sizeof(double));
     s += sizeof(double);
     tmp = NTOHD(tmp,dtmp);
-    UNPACK_PUSH(DOUBLE2NUM(tmp));
+    UNPACK_PUSH(DBL2NUM(tmp));
       }
       PACK_ITEM_ADJUST();
       break;
Index: gc.c
===================================================================
--- gc.c  (revision 19065)
+++ gc.c  (working copy)
@@ -2695,14 +2695,14 @@

     for (i =0; i < objspace->profile.count; i++) {
   prof = rb_hash_new();
-        rb_hash_aset(prof, ID2SYM(rb_intern("GC_TIME")), 
DOUBLE2NUM(objspace->profile.record[i].gc_time));
-        rb_hash_aset(prof, ID2SYM(rb_intern("GC_INVOKE_TIME")), 
DOUBLE2NUM(objspace->profile.record[i].gc_invoke_time));
+        rb_hash_aset(prof, ID2SYM(rb_intern("GC_TIME")), 
DBL2NUM(objspace->profile.record[i].gc_time));
+        rb_hash_aset(prof, ID2SYM(rb_intern("GC_INVOKE_TIME")), 
DBL2NUM(objspace->profile.record[i].gc_invoke_time));
         rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SIZE")), 
rb_uint2inum(objspace->profile.record[i].heap_use_size));
         rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_SIZE")), 
rb_uint2inum(objspace->profile.record[i].heap_total_size));
         rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_OBJECTS")), 
rb_uint2inum(objspace->profile.record[i].heap_total_objects));
 #if GC_PROFILE_MORE_DETAIL
-        rb_hash_aset(prof, ID2SYM(rb_intern("GC_MARK_TIME")), 
DOUBLE2NUM(objspace->profile.record[i].gc_mark_time));
-        rb_hash_aset(prof, ID2SYM(rb_intern("GC_SWEEP_TIME")), 
DOUBLE2NUM(objspace->profile.record[i].gc_sweep_time));
+        rb_hash_aset(prof, ID2SYM(rb_intern("GC_MARK_TIME")), 
DBL2NUM(objspace->profile.record[i].gc_mark_time));
+        rb_hash_aset(prof, ID2SYM(rb_intern("GC_SWEEP_TIME")), 
DBL2NUM(objspace->profile.record[i].gc_sweep_time));
         rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_INCREASE")), 
rb_uint2inum(objspace->profile.record[i].allocate_increase));
         rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_LIMIT")), 
rb_uint2inum(objspace->profile.record[i].allocate_limit));
         rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SLOTS")), 
rb_uint2inum(objspace->profile.record[i].heap_use_slots));
Index: parse.y
===================================================================
--- parse.y  (revision 19065)
+++ parse.y  (working copy)
@@ -6919,7 +6919,7 @@
         rb_warningS("Float %s out of range", tok());
         errno = 0;
     }
-                set_yylval_literal(DOUBLE2NUM(d));
+                set_yylval_literal(DBL2NUM(d));
     return tFLOAT;
       }
             set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse));
Index: process.c
===================================================================
--- process.c  (revision 19065)
+++ process.c  (working copy)
@@ -5049,10 +5049,10 @@

     times(&buf);
     return rb_struct_new(rb_cProcessTms,
-       utime = DOUBLE2NUM(buf.tms_utime / hertz),
-       stime = DOUBLE2NUM(buf.tms_stime / hertz),
-       cutime = DOUBLE2NUM(buf.tms_cutime / hertz),
-       sctime = DOUBLE2NUM(buf.tms_cstime / hertz));
+       utime = DBL2NUM(buf.tms_utime / hertz),
+       stime = DBL2NUM(buf.tms_stime / hertz),
+       cutime = DBL2NUM(buf.tms_cutime / hertz),
+       sctime = DBL2NUM(buf.tms_cstime / hertz));
 #else
     rb_notimplement();
 #endif
Index: numeric.c
===================================================================
--- numeric.c  (revision 19065)
+++ numeric.c  (working copy)
@@ -562,7 +562,7 @@
 static VALUE
 flo_uminus(VALUE flt)
 {
-    return DOUBLE2NUM(-RFLOAT_VALUE(flt));
+    return DBL2NUM(-RFLOAT_VALUE(flt));
 }

 /*
@@ -578,11 +578,11 @@
 {
     switch (TYPE(y)) {
       case T_FIXNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) + (double)FIX2LONG(y));
+  return DBL2NUM(RFLOAT_VALUE(x) + (double)FIX2LONG(y));
       case T_BIGNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) + rb_big2dbl(y));
+  return DBL2NUM(RFLOAT_VALUE(x) + rb_big2dbl(y));
       case T_FLOAT:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) + RFLOAT_VALUE(y));
+  return DBL2NUM(RFLOAT_VALUE(x) + RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '+');
     }
@@ -601,11 +601,11 @@
 {
     switch (TYPE(y)) {
       case T_FIXNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) - (double)FIX2LONG(y));
+  return DBL2NUM(RFLOAT_VALUE(x) - (double)FIX2LONG(y));
       case T_BIGNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) - rb_big2dbl(y));
+  return DBL2NUM(RFLOAT_VALUE(x) - rb_big2dbl(y));
       case T_FLOAT:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) - RFLOAT_VALUE(y));
+  return DBL2NUM(RFLOAT_VALUE(x) - RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '-');
     }
@@ -624,11 +624,11 @@
 {
     switch (TYPE(y)) {
       case T_FIXNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) * (double)FIX2LONG(y));
+  return DBL2NUM(RFLOAT_VALUE(x) * (double)FIX2LONG(y));
       case T_BIGNUM:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) * rb_big2dbl(y));
+  return DBL2NUM(RFLOAT_VALUE(x) * rb_big2dbl(y));
       case T_FLOAT:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) * RFLOAT_VALUE(y));
+  return DBL2NUM(RFLOAT_VALUE(x) * RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '*');
     }
@@ -651,12 +651,12 @@
     switch (TYPE(y)) {
       case T_FIXNUM:
   f_y = FIX2LONG(y);
-  return DOUBLE2NUM(RFLOAT_VALUE(x) / (double)f_y);
+  return DBL2NUM(RFLOAT_VALUE(x) / (double)f_y);
       case T_BIGNUM:
   d = rb_big2dbl(y);
-  return DOUBLE2NUM(RFLOAT_VALUE(x) / d);
+  return DBL2NUM(RFLOAT_VALUE(x) / d);
       case T_FLOAT:
-  return DOUBLE2NUM(RFLOAT_VALUE(x) / RFLOAT_VALUE(y));
+  return DBL2NUM(RFLOAT_VALUE(x) / RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '/');
     }
@@ -726,7 +726,7 @@
   return rb_num_coerce_bin(x, y, '%');
     }
     flodivmod(RFLOAT_VALUE(x), fy, 0, &mod);
-    return DOUBLE2NUM(mod);
+    return DBL2NUM(mod);
 }

 static VALUE
@@ -773,7 +773,7 @@
     }
     flodivmod(RFLOAT_VALUE(x), fy, &div, &mod);
     a = dbl2ival(div);
-    b = DOUBLE2NUM(mod);
+    b = DBL2NUM(mod);
     return rb_assoc_new(a, b);
 }

@@ -790,11 +790,11 @@
 {
     switch (TYPE(y)) {
       case T_FIXNUM:
-  return DOUBLE2NUM(pow(RFLOAT_VALUE(x), (double)FIX2LONG(y)));
+  return DBL2NUM(pow(RFLOAT_VALUE(x), (double)FIX2LONG(y)));
       case T_BIGNUM:
-  return DOUBLE2NUM(pow(RFLOAT_VALUE(x), rb_big2dbl(y)));
+  return DBL2NUM(pow(RFLOAT_VALUE(x), rb_big2dbl(y)));
       case T_FLOAT:
-  return DOUBLE2NUM(pow(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
+  return DBL2NUM(pow(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
       default:
   return rb_num_coerce_bin(x, y, rb_intern("**"));
     }
@@ -1130,7 +1130,7 @@
 flo_abs(VALUE flt)
 {
     double val = fabs(RFLOAT_VALUE(flt));
-    return DOUBLE2NUM(val);
+    return DBL2NUM(val);
 }

 /*
@@ -1312,7 +1312,7 @@
   else number /= f;
     }

-    if (ndigits > 0) return DOUBLE2NUM(number);
+    if (ndigits > 0) return DBL2NUM(number);

     if (!FIXABLE(number)) {
   return rb_dbl2big(number);
@@ -1501,7 +1501,7 @@
   if (err>0.5) err=0.5;
   n = floor(n + err) + 1;
   for (i=0; i<n; i++) {
-      rb_yield(DOUBLE2NUM(i*unit+beg));
+      rb_yield(DBL2NUM(i*unit+beg));
   }
     }
     else {
@@ -2106,7 +2106,7 @@
       case T_BIGNUM:
   return rb_big_plus(y, x);
       case T_FLOAT:
-  return DOUBLE2NUM((double)FIX2LONG(x) + RFLOAT_VALUE(y));
+  return DBL2NUM((double)FIX2LONG(x) + RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '+');
     }
@@ -2140,7 +2140,7 @@
   x = rb_int2big(FIX2LONG(x));
   return rb_big_minus(x, y);
       case T_FLOAT:
-  return DOUBLE2NUM((double)FIX2LONG(x) - RFLOAT_VALUE(y));
+  return DBL2NUM((double)FIX2LONG(x) - RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '-');
     }
@@ -2199,7 +2199,7 @@
       case T_BIGNUM:
   return rb_big_mul(y, x);
       case T_FLOAT:
-  return DOUBLE2NUM((double)FIX2LONG(x) * RFLOAT_VALUE(y));
+  return DBL2NUM((double)FIX2LONG(x) * RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, '*');
     }
@@ -2248,13 +2248,13 @@
 fix_fdiv(VALUE x, VALUE y)
 {
     if (FIXNUM_P(y)) {
-  return DOUBLE2NUM((double)FIX2LONG(x) / (double)FIX2LONG(y));
+  return DBL2NUM((double)FIX2LONG(x) / (double)FIX2LONG(y));
     }
     switch (TYPE(y)) {
       case T_BIGNUM:
-  return DOUBLE2NUM((double)FIX2LONG(x) / rb_big2dbl(y));
+  return DBL2NUM((double)FIX2LONG(x) / rb_big2dbl(y));
       case T_FLOAT:
-  return DOUBLE2NUM((double)FIX2LONG(x) / RFLOAT_VALUE(y));
+  return DBL2NUM((double)FIX2LONG(x) / RFLOAT_VALUE(y));
       default:
   return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
     }
@@ -2279,7 +2279,7 @@

       if (op == '/') {
     div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
-    return DOUBLE2NUM(div);
+    return DBL2NUM(div);
       }
       else {
     if (RFLOAT_VALUE(y) == 0) rb_num_zerodiv();
@@ -2347,7 +2347,7 @@
       double mod;

       flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), 0, &mod);
-      return DOUBLE2NUM(mod);
+      return DBL2NUM(mod);
   }
       default:
   return rb_num_coerce_bin(x, y, '%');
@@ -2381,7 +2381,7 @@

       flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), &div, &mod);
       a = dbl2ival(div);
-      b = DOUBLE2NUM(mod);
+      b = DBL2NUM(mod);
       return rb_assoc_new(a, b);
   }
       default:
@@ -2453,7 +2453,7 @@
   if (b == 1) return x;
   if (a == 0) {
       if (b > 0) return INT2FIX(0);
-      return DOUBLE2NUM(1.0 / zero);
+      return DBL2NUM(1.0 / zero);
   }
   if (a == 1) return INT2FIX(1);
   if (a == -1) {
@@ -2479,12 +2479,12 @@
   x = rb_int2big(FIX2LONG(x));
   return rb_big_pow(x, y);
       case T_FLOAT:
-  if (RFLOAT_VALUE(y) == 0.0) return DOUBLE2NUM(1.0);
+  if (RFLOAT_VALUE(y) == 0.0) return DBL2NUM(1.0);
   if (a == 0) {
-      return DOUBLE2NUM(RFLOAT_VALUE(y) < 0 ? (1.0 / zero) : 0.0);
+      return DBL2NUM(RFLOAT_VALUE(y) < 0 ? (1.0 / zero) : 0.0);
   }
-  if (a == 1) return DOUBLE2NUM(1.0);
-  return DOUBLE2NUM(pow((double)a, RFLOAT_VALUE(y)));
+  if (a == 1) return DBL2NUM(1.0);
+  return DBL2NUM(pow((double)a, RFLOAT_VALUE(y)));
       default:
   return rb_num_coerce_bin(x, y, rb_intern("**"));
     }
@@ -2854,7 +2854,7 @@

     val = (double)FIX2LONG(num);

-    return DOUBLE2NUM(val);
+    return DBL2NUM(val);
 }

 /*
@@ -3245,9 +3245,9 @@
     rb_define_const(rb_cFloat, "MAX_EXP", INT2FIX(DBL_MAX_EXP));
     rb_define_const(rb_cFloat, "MIN_10_EXP", INT2FIX(DBL_MIN_10_EXP));
     rb_define_const(rb_cFloat, "MAX_10_EXP", INT2FIX(DBL_MAX_10_EXP));
-    rb_define_const(rb_cFloat, "MIN", DOUBLE2NUM(DBL_MIN));
-    rb_define_const(rb_cFloat, "MAX", DOUBLE2NUM(DBL_MAX));
-    rb_define_const(rb_cFloat, "EPSILON", DOUBLE2NUM(DBL_EPSILON));
+    rb_define_const(rb_cFloat, "MIN", DBL2NUM(DBL_MIN));
+    rb_define_const(rb_cFloat, "MAX", DBL2NUM(DBL_MAX));
+    rb_define_const(rb_cFloat, "EPSILON", DBL2NUM(DBL_EPSILON));

     rb_define_method(rb_cFloat, "to_s", flo_to_s, 0);
     rb_define_method(rb_cFloat, "coerce", flo_coerce, 1);
Index: bignum.c
===================================================================
--- bignum.c  (revision 19065)
+++ bignum.c  (working copy)
@@ -1237,7 +1237,7 @@
 static VALUE
 rb_big_to_f(VALUE x)
 {
-    return DOUBLE2NUM(rb_big2dbl(x));
+    return DBL2NUM(rb_big2dbl(x));
 }

 /*
@@ -1499,7 +1499,7 @@
   return bignorm(bigadd(x, y, 1));

       case T_FLOAT:
-  return DOUBLE2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
+  return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));

       default:
   return rb_num_coerce_bin(x, y, '+');
@@ -1524,7 +1524,7 @@
   return bignorm(bigadd(x, y, 0));

       case T_FLOAT:
-  return DOUBLE2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
+  return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));

       default:
   return rb_num_coerce_bin(x, y, '-');
@@ -1588,7 +1588,7 @@
   break;

       case T_FLOAT:
-  return DOUBLE2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
+  return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));

       default:
   return rb_num_coerce_bin(x, y, '*');
@@ -1817,7 +1817,7 @@
   {
       double div = rb_big2dbl(x) / RFLOAT_VALUE(y);
       if (op == '/') {
-    return DOUBLE2NUM(div);
+    return DBL2NUM(div);
       }
       else {
     return rb_dbl2big(div);
@@ -2010,7 +2010,7 @@
       if (ey) y = big_shift(y, ey);
     bignum:
       bigdivrem(x, y, &z, 0);
-      return DOUBLE2NUM(ldexp(big2dbl(z), ex - ey));
+      return DBL2NUM(ldexp(big2dbl(z), ex - ey));
     }
     case T_FLOAT:
       if (isnan(RFLOAT_VALUE(y))) return y;
@@ -2035,7 +2035,7 @@
       default:
   return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
     }
-    return DOUBLE2NUM(dx / dy);
+    return DBL2NUM(dx / dy);
 }

 static VALUE
@@ -2148,7 +2148,7 @@
       default:
   return rb_num_coerce_bin(x, y, rb_intern("**"));
     }
-    return DOUBLE2NUM(pow(rb_big2dbl(x), d));
+    return DBL2NUM(pow(rb_big2dbl(x), d));
 }

 static VALUE
Index: marshal.c
===================================================================
--- marshal.c  (revision 19065)
+++ marshal.c  (working copy)
@@ -1306,7 +1306,7 @@
     d = strtod(ptr, &e);
     d = load_mantissa(d, e, RSTRING_LEN(str) - (e - ptr));
       }
-      v = DOUBLE2NUM(d);
+      v = DBL2NUM(d);
       v = r_entry(v, arg);
             v = r_leave(v, arg);
   }
Index: random.c
===================================================================
--- random.c  (revision 19065)
+++ random.c  (working copy)
@@ -505,7 +505,7 @@
             limit = (struct RBignum *)rb_big_minus((VALUE)limit, 
INT2FIX(1));
             if (FIXNUM_P((VALUE)limit)) {
                 if (FIX2LONG((VALUE)limit) == -1)
-                    return DOUBLE2NUM(genrand_real(mt));
+                    return DBL2NUM(genrand_real(mt));
                 return LONG2NUM(limited_rand(mt, 
FIX2LONG((VALUE)limit)));
             }
             return limited_big_rand(mt, limit);
@@ -522,7 +522,7 @@
     }

     if (max == 0) {
-  return DOUBLE2NUM(genrand_real(mt));
+  return DBL2NUM(genrand_real(mt));
     }
     if (max < 0) max = -max;
     val = limited_rand(mt, max-1);
Posted by NARUSE, Yui (Guest)
on 02.09.2008 15:12
(Received via mailing list)
$B@.@%$G$9!#(B

Yugui (Yuki Sonoda) wrote:
>  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
>    * $B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B

$B%3%_%C%?B&$K8~$1$F$N;vA0AjCL5AL3$O$h$$$H;W$&$N$G$9$,!"(B
$B8x3+(B C API $B$H@k8@$7$F$7$^$&$N$OHyL/$+$b$7$l$^$;$s!#(B

$BNc$($P(B oniguruma.h $B$O(B encoding.h 
$B$,0MB8$7$F$$$k$?$a$K$=$3$K$"$k$N$G$"$C$F!"(B
$B3HD%%i%$%V%i%j$N3+H/<T$N$?$a$K$=$3$K$*$$$F$"$k$N$H$O>/!90c$$$^$9!#(B
$B$=$7$F!"(BRuby $B$N(B encoding $B$^$o$j$r$$$8$k$?$a$K!"(B
rb_encoding $B$N<BBN$G$"$k(B OnigEncoding 
$B$r$$$8$i$l$F$b:$$j$^$9!#(B

$B$^$?JL$NNc$G$9$H!"(BRString 
$B9=B$BN$N%a%s%P$rD>@\$$$8$i$l$F$b:$$j$^$9!#(B
$B$3$l$r$$$8$k;~$O(B RSTRING_PTR $B$d(B RSTRING_LEN 
$BEy$N%^%/%m$r;H$&$b$N$G$"$C$F!"(B
RSTRING(str)->as.heap.len $BEy$OHs8x3+$@$H9M$($k$Y$-$G$7$g$&!#(B


$B$D$^$k$H$3$m!"8x3+(B C API 
$B$N%j%9%H$H$$$&$+%I%-%e%a%s%H$H$$$&$+$,I,MW$H$$$&$+!"(B
README.EXT 
$B$,$=$l$J5$$,$9$k$N$G!"3HD%%i%$%V%i%j$r:n$kJ}$O$=$N$h$&$K$4N10U$/$@$5$$!#(B
Posted by SASADA Koichi (Guest)
on 03.09.2008 10:03
(Received via mailing list)
$B!!$5$5$@$G$9!%(B

NARUSE, Yui wrote:
> $B%3%_%C%?B&$K8~$1$F$N;vA0AjCL5AL3$O$h$$$H;W$&$N$G$9$,!"(B
> $B8x3+(B C API $B$H@k8@$7$F$7$^$&$N$OHyL/$+$b$7$l$^$;$s!#(B

$B!!K\O@$H$O4X78$J$$$N$G$9$,!$(Binclude/ruby/node.h 
$B$C$F8x3+$7$?$^$^$K$7(B
$B$^$9!)!!(Bnodedump 
$B$H$+:n$k?M$K$O87$7$$$+$b$7$l$^$;$s$,!$!V8e$GFbIt>u(B
$BBV$rJQ99$9$k$+$b!W$H8@$C$F$$$k0J>e!$L5$/$7$F$7$^$C$?$[$&$,$$$$$N$G$O(B
$B$J$$$G$7$g$&$+!%(B

# include/ruby/signal.h $B$O!$L50UL#$J%3!<%I$7$+$J$+$C$?$N$G(B
# $B>C$7$^$7$?!%(B
Posted by SASADA Koichi (Guest)
on 03.09.2008 10:04
(Received via mailing list)
$B!!$5$5$@$G$9!%(B

Tadashi Saito wrote:
> $B$H$$$&!V(Bdbl$B!W$NA0Nc$O$?$/$5$s$"$k$N$K!"$I$&$7$F(B
> 
> DOUBLE2NUM
> 
> $B$@$1!V(Bdouble$B!W$J$N$G$7$g$&$+!#(B1.9$B$+$iF~$C$?%^%/%m$N$h$&$G$9$,!"FCJL$JM}M3$,$J$$8B$j(B
> $BB7$($F$"$C$?J}$,!"N`?d$,8z$$$F%W%m%0%i%`$,=q$-$d$9$$$G$9!#(B

$B!!$?$7$+!$;d$,F~$l$?$h$&$J5$$,$7$^$9$,!$(Bdouble 
$B;H$&%W%m%0%i%`$J$s$F(B
$B=q$$$F$3$H$,$J$+$C$?$s$G!$$3$s$J$U$&$K$7$?$s$@$H;W$$$^$9!%$H$/$K0U8+(B
$B$O$"$j$^$;$s!%$^$D$b$H$5$s$N$4H=CG$K$*G$$;!%(B
Posted by Tadashi Saito (Guest)
on 03.09.2008 14:33
(Received via mailing list)
$B:XF#$H?=$7$^$9!#(B

$B$^$:$O0l3HD%%i%$%V%i%j$N:n<T$H$7$F!VCf?H$r4]=P$7$K$7$J$$$G%$%s%?!<%U%'!<%9$r(B
$B$O$C$-$j$5$;$k!W$H$$$&J}8~@-$K;?@.$G$"$k!"$H$$$&$3$H$r8@$C$F$*$-$?$$$G$9!#(B

On Tue, 2 Sep 2008 22:06:55 +0900
"NARUSE, Yui" <naruse@airemix.jp> wrote:

> $B@.@%$G$9!#(B
> 
> Yugui (Yuki Sonoda) wrote:
> >  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
> >    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> > $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
> >    * $B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B
> 
> $B%3%_%C%?B&$K8~$1$F$N;vA0AjCL5AL3$O$h$$$H;W$&$N$G$9$,!"(B
> $B8x3+(B C API $B$H@k8@$7$F$7$^$&$N$OHyL/$+$b$7$l$^$;$s!#(B

$B$=$&$G$7$g$&$+!#<+J,$O!V(Binclude/ruby$B0J2<$O8x3+!W$H$$$&$N$,J,$+$j$d$9$/!"(B
$BK>$^$7$$;Q$G$"$k$H46$8$^$9!#(B

> $BNc$($P(B oniguruma.h $B$O(B encoding.h $B$,0MB8$7$F$$$k$?$a$K$=$3$K$"$k$N$G$"$C$F!"(B
(snip)

$B$3$A$i$O$h$/J,$+$C$F$J$$$N$G$9$,!"(B

> $B$^$?JL$NNc$G$9$H!"(BRString $B9=B$BN$N%a%s%P$rD>@\$$$8$i$l$F$b:$$j$^$9!#(B
> $B$3$l$r$$$8$k;~$O(B RSTRING_PTR $B$d(B RSTRING_LEN $BEy$N%^%/%m$r;H$&$b$N$G$"$C$F!"(B
> RSTRING(str)->as.heap.len $BEy$OHs8x3+$@$H9M$($k$Y$-$G$7$g$&!#(B

$B$J$i$P!"Hs8x3+>pJs$rJ];}$7$F$$$k(BRString$B<+BN$rHs8x3+$K$9$k$N$,6Z$G$O$J$$$G$7$g$&$+!#(B
$B$^$@$^$@Hs8x3+$K$9$Y$-!&$G$-$kItJ,$,$"$j$^$9$,!"$H$j$"$($:;n:n$7$?%Q%C%A$rKvHx$K(B
$BIU$1$^$9!#(B
# $B$=$&$$$&$*OC$G$O$J$$(B? > yugui$B$5$s(B

> $B$D$^$k$H$3$m!"8x3+(B C API $B$N%j%9%H$H$$$&$+%I%-%e%a%s%H$H$$$&$+$,I,MW$H$$$&$+!"(B
> README.EXT $B$,$=$l$J5$$,$9$k$N$G!"3HD%%i%$%V%i%j$r:n$kJ}$O$=$N$h$&$K$4N10U$/$@$5$$!#(B

$B3HD%%i%$%V%i%j$r0lEY$G$b:n$C$?$3$H$N$"$k?M4V$J$i$P!"(BREADME.EXT$B$,LVMeE*$J$b$N$G(B
$B$J$$$3$H$O!"2P$r8+$k$h$jL@$i$+$G$7$g$&!#(B

$B!V%$%s%9%H!<%k$5$l$?%X%C%@%U%!%$%k!a8x3+$5$l$?(BAPI$B!W$H$$$&$4$/Ev$?$jA0$N;v$,!"(BRuby
$B$G$b<B8=$5$l$k$3$H$rK>$_$^$9!#$=$&$9$l$P!"(BAPI$B$N%j%9%H$O%X%C%@%U%!%$%k$r8+$l$P(B
$BJ,$+$j$^$9!#J8;zDL$j!"%=!<%9$,%I%-%e%a%s%H$G$9!#(B


Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h  (revision 19086)
+++ include/ruby/ruby.h  (working copy)
@@ -573,32 +573,14 @@
 #define ELTS_SHARED FL_USER2

 #define RSTRING_EMBED_LEN_MAX ((sizeof(VALUE)*3)/sizeof(char)-1)
-struct RString {
-    struct RBasic basic;
-    union {
-  struct {
-      long len;
-      char *ptr;
-      union {
-    long capa;
-    VALUE shared;
-      } aux;
-  } heap;
-  char ary[RSTRING_EMBED_LEN_MAX + 1];
-    } as;
-};
 #define RSTRING_NOEMBED FL_USER1
 #define RSTRING_EMBED_LEN_MASK 
(FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6)
 #define RSTRING_EMBED_LEN_SHIFT (FL_USHIFT+2)
-#define RSTRING_LEN(str) \
-    (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \
-     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
-            (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : \
-     RSTRING(str)->as.heap.len)
-#define RSTRING_PTR(str) \
-    (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \
-     RSTRING(str)->as.ary : \
-     RSTRING(str)->as.heap.ptr)
+long RSTRING_LEN(VALUE str);
+char *RSTRING_PTR(VALUE str);
+/* for compatibility */
+#define RSTRING_LEN(str) RSTRING_LEN(str)
+#define RSTRING_PTR(str) RSTRING_PTR(str)
 #define RSTRING_END(str) (RSTRING_PTR(str)+RSTRING_LEN(str))

 struct RArray {
@@ -746,7 +728,6 @@
 #define RCLASS(obj)  (R_CAST(RClass)(obj))
 #define RMODULE(obj) RCLASS(obj)
 #define RFLOAT(obj)  (R_CAST(RFloat)(obj))
-#define RSTRING(obj) (R_CAST(RString)(obj))
 #define RREGEXP(obj) (R_CAST(RRegexp)(obj))
 #define RARRAY(obj)  (R_CAST(RArray)(obj))
 #define RHASH(obj)   (R_CAST(RHash)(obj))
Index: string.c
===================================================================
--- string.c  (revision 19086)
+++ string.c  (working copy)
@@ -14,6 +14,7 @@
 #include "ruby/ruby.h"
 #include "ruby/re.h"
 #include "ruby/encoding.h"
+#include "private.h"

 #define BEG(no) regs->beg[no]
 #define END(no) regs->end[no]
@@ -106,6 +107,23 @@
     }\
 } while (0)

+inline long
+RSTRING_LEN(VALUE str)
+{
+    return !(RBASIC(str)->flags & RSTRING_NOEMBED) ?
+        (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) &
+               (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) :
+        RSTRING(str)->as.heap.len;
+}
+
+inline char *
+RSTRING_PTR(VALUE str)
+{
+    return !(RBASIC(str)->flags & RSTRING_NOEMBED) ?
+        RSTRING(str)->as.ary :
+        RSTRING(str)->as.heap.ptr;
+}
+
 #define is_ascii_string(str) (rb_enc_str_coderange(str) == 
ENC_CODERANGE_7BIT)
 #define is_broken_string(str) (rb_enc_str_coderange(str) == 
ENC_CODERANGE_BROKEN)

Index: gc.c
===================================================================
--- gc.c  (revision 19086)
+++ gc.c  (working copy)
@@ -20,6 +20,7 @@
 #include "eval_intern.h"
 #include "vm_core.h"
 #include "gc.h"
+#include "private.h"
 #include <stdio.h>
 #include <setjmp.h>
 #include <sys/types.h>
Index: parse.y
===================================================================
--- parse.y  (revision 19086)
+++ parse.y  (working copy)
@@ -21,6 +21,7 @@
 #include "ruby/encoding.h"
 #include "id.h"
 #include "regenc.h"
+#include "private.h"
 #include <stdio.h>
 #include <errno.h>
 #include <ctype.h>
Posted by Yusuke ENDOH (Guest)
on 04.09.2008 12:55
(Received via mailing list)
$B1sF#$G$9!#(B

2008/09/03 21:27 Tadashi Saito <shiba@mail2.accsnet.ne.jp>:
>> $B$^$?JL$NNc$G$9$H!"(BRString $B9=B$BN$N%a%s%P$rD>@\$$$8$i$l$F$b:$$j$^$9!#(B
>> $B$3$l$r$$$8$k;~$O(B RSTRING_PTR $B$d(B RSTRING_LEN $BEy$N%^%/%m$r;H$&$b$N$G$"$C$F!"(B
>> RSTRING(str)->as.heap.len $BEy$OHs8x3+$@$H9M$($k$Y$-$G$7$g$&!#(B
>
> $B$J$i$P!"Hs8x3+>pJs$rJ];}$7$F$$$k(BRString$B<+BN$rHs8x3+$K$9$k$N$,6Z$G$O$J$$$G$7$g$&$+!#(B
> $B$^$@$^$@Hs8x3+$K$9$Y$-!&$G$-$kItJ,$,$"$j$^$9$,!"$H$j$"$($:;n:n$7$?%Q%C%A$rKvHx$K(B
> $BIU$1$^$9!#(B

private.h $B$,$J$+$C$?$N$G$9$,!"(Bstruct RString $B$H(B RSTRING
$B%^%/%m$NDj5A$@$1=q$$$?$b$N$G%3%s%Q%$%k$7$F$_$^$7$?!#(B
$B$d$O$j!"4X?t$K$9$k$H%*!<%P!<%X%C%I$,H/@8$9$k$h$&$G$9!#(B

# $B%Q%C%AA0(B
$ time ./ruby.org -rstringio -e
s = StringIO.new(" " * 100)
i = 0
while i < 100000000
  s.eof
  i += 1
end
'
real    0m15.430s
user    0m15.400s
sys     0m0.020s

# $B%Q%C%A8e(B
$ time ./ruby.new -rstringio -e '
s = StringIO.new(" " * 100)
i = 0
while i < 100000000
  s.eof
  i += 1
end
'
real    0m16.280s
user    0m16.260s
sys     0m0.010s

$B$3$l$@$1$J$iL5;k$G$-$k%l%Y%k$+$b$7$l$^$;$s$,!"B>$N9=B$BN$^$G(B
$BF1MM$K07$C$F$$$/$H!"L5;k$G$-$J$$%l%Y%k$K$J$k$+$b$7$l$^$;$s!#(B


>> $B$D$^$k$H$3$m!"8x3+(B C API $B$N%j%9%H$H$$$&$+%I%-%e%a%s%H$H$$$&$+$,I,MW$H$$$&$+!"(B
>> README.EXT $B$,$=$l$J5$$,$9$k$N$G!"3HD%%i%$%V%i%j$r:n$kJ}$O$=$N$h$&$K$4N10U$/$@$5$$!#(B
>
> $B3HD%%i%$%V%i%j$r0lEY$G$b:n$C$?$3$H$N$"$k?M4V$J$i$P!"(BREADME.EXT$B$,LVMeE*$J$b$N$G(B
> $B$J$$$3$H$O!"2P$r8+$k$h$jL@$i$+$G$7$g$&!#(B

README.EXT $B$r@0M}!&A}6/$7$F$$$/$N$,@5$7$$J}8~@-$@$H;W$$$^$9!#(B
$B$=$N$?$a$K$b(B README.EXT $B$K=q$$$F$"$k$3$H$@$1$G$G$-$J$$$3$H$K(B
$B5$$,$D$$$??M$O!"$=$N$?$S$K(B ML $B$G(B API 
$B$N8x3+$rMW5a$r$9$k$N$,(B
$B$$$$$H;W$$$^$9!#(B


> $B!V%$%s%9%H!<%k$5$l$?%X%C%@%U%!%$%k!a8x3+$5$l$?(BAPI$B!W$H$$$&$4$/Ev$?$jA0$N;v$,!"(B

$B$=$l$C$FEv$?$jA0$J$s$G$7$g$&$+!#(B
$B8D?ME*$K$O!V(Bundocumented $B$J5!G=$r;H$C$?$i$I$&$J$C$F$bJ86g$,(B
$B8@$($J$$!W$H$$$&J}$,Ev$?$jA0$@$H;W$C$F$$$^$9!#(B
Posted by Yukihiro Matsumoto (Guest)
on 04.09.2008 14:06
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message "Re: [ruby-dev:36156] Re: [ANN] Ruby 1.9.1$B;EMME`7k(B"
    on Thu, 4 Sep 2008 19:47:43 +0900, "Yusuke ENDOH" <mame@tsg.ne.jp> 
writes:

|> $B!V%$%s%9%H!<%k$5$l$?%X%C%@%U%!%$%k!a8x3+$5$l$?(BAPI$B!W$H$$$&$4$/Ev$?$jA0$N;v$,!"(B
|
|$B$=$l$C$FEv$?$jA0$J$s$G$7$g$&$+!#(B
|$B8D?ME*$K$O!V(Bundocumented $B$J5!G=$r;H$C$?$i$I$&$J$C$F$bJ86g$,(B
|$B8@$($J$$!W$H$$$&J}$,Ev$?$jA0$@$H;W$C$F$$$^$9!#(B

$B8D?ME*$K$O1sF#$5$s$HF1MM$N463P$G$9!#$N$G!"%3%9%H$r$+$1$F$^$G(B
$B1#$90UL#$O$J$$$H;W$$$^$9!#(B
Posted by Tadashi Saito (Guest)
on 05.09.2008 13:40
(Received via mailing list)
$B:XF#$G$9!#(B

On Thu, 4 Sep 2008 19:47:43 +0900
"Yusuke ENDOH" <mame@tsg.ne.jp> wrote:

> private.h $B$,$J$+$C$?$N$G$9$,!"(Bstruct RString $B$H(B RSTRING
> $B%^%/%m$NDj5A$@$1=q$$$?$b$N$G%3%s%Q%$%k$7$F$_$^$7$?!#(B

$B$4$a$s$J$5$$!"IU$1K:$l$^$7$?!#$*$C$7$c$k$H$*$j$N$b$N$G$9!#(B

private.h:

#define RSTRING(obj) (R_CAST(RString)(obj))

struct RString {
    struct RBasic basic;
    union {
  struct {
      long len;
      char *ptr;
      union {
    long capa;
    VALUE shared;
      } aux;
  } heap;
  char ary[RSTRING_EMBED_LEN_MAX + 1];
    } as;
};

> $B$d$O$j!"4X?t$K$9$k$H%*!<%P!<%X%C%I$,H/@8$9$k$h$&$G$9!#(B

$B$"$l!":GE,2=%*%W%7%g%sIU$1$F$^$9$+(B? 
$B<j85$G(B-O2$B$rIU$1$k$H!"0J2<$N$h$&$K$J$j$^$7$?!#(B
$B?tCM$O!"(B5$B2sB,$C$F0lHVB.$+$C$?$b$N$G$9!#(B

# $B%Q%C%AA0(B

$ time ./ruby-trunk -rstringio -e '
s = StringIO.new(" " * 100)
i = 0
while i < 100000000
  s.eof
  i += 1
end'

real  0m15.810s
user  0m15.801s
sys  0m0.020s


# $B%Q%C%A8e(B

$ time ./ruby-trunk -rstringio -e '
s = StringIO.new(" " * 100)
i = 0
while i < 100000000
  s.eof
  i += 1
end'

real  0m15.781s
user  0m15.777s
sys  0m0.008s

$B$H$$$&$3$H$G!"%$%s%i%$%s4X?tHG$NJ}$,$J$<$+B.$/$J$C$F$7$^$$$^$7$?!#(B
$B<+J,$K$OM}M3$O$h$/J,$+$j$^$;$s$,!"$H$K$+$/1F6A$,(B($B>/$J$/$H$b<+J,$N4D6-$G$O(B)$B8m:9HO0OFb$K(B
$B$H$I$^$k!"$H$@$1$O8@$($=$&$G$9!#(B

> > $B3HD%%i%$%V%i%j$r0lEY$G$b:n$C$?$3$H$N$"$k?M4V$J$i$P!"(BREADME.EXT$B$,LVMeE*$J$b$N$G(B
> > $B$J$$$3$H$O!"2P$r8+$k$h$jL@$i$+$G$7$g$&!#(B
> 
> README.EXT $B$r@0M}!&A}6/$7$F$$$/$N$,@5$7$$J}8~@-$@$H;W$$$^$9!#(B

$B<+J,$O(BREADME.EXT$B$O%A%e!<%H%j%"%k$K=`$:$k$b$N$G!"$9$Y$F$N(BAPI$B$r2r@b$9$k$H$$$&<q;]$,(B
$B85$+$i$J$$$N$@$H;W$C$F$^$7$?!#(B

$B$G$A$g$C$HJL$NOC$G$9$,!"8=>u$NOC$G$9$H(B

$B!V(BREADME.EXT$B$K5-:\$5$l$F$$$k$b$N$,8x3+(BAPI$B$G$"$k!W(B
$B"*!V:#$O40A4$G$O$J$$!W(B 
($B30It%7%s%\%k$K$J$C$F$$$F$b5-:\$5$l$F$$$J$$$b$N$,$?$/$5$s(B)
$B"*!V:#$O8x3+(BAPI$B$,$I$l$@$+$h$/J,$+$i$J$$!W(B
$B"*!V;EMM$r(Bfreeze$B$9$kBP>](B(API)$B$,$h$/J,$+$C$F$J$$$N$G!":#$O(Bfreeze$B$7$h$&$,$J$$!W(B
$B"*(B $B!V"-(B

On Tue, 2 Sep 2008 15:23:30 +0900
"Yugui (Yuki Sonoda)" <yugui@yugui.jp> wrote:

>  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
>    * $B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B

 $B$H$$$&@k8@$O$=$b$=$b0UL#$r@.$5$J$$!W(B

$B$H$J$k!"$H$$$&$3$H$G$h$m$7$$$N$G$7$g$&$+!#(B

> $B$=$N$?$a$K$b(B README.EXT $B$K=q$$$F$"$k$3$H$@$1$G$G$-$J$$$3$H$K(B
> $B5$$,$D$$$??M$O!"$=$N$?$S$K(B ML $B$G(B API $B$N8x3+$rMW5a$r$9$k$N$,(B
> $B$$$$$H;W$$$^$9!#(B

$B$3$l$O$^$?$=$N$&$A!"<+J,$,7P83$7$?$b$N$rJL%a!<%k$G=P$7$F$_$^$9!#(B

> > $B!V%$%s%9%H!<%k$5$l$?%X%C%@%U%!%$%k!a8x3+$5$l$?(BAPI$B!W$H$$$&$4$/Ev$?$jA0$N;v$,!"(B
> 
> $B$=$l$C$FEv$?$jA0$J$s$G$7$g$&$+!#(B

$B$^$D$b$H$5$s$b0c$&$H$*$C$7$c$C$F$k$"$?$j!"$3$3$O<+J,$N8+<1$,69$+$C$?$@$1$J$s$@$H(B
$B;W$$$^$9!#$9$_$^$;$s!#(B

> $B8D?ME*$K$O!V(Bundocumented $B$J5!G=$r;H$C$?$i$I$&$J$C$F$bJ86g$,(B
> $B8@$($J$$!W$H$$$&J}$,Ev$?$jA0$@$H;W$C$F$$$^$9!#(B

$B<+J,$b$=$l$,Ev$?$jA0$G$"$C$FM_$7$$$H;W$$$^$9!#$7$+$78=>u$N(BRuby$B$K$9$0$=$l$rMW5a$9$k$N$O(B
$BFq$7$$$H$b;W$$$^$9!#(B

$B$H$$$&$+!"%j%j!<%9%^%M!<%8%c$G$"$k(Byugui$B$5$s$,!"$I$N$h$&$J0U?^$r;}$C$F(B

>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B

$B$H$*$C$7$c$C$?$+$,5$$K$J$j$^$9!#<+J,$O!"%G!<%?9=B$$r1#JC$9$Y$-$@!"$H$$$&<gD%$KFI$a$?(B
$B$N$G$9$,(B($B$=$l$H$b!"%*%V%8%'%/%HKd$a9~$_$N;EMM$H$+$^$G(BAPI$B$H@k8@$7$?$+$C$?(B?)$B!#(B
Posted by U.Nakamura (Guest)
on 05.09.2008 14:58
(Received via mailing list)
$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B

In message "[ruby-dev:36166] Re: [ANN] Ruby 1.9.1$B;EMME`7k(B"
    on Sep.05,2008 20:02:15, <shiba@mail2.accsnet.ne.jp> wrote:
> $B<+J,$O(BREADME.EXT$B$O%A%e!<%H%j%"%k$K=`$:$k$b$N$G!"$9$Y$F$N(BAPI$B$r2r@b$9$k$H$$$&<q;]$,(B
> $B85$+$i$J$$$N$@$H;W$C$F$^$7$?!#(B

README.EXT$B$,%A%e!<%H%j%"%k$K=`$:$kDxEY$NFbMF$K2a$.$J$$$N$OC1(B
$B$K%^%s%Q%o!<$NLdBj$G$"$j!"K\Mh$O;H$C$F$h$$(BAPI$B$OA4$F2r@b$5$l$k(B
$B$Y$-$@$H;W$$$^$9!#(B
# $B$,!"$=$l$rE:IU$N%F%-%9%H%U%!%$%k$K=q$$$F$$$/$^$^$G$$$$$N$+(B
# $B$I$&$+$O0l9M$NM>CO$"$j!#(B


> 
> >  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
> >    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
> > $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
> >    * $B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B
> 
>  $B$H$$$&@k8@$O$=$b$=$b0UL#$r@.$5$J$$!W(B
> 
> $B$H$J$k!"$H$$$&$3$H$G$h$m$7$$$N$G$7$g$&$+!#(B

* 
9$B7n(B25$BF|0J9_!"(B1.9$B7ONsFb$G$O8x3+(BAPI$B$NJQ99$OG'$a$J$$!#(B
* 
$B8x3+(BAPI$B$NDj5A$O8=;~E@$G$OB8:_$7$J$$$N$G!"(Binclude/ruby$B0J2<$K(B
  $BB8:_$9$k$b$N$OA4$F8x3+$5$l$F$$$k$b$N$H4GPv$7$F>e=R$N@)8B$r(B
  $B2]$9!#(B
* $B8N$K!"JQ99$7$?$$$b$N$O:#$N$&$A$KJQ99$9$k$+1#JC$9$k$+$;$h!#(B

$B$H$$$&$N$,@k8@$N<q;]$@$H;W$$$^$9!#(B
$B<B:]$K%$%s%9%H!<%k$5$l$A$c$&0J>e$O(B($B;H$C$FM_$7$/$J$$$+$I$&$+$K(B
$B4X$o$i$:(B)$B;H$o$l$A$c$&2DG=@-$,$"$k$o$1$G!"0BDjHG7ONsFb$G$N:#8e(B
$B$NJQ99$rG'$a$J$$$N$OEvA3$G$9$7!"$=$N$3$H$K5$$E$$$F$J$$?M$KE`(B
$B7kA0$KCm0U4-5/$rB%$9$N$b$^$?EvA3$N$3$H$G$7$g$&!#(B

$B$H$$$&$o$1$G!":#2s$N@k8@$H!"(Binclude/ruby$B$K$"$k$+$i%P%s%P%s;H(B
$B$C$F$$$$$+$I$&$+!"$H$$$&$N$O$^$?JLLdBj!"$H$$$&M}2r$,@5$7$$$N(B
$B$G$O$J$$$G$7$g$&$+!#(B


$B$J$*!":#$NOC$HA4A34X78$J$/!">/$J$/$H$b(BRString$B$*$h$S(BRArray$B$O8x(B
$B3+(BAPI$B$G$"$k$H;d$OM}2r$7$F$$$^$9!#(B
$B$H$$$&$N$O!"(BREADME.EXE.ja$B$K(B

  $B9=B$BN$O!V(Bstruct 
RXxxxx$B!W$H$$$&L>A0$G(Bruby.h$B$GDj5A$5$l$F$$$^(B
  $B$9!%Nc$($PJ8;zNs$O!V(Bstruct 
RString$B!W$G$9!%<B:]$K;H$&2DG=@-$,(B
  $B$"$k$N$OJ8;zNs$HG[Ns$/$i$$$@$H;W$$$^$9!%(B

$B$H=q$$$F$"$k$?$a$G$9!#(B
$B$^$?0lJ}$G!"(B

  Ruby$B$N9=B$BN$rD>@\%"%/%;%9$9$k;~$K5$$r$D$1$J$1$l$P$J$i$J$$$3(B
  $B$H$O!$G[Ns$dJ8;zNs$N9=B$BN$NCf?H$O;2>H$9$k$@$1$G!$D>@\JQ99$7(B
  $B$J$$$3$H$G$9!%D>@\JQ99$7$?>l9g!$%*%V%8%'%/%H$NFbMF$N@09g@-$,(B
  $B$H$l$J$/$J$C$F!$;W$o$L%P%0$N860x$K$J$j$^$9!%(B

$B$H$b$"$k$h$&$K!"(Binclude/ruby$B$K$"$k$1$I;H$$J}$KCm0U4-5/$,I,MW(B
$B$J$b$N$K$D$$$F$O!"$=$s$J46$8$G$=$l$>$l@bL@$5$l$kI,MW$,$"$k$H(B
$B$b;W$$$^$9!#(B
$BNc$($P!"(B

  include/ruby/onigiruma.h
    ruby$B$,FbIt$G;HMQ$7$F$$$k@55,I=8=%(%s%8%s!V54<V!W$N%X%C%@!#(B
    $B%f!<%6$,$3$N%X%C%@$rMxMQ$7$FD>@\(Bruby$B%*%V%8%'%/%H$NFbIt$r(B
    $BA`:n$9$k$3$H$O$G$-$J$$!#(B

$B$H$+(B($B$3$l$,@5$7$$$N$+$I$&$+$OCN$j$^$;$s$,(B)$B!#(B


$B$=$l$G$O!#(B
Posted by Yugui (Yuki Sonoda) (Guest)
on 07.09.2008 15:24
(Received via mailing list)
Yugui$B$G$9!#(B

> $B$H$$$&$+!"%j%j!<%9%^%M!<%8%c$G$"$k(Byugui$B$5$s$,!"$I$N$h$&$J0U?^$r;}$C$F(B
>
>>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
>> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
>
> $B$H$*$C$7$c$C$?$+$,5$$K$J$j$^$9!#<+J,$O!"%G!<%?9=B$$r1#JC$9$Y$-$@!"$H$$(B
$B$&<gD%$KFI$a$?(B
> $B$N$G$9$,(B($B$=$l$H$b!"%*%V%8%'%/%HKd$a9~$_$N;EMM$H$+$^$G(BAPI$B$H@k8@$7$?$+$C(B
$B$?(B?)$B!#(B
>

$B$&!<$s!"$"$o$h$/$P%G!<%?9=B$$r1#$7$F$7$^$$$?$$$H$$$&;W$$$O$+$9$+$K$"$C$?(B
$B$N$G$9$,!"$d$O$j%3%9%H$,3]$+$j$=$&$G$9$M!#(B

$B:GDc8B$N%i%$%s$H$$$&0UL#$G8@$($P!"(B
 * rb_xxx$B4X?t$N%W%m%H%?%$%W$rJQ99$9$k$J(B
 * 
$B8x3+$r0U?^$7$F$$$k%^%/%m$+$i%"%/%;%9$9$k9=B$BN%a%s%P!<$N%*%U%;%C%H$r(B
$BJQ99$9$k$J(B

$B$G$9$+$M!#(B
$B$J$+$`$i(B($B$&(B)$B$5$s$K!V%3%s%Q%$%i$,<j85$K$"$k$H$O8B$i$J$$$N$G3HD%%i%$%V%i%j(B
$B8~$1$N%P%$%J%j8_49@-$O=EMW!W$H8@$o$l$F$=$j$cL`$b$@$H;W$C$?$N$,H/C<$G$9$N$G!#(B

> On Tue, 2 Sep 2008 15:23:30 +0900
> "Yugui (Yuki Sonoda)" <yugui@yugui.jp> wrote:
> 
>>  * C$B%l%Y%k$N(BAPI$B$O(Bruby-core/ruby-dev$B$G$N;vA0AjCL$J$7$KJQ99IT2D(B
>>    * include/ruby/*.h$B$K$"$k$9$Y$F$N9=B$BN!"%G!<%?7?!"JQ?t!"4X?t!"%^%/%m(B
>> $B$O(BC$B%l%Y%k(BAPI$B$H8+$J$7$^$9!#(B
>>    * $B8x3+$7$?$/$J$$$b$N$O(Binclude/ruby/*.h$B$+$i0\F0$5$;$F$/$@$5$$!#(B

$B$7$F$_$k$H!"$3$l$O$A$g$C$HMpK=$9$.$?$+$b$7$l$J$$$N$G$9$1$l$I$b!#(B
$B2~$a$F!"(B

* AST$B$OHs8x3+$J$N$G$7$g(B?  node.h$B$r0\F0$5$;$F$bNI$$$G$9$+(B?

* include/ruby/*.h$B$r8+D>$7$F$/$@$5$$!#(B
  * 
$B9=B$BN(B($B;D$k$O(BRArray$B$+$J(B?)$B$X$NKd$a9~$_$O:#$N$&$A$K$d$C$F$7$^$&$+!"$^(B
$B$?$O(B2.0$B$^$G1d$P$93P8g$r$7$F$/$@$5$$!#(B
  * 
$B1*oh$K;H$o$l$=$&$JL>A0$N4X?t$,$"$C$?$i!"0\F0$5$;$k$+2~L>$9$k$+!"$^$?(B
$B$O(BREADME.EXT$B$K;H$&$J$H=q$$$F$/$@$5$$!#(B
  * $B8x3+$;$:$K:Q$^$;$i$l$k$b$N$O6KNO0\F0$9$k$h$&$K$7$F$/$@$5$$!#(B

$B$H$$$&$3$H$G$h$m$7$/$*4j$$$7$^$9!#(B
Posted by Tadashi Saito (Guest)
on 16.09.2008 11:48
(Received via mailing list)
$B:XF#$H?=$7$^$9!#(B

On Fri, 5 Sep 2008 21:52:13 +0900
"U.Nakamura" <usa@garbagecollect.jp> wrote:

> README.EXT$B$,%A%e!<%H%j%"%k$K=`$:$kDxEY$NFbMF$K2a$.$J$$$N$OC1(B
> $B$K%^%s%Q%o!<$NLdBj$G$"$j!"K\Mh$O;H$C$F$h$$(BAPI$B$OA4$F2r@b$5$l$k(B
> $B$Y$-$@$H;W$$$^$9!#(B
> # $B$,!"$=$l$rE:IU$N%F%-%9%H%U%!%$%k$K=q$$$F$$$/$^$^$G$$$$$N$+(B
> # $B$I$&$+$O0l9M$NM>CO$"$j!#(B

$B%3%a%s%HFb30$H$b$K!"<+J,$b$=$&;W$$$^$9!#(B

> $B$H$$$&$o$1$G!":#2s$N@k8@$H!"(Binclude/ruby$B$K$"$k$+$i%P%s%P%s;H(B
> $B$C$F$$$$$+$I$&$+!"$H$$$&$N$O$^$?JLLdBj!"$H$$$&M}2r$,@5$7$$$N(B
> $B$G$O$J$$$G$7$g$&$+!#(B

$BA0!9$+$i5?Ld$J$N$G$9$,!"(Binclude/ruby$B$K$"$C$F%P%s%P%s;H$&$Y$-$G$J$$4X?t(B($BEy(B)$B$H(B
$B$$$&$N$O!"<B:]$I$l$G!"$=$l$i$O$I$&$$$&B8:_$J$N$G$7$g$&$+!#(B
$BJ#?t$N(B.c$B$G6&MQ$7$?$$$+$i!"<BAu$NET9g>e30It$K=P$F$$$k$,!"Bh;0<T$N%i%$%V%i%j$+$i(B
$B;H$o$l$k$3$H$rA[Dj$7$F$$$J$$!"$H$+$G$7$g$&$+!#(B

API$B$H$5$l$k4X?t$NF0:n$r2r@O$7$F%I%-%e%a%s%H$rIU$1$k$N$O!":n$C$?$4K\?M0J30$G$b$G$-$^$9$,!"(B
$B!V$3$l$O;H$o$J$$$GM_$7$$!W$H$$$&0U;V$O!"$5$9$,$KK\?M0J30$OC/$bJ,$+$i$J$$$H;W$$$^$9!#(B
$B$=$l$r;H$C$F3HD%%i%$%V%i%j$r=q$$$F$$$F!"!V$b$H$b$H;H$&$Y$-$G$J$+$C$?!W$H8@$o$l$F;EMM$,(B
$BJQ99$5$l$k!"$H$+$$$&;vBV$K$J$l$P!"$H$F$bHa$7$$$G$9!#(B

> $B$J$*!":#$NOC$HA4A34X78$J$/!">/$J$/$H$b(BRString$B$*$h$S(BRArray$B$O8x(B
> $B3+(BAPI$B$G$"$k$H;d$OM}2r$7$F$$$^$9!#(B
> $B$H$$$&$N$O!"(BREADME.EXE.ja$B$K(B
> 
>   $B9=B$BN$O!V(Bstruct RXxxxx$B!W$H$$$&L>A0$G(Bruby.h$B$GDj5A$5$l$F$$$^(B
>   $B$9!%Nc$($PJ8;zNs$O!V(Bstruct RString$B!W$G$9!%<B:]$K;H$&2DG=@-$,(B
>   $B$"$k$N$OJ8;zNs$HG[Ns$/$i$$$@$H;W$$$^$9!%(B
> 
> $B$H=q$$$F$"$k$?$a$G$9!#(B

$B<+J,$O!"$3$3$O(Bobsolete$B$J5-=R$G$"$k$H9M$($F$$$^$7$?!#$H$$$&$N$b!"(BRSTRING_XXX$B$H$$$&(B
$B%^%/%m$,B8:_$9$kA0$+$i>e5-J8=q$OB8:_$7!"$+$D$=$N;~Be$O9=B$BN$KD>@\?($k$7$+%a%s%P$K(B
$B%"%/%;%9$9$kJ}K!$,(B($BI,MW(B)$B$J$+$C$?$?$a$G$9!#(B

$B:#$O(BRSTRING_LEN$BEy$N%^%/%m$G$7$+!"(B($BKd$a9~$_!&HsKd$a9~$_%*%V%8%'%/%H$X(B)$B0l4S$7$?J}K!$G(B
$B%"%/%;%9$G$-$J$$$N$G!">/$J$/$H$b%^%/%m$,Ds6!$5$l$F$$$kItJ,$N%a%s%P$K4X$7$F$O!"(B
$BD>@\?($k$Y$-$G$J$$$H;W$C$F$$$^$9$,!"$I$&$G$7$g$&$+!#(B

> $BNc$($P!"(B
> 
>   include/ruby/onigiruma.h
>     ruby$B$,FbIt$G;HMQ$7$F$$$k@55,I=8=%(%s%8%s!V54<V!W$N%X%C%@!#(B
>     $B%f!<%6$,$3$N%X%C%@$rMxMQ$7$FD>@\(Bruby$B%*%V%8%'%/%H$NFbIt$r(B
>     $BA`:n$9$k$3$H$O$G$-$J$$!#(B
> 
> $B$H$+(B($B$3$l$,@5$7$$$N$+$I$&$+$OCN$j$^$;$s$,(B)$B!#(B

$B$3$s$J46$8$G$I$3$+$K5-=R$7$F$"$l$P$H$F$b$"$j$,$?$$$G$9!#(B
$B8=>u!"!V8x3+$7$F$"$k!W!V$J$$!W$@$1$N4p=`$G$7$+8+J,$1$k$3$H$,$G$-$:!"$I$l$r;H$C$F(B
$B0BA4$J$N$+$^$C$?$/J,$+$i$J$$$N$G!#(B