From: Minero Aoki Date: 2005-03-06T15:23:36+09:00 Subject: ruby-dev summary 25741-25780 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