[#35333] [Ruby 1.8 - Bug #221] (Open) Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...>
チケット #221 が報告されました。 (by Anonymous)
チケット #221 が更新されました。 (by Masahiro Tomita)
チケット #221 が更新されました。 (by Anonymous)
とみたです。
とみたです。
卜部です。
西山和広です。
[#35355] リリース前ToDoリスト — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
高尾宏治です。
高尾宏治です。
なかだです。
高尾宏治です。
なかだです。
前田です。
なかだです。
前田です。
なかだです。
高尾宏治です。
山口と申します。
高尾宏治です。
高尾宏治です。
高尾宏治です。
GyRCJDMkcyRLJEEkTyEjGyhCTS5TdXp1a2kbJEIkRyQ5ISMbKEINCg0KGyRCO24kNyRGJF8kXiQ3
高尾宏治です。
高尾宏治です。
高尾宏治です。
GyRCJDMkcyRLJEEkTxsoQiBNLlN1enVraSAbJEIkRyQ5ISMbKEINCg0KTWFjIE9TWCAxMC40GyRC
高尾宏治です。
[#35372] patch for ruby-core:17472 — wanabe <s.wanabe@...>
ワナベと申します。
なかだです。
ワナベです。
遠藤です。
=1B$B$`$i$?$G$9!#=1B(B
豊福です。
[#35375] Re: [ruby-cvs:25121] Ruby:r17902 (ruby_1_8_6): * re.c (rb_reg_search): need to free allocated buffer in re_register. [ruby-core:17518] — Urabe Shyouhei <shyouhei@...>
卜部です。ruby_1_8_xの枝を弄る人全員にお願いです。チェックインする前に必
[#35389] Re: [ruby-cvs:25164] Ruby:r17945 (trunk, ruby_1_8): * string.c (rb_str_succ): limit carrying in an alphanumeric region if — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#35396] cc always picks ruby/ruby.h on OS X — "Akinori MUSHA" <knu@...>
ruby 1.8 の tk ライブラリが OS X 上でビルドできない件です。
[#35404] ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...>
前田です。
卜部です。
前田です。
卜部です。
前田です。
Shugo Maeda さんは書きました:
どこにぶら下げるのがいいのかわからないので、単に意思表明ですが、
卜部です。
At Fri, 11 Jul 2008 01:00:29 +0900,
前田です。
In article <704d5db90807110028o238594f2wda0ec1bf12abc940@mail.gmail.com>,
そういえばこの部分に言及するのを忘れていた
前田です。
卜部です。
前田です。
In article <704d5db90807121803o5ea67361ucbf968f8a18a845d@mail.gmail.com>,
Tanaka Akira さんは書きました:
前田です。
卜部です。
前田です。
卜部です。
前田です。
卜部です。
前田です。
こんにちは、なかむら(う)です。
卜部です。
[#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>,
ワナベです。
こんにちは、なかむら(う)です。
ワナベです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
In article <20080711050939.531D.C613B076@garbagecollect.jp>,
こんにちは、なかむら(う)です。
[#35446] [Bug:trunk] Thread#kill cannot break BLOCKING_REGION() on windows — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#35450] [BUG] cfp consistency error in Win32OLE — Masaki Suketa <masaki.suketa@...>
助田です。
ワナベと申します。
助田です。
[#35458] make profiler for gc — authorNari <authornari@...>
nariです。
In article <1153cee60807122239t19f6ae05vc0c1995c77349377@mail.gmail.com>,
nariです。
nariです。
三浦と申します。
[#35471] [Bug: 1.9] lazy timer thraed creation — SASADA Koichi <ko1@...>
ささだです.
[#35484] Re: [ruby-core:17739] [Ruby 1.9 - Bug #256] (Open) defined?(Gem::RubyGemsVersion) behaves strange — wanabe <s.wanabe@...>
ワナベと申します。
西山和広です。
斎藤と申します。
[#35542] [Bug:1.9] sleep and Thread#run — Tanaka Akira <akr@...>
1.9 では sleep で寝ているスレッドを Thread#run で起こせない
[#35545] Test::Unit -> miniunit — Kouhei Sutou <kou@...>
須藤です。
まつもと ゆきひろです
[#35555] [Ruby 1.9 - Bug #282] (Open) failure of test_asctime(TestTime) on mswin32 — Usaku NAKAMURA <redmine@...>
チケット #282 が報告されました。 (by Usaku NAKAMURA)
ワナベと申します。
[#35578] [Bug:1.9] context switch may occur during freeing io — "Yusuke ENDOH" <mame@...>
遠藤です。
[#35597] [request]C APIの拡張 — "Goro Fuji" <g.psy.va@...>
藤と申します。
なかだです。
ご意見ありがとうございます。
なかだです。
卜部さん
卜部です。
[#35620] non-locale filename encoding — Tanaka Akira <akr@...>
Dir の使いかたとして、ファイル名のエンコーディングが locale
成瀬です。
In article <48866F3F.80906@airemix.jp>,
成瀬です。
In article <488771FD.4020800@airemix.jp>,
Tanaka Akira wrote:
In article <4888B29D.7030009@airemix.jp>,
成瀬です。
In article <488AC157.7090203@airemix.jp>,
[#35646] [Bug:1.9] Rinda has a race condition — "Yusuke ENDOH" <mame@...>
遠藤です。
[#35648] [Bug:1.9] MingwでIO#dupがブロックする — wanabe <s.wanabe@...>
ワナベと申します。
[#35649] PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...>
遠藤です。
In article <e0b1e5700807240845o4c09cfa5gae142c1dd0c74170@mail.gmail.com>,
2008/07/25 1:02 Tanaka Akira <akr@fsij.org>:
成瀬です。
遠藤です。
In article <e0b1e5700807290517mee11539lfbd82d4dfc98c53f@mail.gmail.com>,
遠藤です。
In article <e0b1e5700807300311v13752775mcf8bb5086753051d@mail.gmail.com>,
[#35669] [Ruby 1.9 - Bug #368] (Open) 境界における Math.atanh 等の動作 — Yui NARUSE <redmine@...>
チケット #368 が報告されました。 (by Yui NARUSE)
斎藤と申します。
[#35681] [Ruby 1.9 - Bug #369] (Open) Ruby 1.9.0-3で R — Akira Matsuda <redmine@...>
チケット #369 が報告されました。 (by Akira Matsuda)
[ruby-dev:35611] Re: [request]C APIの拡張
ご意見ありがとうございます。
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 (藤 吾郎)