All:
The Ruby/EventMachine team released version 0.7.2 last week. The release has
been stable and hasn't turned up any significant problems. For Windows
users, there is a binary gem that was built on a VC6 tool-chain, and
includes openssl support. If anyone turns up problems working with this
binary gem, let us know. We're amenable to releasing it in multiple flavors
if necessary.
A raft of usability features has been added since the 0.7.0 release last
November. The most notable change is that we've cleaned up the licensing
text that appears in the source files comprising the release. This has
confused a great many people, for which I apologize. EventMachine is
dual-licensed under either the GPL or Ruby's license, your choice. This has
been true since the product was released over a year ago, and has been
memorialized in a variety of communications on public fora since then. But
until this release, the text in many of the source files has reflected only
the GPL flavor.
The most notable new features are support for an internal thread pool
(EventMachine#defer), and for the Deferrable class, which behaves much like
Twisted's "Deferred," but with a Ruby-esque (read, easier-to-use) API. As
one example of its capabilities, EM's Deferrable can be used to generate web
page fragments (including multipart/mixed pages) from long-running external
operations. It can generate many pages simultaneously, without blocking and
without threads.
The new release also contains some new helper classes to assist people who
need to write their own network protocols (for example, to communicate with
legacy systems that define one-off protocols). There is also an evented HTTP
server which has extremely fast performance with excellent scalability. It's
designed to support a range of applications requiring dynamically-generated
content. We'll shortly be releasing evented versions of some other
protocols, including SMTP, LDAP, and XML-stanzas. (The latter is intended
for use with RSS or XMPP streams.)
It's been great to hear from all of the people who have chosen to use and
trust EM for critical applications. A special shout-out to Kirk Haines, who
wrote the extremely clever and interesting Swiftiply, a clustering-proxy
server for web applications which has already given some sites a big speed
boost: http://swiftiply.swiftcore.org.
We've started planning for a pure-Java version of EventMachine. This will
enable applications written to the current EM API to run unmodified on
JRuby. The intention is that the Java implementation will live alongside the
C++ one, and they will stay matched in terms of features. (The current C++
based implementation will be supported indefinitely.)
Finally, I'd like to acknowledge Selem Delul and his mentor Pat Eyler, who
are doing a very interesting SoC project. It will allow you to write evented
protocol handlers using Ragel grammars.
Thanks, everyone, and keep those feature requests and bug reports coming.
-francis