[#46037] Re: [ruby-core:47138] [ruby-trunk - Bug #6861][Open] ERB::Util.escape_html is not escaping single quotes — Shugo Maeda <shugo@...>

咳さん

12 messages 2012/08/13
[#46038] Re: [ruby-core:47138] [ruby-trunk - Bug #6861][Open] ERB::Util.escape_html is not escaping single quotes — Masatoshi SEKI <m_seki@...> 2012/08/13

=1B$B31$H$$$$$^$9!#=1B(B

[#46051] [ruby-trunk - Feature #6875][Open] Make test/unit default gem — "kou (Kouhei Sutou)" <kou@...>

19 messages 2012/08/15

[#46081] [ruby-trunk - Feature #6936][Assigned] Forbid singleton class and instance variabls for float — "naruse (Yui NARUSE)" <naruse@...>

17 messages 2012/08/26
[#46082] Re: [ruby-trunk - Feature #6936][Assigned] Forbid singleton class and instance variabls for float — SASADA Koichi <ko1@...> 2012/08/27

(2012/08/27 8:12), naruse (Yui NARUSE) wrote:

[ruby-dev:46060] Re: [ruby-trunk - Bug #595] Fiber ignores ensure clause

From: SASADA Koichi <ko1@...>
Date: 2012-08-20 08:56:13 UTC
List: ruby-dev #46060
こちら,返事が大変遅くなって済みません.

(2012/08/05 13:05), wanabe (_ wanabe) wrote:
> (1) GC で mark と sweep の間に、mark されていない Fiber を対象に
> (2) ruby_cleanup 中に、メインスレッドに所属するすべての Fiber を対象に
> (3) 子スレッド終了時(vm->living_threads から外されるとき)、所属するすべての Fiber を対象に
> の 3 つのタイミングで、throw/catch により ensure 節を実行するパッチを書きました。
> 
> [ruby-dev:41035] で遠藤さんがおっしゃっているような「yield 中の Fiber は GC しない」
> という手法もやってみたのですが、test/ruby/test_fiber.rb がとても終わりそうにないことや
> Fiber のマーク処理の重さや Fiber 自体のメモリ消費量などにより、断念しました。
> そのため上記(1)のように、rb_gc_marked_p() という関数が必要になるなど強引な手段を使っています。

 とりとめもなく3つほど.

 (1) ですが,ファイナライザのように実行するのはどうかと思っておりまし
た.ただ,その場合,ちょっと管理が大変なんですよね.


 あと,throw よりは,

#define eKillSignal INT2FIX(0)
#define eTerminateSignal INT2FIX(1)

この辺がいいのかなぁ,と思っていました.いや,むしろここを thorw にした
ほうが設計は綺麗かもしれませんね....現在のの実装は,絶対 catch 出来な
い,ってのを目指している感じです.


 速度ですが,小崎さんが仰っているように,あまり気にしてもしょうがない,
という気もするのですが,例えば ensure 節でひっかける可能性があるか,とい
うチェックをするのは結構効くのではないかと思っています.

 というのも,殆どの用途はガチで使っているわけじゃないと思うので,ensure
な処理を必要とする Fiber は,実は少ないのではないかと,

 別の案としては,Fiber 生成時に「ensure ちゃんと処理して」フラグを新設
し,ガチで使う人(ensure をきっちり動かして欲しい人)はこれでやってね
(参考: http://bugs.ruby-lang.org/issues/6694),というのはどうだろう,
とか思うんですが,ちょっと手抜きしすぎでしょうか.

-- 
// SASADA Koichi at atdot dot net


In This Thread

Prev Next