Hi all,

This is a summary of ruby-dev ML in these days.

[ruby-dev:25755] I/O operation differs signal handler

  Minero Aoki reported that ruby does not execute pure ruby signal
  handlers while reading from a stream.  e.g.

    Signal.trap(:TERM) { puts 'TERM'; exit }
    while true
      p $stdin.gets
    end

  This program does not exit until $stdin.gets returns.
  Pure ruby signal handlers are not executed, because calling ruby
  code from signal handler is dangerous.  So we must take following
  steps:

    1. exit signal handler,
    2. interrupt/finish system call,
    3. update ruby's I/O buffer correctly,
    4. then call pure ruby signal handler.

  But difficulties are still lying here:

    * read(2) will never be interrupted by signals because ruby set
      SA_RESTART option (see also sigaction(2)).
    * The return value of read(2) is required to update I/O buffer.
      So we cannot update I/O buffer until system call is finished.

  We need a safe and portable solution for this problem.

[ruby-dev:25780] Proc generation without `proc'

  Nobuyoshi Nakada posted a patch to allow generating Proc object
  without `proc' or `lambda' shortly.  e.g.

    x = {|a| p a }        # == proc {|a| p a }
    x.call

    x = (do |a| p a end)  # == proc do |a| p a end
    x.call

  This experimental patch was incorporated in to CVS HEAD.


-- Minero Aoki
ruby-dev summary index: http://i.loveruby.net/en/ruby-dev-summary.html