[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

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

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30447] Re: fail to autoload at $SAFE==4

From: Hidetoshi NAGAI <nagai@...>
Date: 2007-02-27 21:28:30 UTC
List: ruby-dev #30447
永井@知能.九工大です.

From: Nobuyoshi Nakada <nobu@ruby-lang.org>
Subject: [ruby-dev:30442] Re: fail to autoload at $SAFE==4
Date: Wed, 28 Feb 2007 00:12:02 +0900
Message-ID: <200702271512.l1RFC0iJ013981@sharui.nakada.kanuma.tochigi.jp>
> At Tue, 27 Feb 2007 16:28:51 +0900,
> Hidetoshi NAGAI wrote in [ruby-dev:30438]:
> > > (3) autoloadを指定したときに実際にロードされるはずのライブラリを
> > >     探し、.rbか.soか確定してしまう
> >             ^^^^^^^^^^^^^^フルパスで?
> 
> 最初はどちらを使うかだけを考えていましたが、実際のファイルを探
> しに行く以上、フルパスでないと意味がないでしょうね。

御意.

> > autoload の仕様として,
> >  * autoload 呼び出し時にロードされるファイルを確定させる.
> >  * 実際にロードする時点でファイルのタイムスタンプが変化していたら
> >    例外 (SecurityError ?) とする.
> > というのは「あり」でしょうか?
> 
> 「あり」かもしれませんが、そこまで必要なのかとかタイムスタンプ
> だけでいいのかとか、もうちょっと議論は必要でしょう。

呼び出し対象として確定させたはずのファイルが変更されているというのは
非常に危険な香りがするので,チェックが必要かなと思ったまでです.

# 意図して変更したなら,その時点で autoload を呼び直せばいいわけですし.

で,ファイル内容の精査などはやっていられないので,
できるのは stat チェックくらいかなと.

> > それはそれとして,作業コストと互換性とを考えると,
> > 1.8 ではやはり (2) を選択するのが妥当となるのでしょうか?
> 
> 作業コストは問題じゃありませんが、時期的にちょっと大きな変更か
> と。

そうですね.
この問題を放置したままに 1.8.6 をリリースというわけには
いかないでしょうし,現時点での落しどころとしては
適切なのかもしれません.

特に反対がなければ,ruby_1_8, ruby_1_8_6 には 
(2) を適用してしまうということでいかがでしょうか?
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread