[#26975] [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

56 messages 2005/09/07
[#26976] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/07

まつもと ゆきひろです

[#26977] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/07

山本です。

[#26978] Re: [proposal] ANSI style function — nobu@... 2005/09/07

なかだです。

[#26979] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/07

山本です。

[#26980] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/07

まつもと ゆきひろです

[#26983] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/08

山本です。

[#26988] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/08

山本です。

[#26989] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/08

山本です。

[#26990] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/08

まつもと ゆきひろです

[#26991] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/08

山本です。

[#26995] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/09

山本です。

[#26996] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/09

まつもと ゆきひろです

[#26998] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/09

山本です。

[#27000] Re: [proposal] ANSI style function — Takahiro Kambe <taca@...> 2005/09/09

In message <20050909220539.E1B26BB8.ocean@m2.ccsnet.ne.jp>

[#27001] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27002] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27003] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/10

まつもと ゆきひろです

[#27004] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27005] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27006] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/10

まつもと ゆきひろです

[#27007] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27008] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/10

まつもと ゆきひろです

[#27009] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27011] Re: [proposal] ANSI style function — Yukihiro Matsumoto <matz@...> 2005/09/10

まつもと ゆきひろです

[#27013] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/10

山本です。

[#27016] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/11

山本です。

[#27015] Re: [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/11

山本です。

[#26984] elimination of "extern int errno;" — Takahiro Kambe <taca@...>

こんにちは。

48 messages 2005/09/08
[#27023] sizeof(FILE) problem on DragonFly BSD — Takahiro Kambe <taca@...> 2005/09/12

In message <20050908.120716.71112483.taca@back-street.net>

[#27024] Re: sizeof(FILE) problem on DragonFly BSD — Yukihiro Matsumoto <matz@...> 2005/09/12

まつもと ゆきひろです

[#27025] Re: sizeof(FILE) problem on DragonFly BSD — Takahiro Kambe <taca@...> 2005/09/12

In message <1126489480.743964.31599.nullmailer@x31.priv.netlab.jp>

[#27027] Re: sizeof(FILE) problem on DragonFly BSD — Takahiro Kambe <taca@...> 2005/09/12

In message <20050912.104954.92585084.taca@back-street.net>

[#27029] Re: sizeof(FILE) problem on DragonFly BSD — Yukihiro Matsumoto <matz@...> 2005/09/12

まつもと ゆきひろです

[#27035] Re: sizeof(FILE) problem on DragonFly BSD — "U.Nakamura" <usa@...> 2005/09/12

こんにちは、なかむら(う)です。

[#27036] Re: sizeof(FILE) problem on DragonFly BSD — Yukihiro Matsumoto <matz@...> 2005/09/12

まつもと ゆきひろです

[#27079] ruby-1.8.3 status for release (Re: Re: sizeof(FILE) problem on DragonFly BSD) — Masayoshi Takahashi <maki@...> 2005/09/15

高橋征義です。

[#27081] Re: ruby-1.8.3 status for release (Re: Re: sizeof(FILE) problem on DragonFly BSD) — Yukihiro Matsumoto <matz@...> 2005/09/15

まつもと ゆきひろです

[#27082] Re: ruby-1.8.3 status for release — Masayoshi Takahashi <maki@...> 2005/09/15

高橋征義です。

[#27083] Re: ruby-1.8.3 status for release — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/15

山本です。

[#27099] Re: ruby-1.8.3 status for release — Hidetoshi NAGAI <nagai@...> 2005/09/15

永井@知能.九工大です.

[#27531] ruby/tk installation without tcl/tk (for 1.8.4) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/10/26

山本です。

[#27619] Re: ruby/tk installation without tcl/tk (for 1.8.4) — Hidetoshi NAGAI <nagai@...> 2005/11/02

永井@知能.九工大です.

[#27139] ruby-1.8.3 status for release — Masayoshi Takahashi <maki@...>

高橋征義です。

66 messages 2005/09/18
[#27193] Re: ruby-1.8.3 status for release — TAKAHASHI Masayoshi <maki@...> 2005/09/20

高橋征義です。

[#27251] 脆弱性レポート翻訳者募集 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

13 messages 2005/09/21

[#27321] RubyGemsとOS platformとの関係 — Daigo Moriwaki <techml@...>

こんにちは、森脇です。

42 messages 2005/09/26
[#27327] Re: RubyGemsとOS platformとの関係 — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/09/27

なかだです。

[#27330] Re: RubyGemsとOS platformとの関係 — Yukihiro Matsumoto <matz@...> 2005/09/27

まつもと ゆきひろです

[#27337] Re: RubyGems と OS platform との関係 — NISHIO Mizuho <jurader@...> 2005/09/27

西尾瑞穂 と言います。

[#27343] Re: RubyGems と OS platform との関係 — Yukihiro Matsumoto <matz@...> 2005/09/28

まつもと ゆきひろです

[#27347] Re: RubyGems と OS platform との関係 — Tanaka Akira <akr@...17n.org> 2005/09/28

In article <1127872084.608903.6359.nullmailer@x31.priv.netlab.jp>,

[#27348] Re: RubyGems と OS platform との関係 — Yukihiro Matsumoto <matz@...> 2005/09/28

まつもと ゆきひろです

[#27359] Re: RubyGems と OS platform との関係 — Daigo Moriwaki <techml@...> 2005/09/28

森脇です。

[#27364] Re: RubyGems と OS platform との関係 — akira yamada / やまだあきら <akira@...> 2005/09/30

Daigo Moriwaki wrote:

[#27365] Re: RubyGems と OS platform との関係 — Tanaka Akira <akr@...17n.org> 2005/09/30

In article <433CC31E.20802@ruby-lang.org>,

[#27367] Re: RubyGems と OS platform との関係 — akira yamada / やまだあきら <akira@...> 2005/09/30

Tanaka Akira wrote:

[#27369] Re: RubyGems と OS platform との関係 — Tanaka Akira <akr@...17n.org> 2005/10/01

In article <433D4CED.9030005@ruby-lang.org>,

[ruby-dev:26991] Re: [proposal] ANSI style function

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-09-08 09:24:13 UTC
List: ruby-dev #26991
山本です。

>|K&R の影響で型についてルーズなのですが、これをどうすべきでしょうか。
>|
>|  1. インターフェースは堅持する。(こういう部分は K&R に戻す)
>|
>|  2. rb_thread_create(VALUE (*fn) (void *), void *arg) にする
>|
>|  3. rb_thread_create(VALUE (*fn) (VALUE), VALUE arg) にする
>|
>|
>|1 は避けたいところですが・・・今まで見てきたソースでは 3 が多かったので
>|これに統一するのも良いと思います。(というか void *arg は eval.c で初めて見た)
>
>これだからANSIは...。3でいいんじゃないでしょうか。

すみません、型をあわせることしか考えてなかったのですが、後で「void * ということは
中で VALUE としてあつかってないんじゃないか?つまり GC で mark されていないとか」
とか、互換性の問題とかが気になりだしました。

  * インターフェースを変えると、拡張ライブラリの側でも対処が必要になると思う。
    HEAD だから仕様変更は許容できるとしても、1.8 にも同様の変更ができるだろうか。
    できない場合、同じ拡張ライブラリで HEAD と 1.8 の両方に対応できなくなる?

static 関数のインターフェースは如何様にも変えられると思うのですが、外部関数については
議論が必要そうです。私も単調作業で頭が煮詰まってますので、しばらく時間をおいて考えて
みたいと思います。

とりあえず、http://www.ccsnet.ne.jp/~ocean/ansi/001.zip のパッチに加えて、下のパッチで
bcc32 win32 のコンパイルが通るところまでは確認しました。しかし、構造体の

  struct hoge {
    int (*hoge) (ANYARGS); 
  };

といった定義はそのままなので、ANSI 化したとはいえません。

Index: dir.c
===================================================================
--- dir.c	(revision 3)
+++ dir.c	(working copy)
@@ -1337,12 +1337,11 @@
     VALUE arg;
 };
 
-static VALUE
+static void
 rb_glob_caller(const char *path, VALUE a)
 {
     struct rb_glob_args *args = (struct rb_glob_args *)a;
     (*args->func)(path, args->arg);
-    return Qnil;
 }
 
 void
@@ -1353,7 +1352,7 @@
 
     args.func = func;
     args.arg = arg;
-    status = rb_glob2(path, 0, rb_glob_caller, &args);
+    status = rb_glob2(path, 0, rb_glob_caller, (VALUE)&args);
 
     if (status) rb_jump_tag(status);
 }
Index: eval.c
===================================================================
--- eval.c	(revision 3)
+++ eval.c	(working copy)
@@ -6299,7 +6299,7 @@
 
 /* function to call func under the specified class/module context */
 static VALUE
-exec_under(VALUE (*func) (/* ??? */), VALUE under, VALUE cbase, void *args)
+exec_under(VALUE (*func) (VALUE), VALUE under, VALUE cbase, VALUE args)
 {
     VALUE val = Qnil;		/* OK */
     int state;
@@ -6333,8 +6333,10 @@
 }
 
 static VALUE
-eval_under_i(VALUE *args)
+eval_under_i(VALUE arg)
 {
+    VALUE *args = (VALUE *)arg;
+
     return eval(args[0], args[1], Qnil, (char*)args[2], (int)args[3]);
 }
 
@@ -6354,7 +6356,7 @@
     args[1] = src;
     args[2] = (VALUE)file;
     args[3] = (VALUE)line;
-    return exec_under(eval_under_i, under, under, args);
+    return exec_under(eval_under_i, under, under, (VALUE)args);
 }
 
 static VALUE
@@ -11585,7 +11587,7 @@
 }
 
 static VALUE
-rb_thread_start_0(VALUE (*fn) (/* ??? */), void *arg, rb_thread_t th)
+rb_thread_start_0(VALUE (*fn) (VALUE, rb_thread_t), VALUE arg, rb_thread_t th)
 {
     volatile rb_thread_t th_save = th;
     volatile VALUE thread = th->thread;
@@ -11754,7 +11756,7 @@
 rb_thread_create(VALUE (*fn) (/* ??? */), void *arg)
 {
     Init_stack((VALUE*)&arg);
-    return rb_thread_start_0(fn, arg, rb_thread_alloc(rb_cThread));
+    return rb_thread_start_0(fn, (VALUE)arg, rb_thread_alloc(rb_cThread));
 }
 
 static VALUE
Index: pack.c
===================================================================
--- pack.c	(revision 3)
+++ pack.c	(working copy)
@@ -135,7 +135,7 @@
 #else
 #if SIZEOF_LONG == 4	/* SIZEOF_DOUBLE == 8 && 4 == SIZEOF_LONG */
 static double
-swapd(const const double d)
+swapd(const double d)
 {
     double dtmp = d;
     unsigned long utmp[2];
Index: range.c
===================================================================
--- range.c	(revision 3)
+++ range.c	(working copy)
@@ -209,13 +209,15 @@
 }
 
 static VALUE
-str_step(VALUE *args)
+str_step(VALUE arg)
 {
+    VALUE *args = (VALUE *)arg;
+
     return rb_str_upto(args[0], args[1], EXCL(args[2]));
 }
 
 static void
-range_each_func(VALUE range, void (*func) (VALUE, void *), VALUE v, VALUE e, void *arg)
+range_each_func(VALUE range, VALUE (*func) (VALUE, void *), VALUE v, VALUE e, void *arg)
 {
     int c;
 
@@ -235,8 +237,10 @@
 }
 
 static VALUE
-step_i(VALUE i, long *iter)
+step_i(VALUE i, void *arg)
 {
+    long *iter = (long *)arg;
+
     iter[0]--;
     if (iter[0] == 0) {
 	rb_yield(i);
@@ -311,8 +315,7 @@
 	    b = tmp;
 	    args[0] = b; args[1] = e; args[2] = range;
 	    iter[0] = 1; iter[1] = unit;
-	    rb_iterate((VALUE(*)_((VALUE)))str_step, (VALUE)args, step_i,
-		       (VALUE)iter);
+	    rb_iterate(str_step, (VALUE)args, step_i, (VALUE)iter);
 	}
 	else if (rb_obj_is_kind_of(b, rb_cNumeric)) {
 	    ID c = rb_intern(EXCL(range) ? "<" : "<=");
@@ -338,10 +341,11 @@
     return range;
 }
 
-static void
+static VALUE
 each_i(VALUE v, void *arg)
 {
     rb_yield(v);
+    return Qnil;
 }
 
 /*
@@ -391,8 +395,7 @@
 
 	args[0] = beg; args[1] = end; args[2] = range;
 	iter[0] = 1; iter[1] = 1;
-	rb_iterate((VALUE(*)_((VALUE)))str_step, (VALUE)args, step_i,
-		   (VALUE)iter);
+	rb_iterate(str_step, (VALUE)args, step_i, (VALUE)iter);
     }
     else {
 	range_each_func(range, each_i, beg, end, NULL);


In This Thread