[#9381] Native Thread extension for 1.8 — "Abhisek Datta" <abhisek@...>
Hello,
[#9382] the sign of a number is omitted when squaring it. -2**2 vs (-2)**2 — <noreply@...>
Bugs item #6468, was opened at 2006-11-03 17:25
On 11/3/06, noreply@rubyforge.org <noreply@rubyforge.org> wrote:
Jacob Fugal wrote:
Hi,
Yukihiro Matsumoto wrote:
[#9385] merge YARV into Ruby — SASADA Koichi <ko1@...>
Hi,
On Nov 3, 2006, at 9:11 PM, SASADA Koichi wrote:
On 11/4/06, SASADA Koichi <ko1@atdot.net> wrote:
On Monday 06 November 2006 16:01, Kirill Shutemov wrote:
On Monday 06 November 2006 10:15, Sylvain Joyeux wrote:
On 11/6/06, Sean Russell <ser@germane-software.com> wrote:
On Monday 06 November 2006 13:37, Kirill Shutemov wrote:
On 11/6/06, Kirill Shutemov <k.shutemov@gmail.com> wrote:
On 11/8/06, Austin Ziegler <halostatue@gmail.com> wrote:
On 11/6/06, ville.mattila@stonesoft.com <ville.mattila@stonesoft.com> wrote:
On 2006-11-07 00:47:20 +0900, Kirill Shutemov wrote:
On 11/6/06, Marcus Rueckert <mrueckert@suse.de> wrote:
On Tue, 7 Nov 2006, Joshua Haberman wrote:
[#9402] fast mutexes for 1.8? — MenTaLguY <mental@...>
Many people have been using Thread.critical for locking because Ruby
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:17 +0900, Hugh Sasse wrote:
On Tue, 7 Nov 2006, MenTaLguY wrote:
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:21 +0900, khaines@enigo.com wrote:
On Mon, 2006-11-06 at 09:38, MenTaLguY wrote:
[#9450] Bikeshed: No more Symbol < String? — Kornelius Kalnbach <murphy@...>
Hi ruby-core!
Hi,
David wrote:
On Nov 7, 2006, at 2:28 AM, Yukihiro Matsumoto wrote:
Hi,
Hi --
Hi,
Too bad, I was rejoicing to remove the need of
[#9470] Ruby performanmce improvements — "Michael Selig" <michael.selig@...>
I know you guys are in the middle of YARV stuff, but I thought you might be
Hi,
[#9472] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
At RubyConf 2005 I gave an off-the-wall little talk about the
[#9493] Future Plans for Ruby 1.8 Series — URABE Shyouhei <shyouhei@...>
This week Japanese rubyists were talking about the future of ruby_1_8
[#9515] External entropy pool for random number generator — "Kirill Shutemov" <k.shutemov@...>
In the attachment patch which allow to use external entropy pool for
Hi,
On 11/13/06, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
Hi,
On 11/13/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
[#9520] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
[#9540] Different return values for setter methods — "Marcel Molina Jr." <marcel@...>
>> class Setter; def set=(value) 1 end end
[#9547] Net::FTP should check the control connection on EPIPE — Simon Williams <simon.williams@...>
Hi,
Hi,
On Tue, Feb 06, 2007 at 11:23:01AM +0900, Shugo Maeda wrote:
[#9554] Ruby 1.[89].\d+ and beyond. — Hugh Sasse <hgs@...>
I've been thinking about how version numbers are restricting what we can do.
On Fri, 17 Nov 2006, Eric Hodel wrote:
On Nov 16, 2006, at 12:02 PM, Hugh Sasse wrote:
On 11/16/06, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 19, 2006, at 6:35 AM, Robert Dober wrote:
On Nov 19, 2006, at 8:13 AM, James Edward Gray II wrote:
> What if we need to exceed 1.8.9?
On Nov 19, 2006, at 10:30 PM, Kornelius Kalnbach wrote:
On Mon, 20 Nov 2006, Eric Hodel wrote:
Hugh Sasse wrote:
[#9572] io_write (io.c) bug (and its fix) under MS Windows for GUI apps (rubyw) — "Mounir Idrassi" <idrassi@...>
Hi all,
[#9581] type information — Deni George <denigeorge@...>
Hi,
Nobuyoshi Nakada wrote:
[#9604] #ancestors never includes the singleton class (inconsistent) — <noreply@...>
Bugs item #6820, was opened at 2006-11-22 08:49
Hi,
> It is supposed to. Singleton classes (or eigenclasses, if you want to
On 11/27/06, Sylvain Joyeux <sylvain.joyeux@m4x.org> wrote:
> 2) You could think of all objects already having a singleton class
fatal flaw in popen4 on windows? [WAS] Re: Nonblocking IO read
On Thu, 2 Nov 2006, Robert Klemme wrote:
> Tom Pollard wrote:
>> Anyway, you would only need nonblocking IO if you wanted to read bits of
>> the stderr stream before the command exited, but that doesn't sound like
>> what you're want.
>
> Actually this is not correct: if there is a lot written to stderr then you
> need to read that concurrently. If you do not do that then the process will
> block on some stderr write operation that fills up the pipe and you get a
> deadlock because your code waits for process termination.
not only is that true but, afaik, it's why popen4 cannot even work on windows!
this program will eventually hang on either windows or unix
harp:~ > cat a.rb
require 'rubygems'
require 'popen4'
n = (ARGV.shift || 4242).to_i
ruby = ARGV.shift || 'ruby'
system "ruby -e 42" or abort "ruby not in your path!"
STDOUT.sync = STDERR.sync = true
program = <<-program
#{ n }.times do
t = Time.now.to_f
STDOUT.puts t
STDERR.puts t
end
program
POpen4.popen4(ruby) do |stdout, stderr, stdin, pid|
STDOUT.puts pid
stdin.puts program
stdin.close
Thread.new{ stdout.each{|line| STDOUT.puts line} }
#
# uncomment and it won't hang!!!
#
#Thread.new{ stderr.each{|line| STDERR.puts line} }
end
puts 'done'
however, on windows it will always hang - even if the line above is
uncommented. this is because if one popen4s a process it's __essential__, as
robert correctly points out, to continually consume any stdout or stderr
produced - otherwise the program will eventually get stuck in EPIPE and you'll
be waiting for this stuck program.
and here's the rub: you cannot reliably consume both stdout and stderr under
windows using threads or, afaik, nonblocking io. perhaps the new nonblock_*
methods could help with this? it'd no doubt be a major reworking...
*** i'm really hoping someone will chime in here and prove me wrong ***
for reference i'm including the code for my open4 lib's spawn method: which
illustrates the logical concept of what must be done to avoid a subprocess
blocked writing to it's parent's pipes...
#
# for complete code see
# http://codeforpeople.com/lib/ruby/open4/open4-0.9.1/lib/open4.rb
# http://rubyforge.org/frs/?group_id=1024&release_id=7556
#
def spawn arg, *argv
#--{{{
argv.unshift(arg)
opts = ((argv.size > 1 and Hash === argv.last) ? argv.pop : {})
argv.flatten!
cmd = argv.join(' ')
getopt = getopts opts
ignore_exit_failure = getopt[ 'ignore_exit_failure', getopt['quiet', false] ]
ignore_exec_failure = getopt[ 'ignore_exec_failure', !getopt['raise', true] ]
exitstatus = getopt[ %w( exitstatus exit_status status ) ]
stdin = getopt[ %w( stdin in i 0 ) << 0 ]
stdout = getopt[ %w( stdout out o 1 ) << 1 ]
stderr = getopt[ %w( stderr err e 2 ) << 2 ]
pid = getopt[ 'pid' ]
timeout = getopt[ %w( timeout spawn_timeout ) ]
stdin_timeout = getopt[ %w( stdin_timeout ) ]
stdout_timeout = getopt[ %w( stdout_timeout io_timeout ) ]
stderr_timeout = getopt[ %w( stderr_timeout ) ]
status = getopt[ %w( status ) ]
cwd = getopt[ %w( cwd dir ), Dir.pwd ]
exitstatus =
case exitstatus
when TrueClass, FalseClass
ignore_exit_failure = true if exitstatus
[0]
else
[*(exitstatus || 0)].map{|i| Integer i}
end
stdin ||= '' if stdin_timeout
stdout ||= '' if stdout_timeout
stderr ||= '' if stderr_timeout
started = false
status =
begin
Dir.chdir(cwd) do
Timeout::timeout(timeout) do
popen4(*argv) do |c, i, o, e|
started = true
%w( replace pid= << push update ).each do |msg|
break(pid.send(msg, c)) if pid.respond_to? msg
end
#
# this is the critical bit!!!
#
te = ThreadEnsemble.new c
te.add_thread(i, stdin) do |i, stdin|
relay stdin, i, stdin_timeout
i.close rescue nil
end
te.add_thread(o, stdout) do |o, stdout|
relay o, stdout, stdout_timeout
end
te.add_thread(e, stderr) do |o, stderr|
relay e, stderr, stderr_timeout
end
te.run
end
end
end
rescue
raise unless(not started and ignore_exec_failure)
end
raise SpawnError.new(cmd, status) unless
(ignore_exit_failure or (status.nil? and ignore_exec_failure) or exitstatus.include?(status.exitstatus))
status
#--}}}
end
kind regards.
-a
--
my religion is very simple. my religion is kindness. -- the dalai lama
-a
--
my religion is very simple. my religion is kindness. -- the dalai lama