Eventmachine 0.12.6


#1

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


#2

Wow and I thought EM dev. was dead :slight_smile:

�- Better windows support
� �- fixed various win32 build issues in fastfilereader and
rubyeventmachine extensions

works well on mingw now.

� �- friendlier error messages raised from the EM error_callback

Wasn’t there an error_callback before that was nixed because it hurt the
speed somewhat?

Thanks for doing all that other stuff.
-=r