[#35333] [Ruby 1.8 - Bug #221] (Open) Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...>

チケット #221 が報告されました。 (by Anonymous)

31 messages 2008/07/03
[#35521] [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...> 2008/07/15

チケット #221 が更新されました。 (by Anonymous)

[#35522] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — とみたまさひろ <tommy@...> 2008/07/15

とみたです。

[#35527] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — とみたまさひろ <tommy@...> 2008/07/16

とみたです。

[#35537] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Urabe Shyouhei <shyouhei@...> 2008/07/16

卜部です。

[#35355] リリース前ToDoリスト — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

42 messages 2008/07/04
[#35365] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/04

なかだです。

[#35366] Re: リリース前ToDoリスト — Yukihiro Matsumoto <matz@...> 2008/07/04

まつもと ゆきひろです

[#35464] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/13

高尾宏治です。

[#35514] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/15

高尾宏治です。

[#35515] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/15

なかだです。

[#35519] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/15

高尾宏治です。

[#35523] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35528] Re: リリース前ToDoリスト — "Shugo Maeda" <shugo@...> 2008/07/16

前田です。

[#35531] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35532] Re: リリース前ToDoリスト — "Shugo Maeda" <shugo@...> 2008/07/16

前田です。

[#35534] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35551] [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/16

高尾宏治です。

[#35553] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — "Keita Yamaguchi" <keita.yamaguchi@...> 2008/07/16

山口と申します。

[#35556] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/17

高尾宏治です。

[#35588] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/19

高尾宏治です。

[#35592] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/19

高尾宏治です。

[#35629] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — "M.Suzuki" <macobasi@...> 2008/07/22

GyRCJDMkcyRLJEEkTyEjGyhCTS5TdXp1a2kbJEIkRyQ5ISMbKEINCg0KGyRCO24kNyRGJF8kXiQ3

[#35639] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/23

高尾宏治です。

[#35372] patch for ruby-core:17472 — wanabe <s.wanabe@...>

ワナベと申します。

16 messages 2008/07/05
[#35378] Re: patch for ruby-core:17472 — Nobuyoshi Nakada <nobu@...> 2008/07/06

なかだです。

[#35404] ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...>

前田です。

54 messages 2008/07/09
[#35405] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/09

卜部です。

[#35413] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/09

前田です。

[#35415] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/09

卜部です。

[#35418] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/10

前田です。

[#35425] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/10

Shugo Maeda さんは書きました:

[#35427] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "GOTO Kentaro" <gotoken@...> 2008/07/10

どこにぶら下げるのがいいのかわからないので、単に意思表明ですが、

[#35429] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/10

卜部です。

[#35440] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Akinori MUSHA" <knu@...> 2008/07/11

At Fri, 11 Jul 2008 01:00:29 +0900,

[#35442] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/11

前田です。

[#35451] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/12

そういえばこの部分に言及するのを忘れていた

[#35454] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/12

前田です。

[#35455] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/12

卜部です。

[#35456] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/13

前田です。

[#35462] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Tanaka Akira <akr@...> 2008/07/13

In article <704d5db90807121803o5ea67361ucbf968f8a18a845d@mail.gmail.com>,

[#35465] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/13

Tanaka Akira さんは書きました:

[#35474] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35457] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/13

卜部です。

[#35472] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35473] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/14

卜部です。

[#35475] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35420] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — Tanaka Akira <akr@...>

In article <200807100931.m6A9V4vi014459@ci.ruby-lang.org>,

11 messages 2008/07/10
[#35421] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — wanabe <s.wanabe@...> 2008/07/10

ワナベです。

[#35422] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — "U.Nakamura" <usa@...> 2008/07/10

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

[#35423] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — wanabe <s.wanabe@...> 2008/07/10

ワナベです。

[#35458] make profiler for gc — authorNari <authornari@...>

nariです。

21 messages 2008/07/13
[#35461] Re: make profiler for gc — Tanaka Akira <akr@...> 2008/07/13

In article <1153cee60807122239t19f6ae05vc0c1995c77349377@mail.gmail.com>,

[#35468] Re: make profiler for gc — authorNari <authornari@...> 2008/07/13

nariです。

[#35597] [request]C APIの拡張 — "Goro Fuji" <g.psy.va@...>

藤と申します。

15 messages 2008/07/20

[#35620] non-locale filename encoding — Tanaka Akira <akr@...>

Dir の使いかたとして、ファイル名のエンコーディングが locale

18 messages 2008/07/21
[#35634] Re: non-locale filename encoding — "NARUSE, Yui" <naruse@...> 2008/07/22

成瀬です。

[#35635] Re: non-locale filename encoding — Tanaka Akira <akr@...> 2008/07/23

In article <48866F3F.80906@airemix.jp>,

[#35642] Re: non-locale filename encoding — "NARUSE, Yui" <naruse@...> 2008/07/23

成瀬です。

[#35643] Re: non-locale filename encoding — Tanaka Akira <akr@...> 2008/07/23

In article <488771FD.4020800@airemix.jp>,

[#35649] PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...>

遠藤です。

14 messages 2008/07/24
[#35650] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — Tanaka Akira <akr@...> 2008/07/24

In article <e0b1e5700807240845o4c09cfa5gae142c1dd0c74170@mail.gmail.com>,

[#35651] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...> 2008/07/24

2008/07/25 1:02 Tanaka Akira <akr@fsij.org>:

[#35654] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "NARUSE, Yui" <naruse@...> 2008/07/24

成瀬です。

[#35686] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...> 2008/07/29

遠藤です。

[ruby-dev:35611] Re: [request]C APIの拡張

From: "Goro Fuji" <g.psy.va@...>
Date: 2008-07-21 03:23:42 UTC
List: ruby-dev #35611
ご意見ありがとうございます。

1. 動機

まず,背景となる動機の説明が不十分だったことをお詫びします。

もともと強く欲しいと思ったのはrb_str_catf()で,これはライブラリ側で簡易かつ効率よく実装するのが難しいため,今回の要望を出すに至りました。
もちろん,使用するのが私だけだとしたら独りよがりな要望です。そこでRubyのソースコードで/\bsn?printf/が使われている状況も調べました(以下の記述は2008年7月16日版に基づきます)。

1.1 rb_str_catf()の需要

たとえば,以下のようなコードがiseq.cにあります。

#line 747 iseq.c (ruby_iseq_disasm_insn())
    snprintf(buff, sizeof(buff), "%04d %-16s ", pos, insn_name_buff);
    rb_str_cat2(str, buff);

これはrb_str_catf()があれば以下のように記述できます(実際にはさらにbuffの宣言も削除できます)。

    rb_str_catf(str, "%04d %-16s ", pos, insn_name_buff);

この書き換えの結果,sizeof(buff)の妥当性の検証が不要になり,保守しやすくなると思われます。

同様のコードがiseq.cのruby_iseq_disasm()の843行目付近と885行目付近,process.cのps_message(),file.cのrb_stat_inspec()などにみられます。拡張ライブラリについては詳しく調べていませんが,bigdecimalなどでsprintf()を多用しているようです。

このことから,catf()についてはそれなりの需要があるのではないかと考えました。

1.2 rb_str_newf()の需要

また,この調査の結果,catf()の用途以外でもs(n)printf()が多用されていることに気付きました。たとえば,error.cのrb_name_error()において以下の記述があります。

#line 624 error.c
    char buf[BUFSIZ];

    va_start(args, fmt);
    vsnprintf(buf, BUFSIZ, fmt, args);
    va_end(args);

    argv[0] = rb_str_new2(buf);

これはrb_sprintf()で記述でき,またその方がBUFSIZという妥当性の検証が難しい定数を使わずにすみます。このようなrb_sprintf()で書き換えた方がいいと思われるコードも多数あり,その際に使用されるバッファサイズもBUFSIZだけでなく0x100や1024,32など多彩です。また,snprintf()ではなくsprintf()を使っている箇所も多数あります。

それではなぜrb_sprintf()ではなく,s(n)printf()とrb_str_new2()を使っているのかということになります(ただし,私は今回の件で詳しく調べるまで恥ずかしながらrb_sprintf()の存在を知りませんでしたので,ここから先は完全に推測に基づきます)。その理由を考えてみました。

(1) README.EXT(.ja)に載っていないため
(2) 関数の実体がstring.cではなくsprintf.cにあるため
(3) 最終的な「Stringを作成する」という目的から,rb_str_newファミリを呼び出すこと前提で思考を組み立てるため
(4) 「Cモード」で思考しているときは,rb_sprintf()に対してCのsprintf()のイメージが干渉し,rb_sprintf()が候補に挙がるのを邪魔しているため

今回,catf()に加えてnewf()の要望を出したのは,(3)と(4)を解消するためです。rb_sprintf()の記述をREADME.EXTに加えることで(1)を解消できるからそれで十分ではないかと思われるかもしれませんが,(1)だけではRuby本体のソースコード内にrb_sprintf()に簡単に書き換えられるコードが実際に多数存在する理由としては不十分だと考えました。そこで今回newf()の要望を出すに至りました。なお,繰り返しますがこれは推測でしかなく,これが正しいという強い確信はありません。また,newf()という名前ならば(3)と(4)の解決になるという確信があるわけでもありません。

また,今回の議論は,s(n)printf()はバッファサイズの妥当性を検証することが難しく,使用を避けた方が良いということを前提としていますが,私はこの点を強く感じすぎているかもしれません。

2. 返答

長くなってしまい申し訳ありませんが,ご意見に返答致します。

成瀬さん

> エンコードを意識した文字列処理の C API 名は、rb_enc_str_* かと思います。

おっしゃるとおり,rb_enc_str_*が正しいと思います。認識不足をお詫びします。

> rb_encoding に NULL を渡すのはいかがなものかと。

これについてはnewf()はrb_sprintf()の別名であり,rb_sprintf()の記述をそのまま利用しただけなのでそのようになりました。

その他のご意見については<1. 動機>で返答になったと思います。

なかださん

* version.h

分かりました。1.8では提供されていたので特に疑問を持たず要望してしまいましたが,RUBY_VERSION_*を直接調べるのは非奨励という理解でよろしいでしょうか。

* フォーマット系

> newf系は既存のrb_sprintf, rb_vsprintf, rb_enc_sprintf,
> rb_enc_vsprintfとまったく同じですよね。「不便」を解消することに
> はならないのではと思いますが。

はい,まったく同じです。これについては不便を解消するためではなく,<1.2
rb_str_newf()の需要>に示したように,rb_sprintf()が使われないケースが多数あるという現実をふまえて,rb_str_newファミリの一つとして提供されたほうが使われやすいのではないかという推測に基づきます。ですが,これは単に推測でしかなく,この考えが正しいのかどうかを検証することもできません。よって強い要望ではありません。

>意図はまぁ理解できるのですが、部分的に連結しながらsprintfするこ
>とってどのくらい多いんでしょう。

<1.1 rb_str_catf()の需要>に示したように,いくつかはあるようです。ただ,それが「多い」といえるかどうかは分かりません。

> fだけでprintfを想起しろ、というのはいささか苦しいのでは。

print()とprintf()の違いがfだけなのでそれで十分かと思ってしまいました。名前については特にこだわりはありません。Rubyの慣習に従うならば,rb_str_new6()ということになるでしょうか。



長くなりましたが,以上です。よろしくお願いします。

---
Goro Fuji (藤 吾郎)

In This Thread