[#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

咳といいます。

[#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:46081] [ruby-trunk - Feature #6936][Assigned] Forbid singleton class and instance variabls for float

From: "naruse (Yui NARUSE)" <naruse@...>
Date: 2012-08-26 23:12:48 UTC
List: ruby-dev #46081
Issue #6936 has been reported by naruse (Yui NARUSE).

----------------------------------------
Feature #6936: Forbid singleton class and instance variabls for float
https://bugs.ruby-lang.org/issues/6936

Author: naruse (Yui NARUSE)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: 2.0.0


[Feature #6763] などで議論されていた flonum が r36798 でが入ったわけですが、

1. Float のオブジェクトID の仕様が変更
2. flonum な float に特異メソッドが追加不可
3. flonum な float に特異クラスが作成不可
4. flonum な float は同じ値同士でインスタンス変数が共有される

といった非互換が存在します。
もっとも、1. は通常意識するはずのないところですし、2. は元から禁止されています。
気になるのは 3. と 4. で、これは 1.9.3 と挙動が異なるだけでなく、
32bit 環境での 2.0 や、64bit環境の flonum でない float オブジェクトとも挙動が異なります。

実際問題として実害はないような気もしますが、このような違いが極めて実装上の問題で、
Ruby 上から見えないところに存在するのは気持ち悪く感じます。

よって、以下のようにするとよいのではないでしょうか。
* flonum でない float でも特異クラスの作成を禁止
* float へのインスタンス変数作成を禁止

後者の具体的手法はいくつかあると思いますが、即値は最初から frozen にしておくとかもありかなと思っています。

話を発散させると、この話は true, false, nil, Fixnum, Symbol のような即値から、
Bignum や Time のような immutable っぽいオブジェクトにも当てはまる気がしています。


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next