[#30722] JSON ライブラリの取り込み — "NARUSE, Yui" <naruse@...>

naruseです。

20 messages 2007/04/21

[ruby-dev:30706] Re: ruby-1.8.6, $SAFE=4, Proc#call

From: Yukihiro Matsumoto <matz@...>
Date: 2007-04-09 15:39:15 UTC
List: ruby-dev #30706
まつもと ゆきひろです

In message "Re: [ruby-dev:30705] ruby-1.8.6, $SAFE=4, Proc#call"
    on Tue, 10 Apr 2007 00:27:15 +0900, Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> writes:

|Proc#callとyieldで、Procが実行される際の$SAFEが異なります。
|まつもとさんはProc#callの挙動が意図したものである、とのことでした。(あってますか?>まつもとさん)
|
|yieldの挙動をProc#callと揃える予定はありますか?
|
|スレッドを作って$SAFE = 4でなにかを実行するのにyieldをよく使っていたのですが、
|yieldもProc#callの挙動に揃えるとすると、ちょっと面倒です。

まず、Procは元の場所の$SAFEの状態を覚えていますから、
Proc#callの挙動は意図通りです(あってます)。これは信頼できる
コードかどうかはその文脈で決まると認識しているからです。信頼
できないコードから呼ばれても、ブロックの信頼性が下がるわけで
はない。しかし、現状yieldは元のコンテキストの$SAFEの状態を復
元しませんから、この点で一貫性が無いと言えるでしょう。

ですから、(どのタイミングかちょっと決めかねますが)いずれ揃え
るべきでしょう。が、一時的に$SAFEを変更してブロックを実行し
たいというニーズがあるということですから、それに対する救済策
も同時に用意しないとまずいんでしょうね。

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next