[#28015] RCR: RUBY_VERSION_INT — Roger Pack <rogerdpack2@...>

Situation:

14 messages 2010/02/02

[#28113] [Bug #2723] $: length affects re-require time of already loaded files — Greg Hazel <redmine@...>

Bug #2723: $: length affects re-require time of already loaded files

16 messages 2010/02/08

[#28151] [Bug #2739] ruby 1.8.7 built with pthreads hangs under some circumstances — Joel Ebel <redmine@...>

Bug #2739: ruby 1.8.7 built with pthreads hangs under some circumstances

31 messages 2010/02/11

[#28188] [Bug #2750] build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used — Christian Bodt <redmine@...>

Bug #2750: build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used

9 messages 2010/02/16

[#28206] Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...>

Hi matz --

23 messages 2010/02/18
[#28212] Re: Is Math module a wrapper of libm? — Yukihiro Matsumoto <matz@...> 2010/02/18

Hi,

[#28219] Re: Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...> 2010/02/18

Hi,

[#28225] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/18

Hi,

[#28233] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/18

Hi,

[#28265] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/20

Hi,

[#28286] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/21

Hi

[#28291] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/22

Hi!

[#28235] [Feature #2759] Regexp /g and /G options — Michael Fellinger <redmine@...>

Feature #2759: Regexp /g and /G options

35 messages 2010/02/18

[#28329] [ANN] Ruby 1.9.2dev has passed RubySpec! — Yusuke ENDOH <mame@...>

Hi,

12 messages 2010/02/24

[#28355] [ANN] Toward rich diversity of Ruby development. — Urabe Shyouhei <shyouhei@...>

A short announcement: thanks to some helps of GitHub people, I now have

12 messages 2010/02/27

[#28365] Indentifying key MRI-on-Windows issues — Jon <jon.forums@...>

In an effort to begin summarizing key MRI-on-Windows open issues I'm starting this thread in hopes that those interested will respond with details on the key MRI issues they feel need resolution for Windows users.

11 messages 2010/02/27
[#28690] Re: Indentifying key MRI-on-Windows issues — Roger Pack <rogerdpack2@...> 2010/03/16

> My key concern is http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-=

[ruby-core:28281] [Bug:trunk] add explicit constraints for WONTFIX IO bug

From: Yusuke ENDOH <mame@...>
Date: 2010-02-21 15:15:17 UTC
List: ruby-core #28281
Hi, all

I propose writing two constraints into rdoc of IO:

  - after running IO#dup, both an original IO and generated IO may
    cause "bezarre behavior" except IO#close

  - after running IO#reopen, an original IO that passed to reopen
    may cause "bezarre behavior" except IO#close

In short, it means "IO#dup should not be used" and "IO that was once
passed to IO#reopen should be just closed."
"bezarre behavior" does not mean undefined behavior (such as SEGV),
but means wrong order of reading and writing, wrong value from
IO#pos, etc.  (see Appendix)

These behaviors are caused by bug of core's wrong buffering handing.
But to fix these, we must change the structure `rb_io_t', public API
in include/ruby/io.h, resulting in binary incompatibility.
We are currently thinking that these behaviors won't cause so serious
issue to ought to be fixed with even binary incompatibility.
So I'm proposing writing the above constraints to assert WONTFIX in
the immediate future.


Please say your rebuttal if the above constraints make trouble in
"real world" example.  If valid and convincing rebuttal is come, the
issue will be fixed with breaking binary compatibility.  If not, the
above constraint statement will be added.

Answers for anticipated rebuttal:

- how to replace stdout and stderr temporarily to invoke subprocess

Use Kernel#spawn's option.

- my existing code will not work

Please fix your code.
Fixing this, *all users* will be forced to reinstall ext library
(even worse, the code of the library may need to be modified).
We are expecting rebuttals such as examples that cannot be absorbed
by Ruby-level fix or that requires all users to do more cumbersome
things.


If anyone says no objection in three days, I'll add the constraints.

Thanks,



Appendix: current bezarre behaviors of IO#dup and reopen

foo.txt
-------
A
B
C

example: first-come-first-served gets after IO#reopen (1)
---------------------------------------------------------
f1 = File.new("foo.txt")
f2 = File.new("foo.txt")
f1.reopen(f2)
p f1.gets #=> "A\n"
p f2.gets #=> nil (cannot read)

example: first-come-first-served gets after IO#reopen (2)
---------------------------------------------------------
f1 = File.new("foo.txt")
f2 = File.new("foo.txt")
f1.reopen(f2)
p f2.gets #=> "A\n"
p f1.gets #=> nil (cannot read)

example: negative value of IO#pos after IO#reopen
----------------------------------------------
f1 = File.new("foo.txt")
f2 = File.new("foo.txt")
f2.gets
f1.reopen(f2)
f2.gets
f1.rewind
p f2.pos #=> -2

example: wrong value of IO#pos after IO#dup
-------------------------------------------
f1 = File.new("foo.txt")
f2 = f1.dup()
p f1.pos  #=> 0
p f2.gets #=> "A\n"
p f1.pos  #=> 6 (neither 0 or 2)

example: IO#pos with side-effect after IO#reopen
------------------------------------------------
f1 = File.new("foo.txt")
f2 = File.new("foo.txt")
f2.gets
f1.reopen(f2)
f2.gets
p f1.pos  #=> 6
f2.pos
p f1.pos  #=> 4 (changed)

example: wrong order of reading after IO#dup
--------------------------------------------
r, w = IO.pipe
Thread.new do
  w.print "Foo\nBar"
  sleep 1
  w.print "Baz\n"
  sleep 1
  w.print "Qux\n"
end
p r.gets   #=> "Foo\n"
r2 = r.dup
p r2.gets  #=> "Baz\n" (not "BarBaz\n")
p r.gets   #=> "BarQux\n" (not "Qux\n")

example: wrong order of writing after IO#dup
--------------------------------------------
f = File.new("out.txt", "w")
f1 = File.new("foo.txt")
f2 = File.new("foo.txt")
f1.reopen(f)
f2.reopen(f)
f2.puts("foo")
f1.puts("bar")
#=> resulting "bar\nfoo\n" in out.txt, not "foo\nbar\n"

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread

Prev Next