From: Aman Gupta Date: 2009-03-09T17:37:07+09:00 Subject: [ANN] eventmachine 0.12.6 I am happy to announce the release of eventmachine 0.12.6 This release contains numerous bug fixes and improvements. Highlights include:  - EM::connection_count API to get number of active connections in the reactor  - EM::get_max_timers API to get the max number of timers available      (use EM::set_max_timers to increase it)  - EM::Connection#get_status returns a Process::Status object  - EM::attach can be used with pipes  - Switched back to extconf for building extensions (prevents errors during gem install)  - Better windows support    - fixed various win32 build issues in fastfilereader and rubyeventmachine extensions    - official 0.12.6 windows binary gem released on rubyforge    - rake win32:gem task to build openssl and binary win32 gem  - Better error reporting    - raise ArgumentError when EM.connect/start_server are passed an invalid handler class    - friendlier error messages raised from the EM error_callback  - Various solaris build issues fixed  - Fixed HttpCli2 to handle basic auth and content-length:0 bodies  - Fixed latency caused when cleaning up EM::popen'd processes  - Fixed inactivity timeout bug in the pure ruby reactor  - Fixed issues in the test suite due to improper kqueue fd initialization/cleanup  - Bundled memcache protocol      EM.run{        cache = EM::P::Memcache.connect 'localhost', 11211        cache.delete(:a)        cache.set(:a, 'hello')        cache.get(:a){ |v| p v }      }  - Optional error handler for errors raised during event callbacks      EM.error_handler{ |e|            puts "Error raised during event loop: #{e.message}"      }  - EM::system wrapper for EM::popen      EM.run{        EM.system('ls'){ |out,status| puts out if status.exitstatus == 0 }        EM.system('sh', proc{ |process|          process.send_data("echo hello\n")          process.send_data("exit\n")        }, proc{ |out,status|          puts out        })      }  - EM::next_tick can be used before the reactor is running      EM.next_tick{ puts "The reactor was started at #{Time.now}" }      sleep 2      EM.run{}  - EM::Connection now has an ssl_handshake_completed event      require 'openssl'      module SslHandler        def post_init          start_tls        end        def ssl_handshake_completed          cert = get_peer_cert          close_connection unless OpenSSL::X509::Certificate.new(cert).subject =~ /Google/        end      end      EM.run{        EM.connect 'www.google.com', 443, SslHandler      } Special thanks to the following people for making this release possible:  - Jake Douglas  - Bob Potter  - Ugo Riboni The rdoc has been updated and is available at http://eventmachine.rubyforge.org/  Aman