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 H.,
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