むらたです。 On 2009/03/30, at 12:47, Nobuyoshi Nakada wrote: > At Mon, 30 Mar 2009 05:50:40 +0900, > Kenta Murata wrote in [ruby-dev:38207]: >> "p eval('0'+'+0.1'*n)" を評価すると、n がある値 >> N を超えたときに >> スタックが溢れますが、バージョン 1.9.2 の N >> が バージョン 1.9.1 より >> 小さくなっています。 > > 再現できませんでした。 > > $ ./ruby -ve "p eval('0'+'+0.1'*6714)" > ruby 1.9.2dev (2009-03-30 trunk 23097) [i386-darwin9.0] > 671.40000000008411 > > $ ./ruby -ve "p eval('0'+'+0.1'*6715)" > ruby 1.9.1p0 (2009-03-04 revision 22762) [i386-darwin9.6.0] > -e:1:in `eval': stack level too deep (SystemStackError) > from -e:1:in `<main>' > >> $ ~/ruby-1.9.1-r22762/bin/ruby -ve "p eval('0'+'+0.1'*13093)" >> ruby 1.9.1p0 (2009-03-04 revision 22762) [i386-darwin9.6.0] >> 1309.2999999999 >> $ ~/ruby-1.9.1-r22762/bin/ruby -ve "p eval('0'+'+0.1'*13094)" >> ruby 1.9.1p0 (2009-03-04 revision 22762) [i386-darwin9.6.0] >> -e:1:in `eval': stack level too deep (SystemStackError) >> from -e:1:in `<main>' >> >> $ ~/ruby-1.9.2-r23093/bin/ruby -ve "p eval('0'+'+0.1'*7481)" >> ruby 1.9.2dev (2009-03-29) [i386-darwin9.6.0] >> 748.10000000010155 >> $ ~/ruby-1.9.2-r23093/bin/ruby -ve "p eval('0'+'+0.1'*7482)" >> ruby 1.9.2dev (2009-03-29) [i386-darwin9.6.0] >> -e:1:in `eval': stack level too deep (SystemStackError) >> from -e:1:in `<main>' > > それぞれのコンパイルオプションは同じでしょうか。 configure 時に CFLAGS 等は特に指定していませんので、 コンパイルオプションは各バージョンのデフォルトが指定されています。 $ ~/ruby-1.9.2-r23093/bin/ruby -rrbconfig -ve 'p Config::CONFIG["CFLAGS"]' ruby 1.9.2dev (2009-03-29) [i386-darwin9.6.0] " -O3 -g -Wall -Wno-unused-parameter -Wno-parentheses -Wno-missing- field-initializers -Wshorten-64-to-32 -Wpointer-arith -Wwrite-strings - fno-common -pipe" $ ~/ruby-1.9.1-r22762/bin/ruby -rrbconfig -ve 'p Config::CONFIG["CFLAGS"]' ruby 1.9.1p0 (2009-03-04 revision 22762) [i386-darwin9.6.0] " -O2 -g -Wall -Wno-parentheses -fno-common -pipe -fno-common" 影響しそうな違いは -O2 から -O3 に変わったところ くらいでしょうか。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC