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