[ANN] eventmachine 0.12.10

I am happy to announce the release of eventmachine 0.12.10. Gems (including
binary builds for win32 and jruby) have been uploaded to rubyforge and should
be available via `gem install` shortly.

Since 0.12.8, we've had over 130 patches with numerous bug fixes, improvements
and several new features. Highlights include:

- Improved Performance
- subclasses of EM::Connection are not created unless necessary
- prevent unnecessary system calls to epoll_ctl/kevent
- the reactor uses numeric signatures instead of strings,
resulting in a ~15% overall performance boost

- API Changes
- EM.reactor_thread accessor for the reactor's thread
- EM.next_tick and EM.schedule are now thread-safe
- EM::connect will raise a more better EM::ConnectionError with details
- EM.epoll=/kqueue= will raise EM::Unsupported when unavailable
- improved the cryptic "no timer" exception and increased the
default limit to 10k timers
- bugfix and improved performance for EM.current_time
- EM.add_periodic_timer returns PeriodicTimer object
- EM::Connection#get_sock_opt wrapper for getsockopt()
- added EM.watch for notifications about file descriptors
for notify_read/writable events, you cannot use EM.attach
EM.watch(fd, Watcher){ |c| c.notify_readable = true }
- EM::Connection#pending_connect_timeout= setter (defaults to 20s)
- EM.bind_connect can bind to random source port using nil
EM.bind_connect('local.ip', nil, 'remote.ip', 1234)
- added EM::Connection#pause/resume/paused? to pause and resume I/O
- EM::Connection#proxy_incoming_to takes an optional buffer size for
limiting RAM usage when dealing with slow clients

- Protocol Additions
- allow overriding the serializer used for ObjectProtocol
- basic SOCKS v4 client protocol implementation

- Platform Support
AIX, OpenBSD, Solaris
- minor fixes to support these platforms
Windows
- fix missing unbind events on refused outbound connections
- fix issues with ruby 1.9 on windows

- Ruby Support
JRuby
- major overhaul of the jruby reactor for better compat and performance
- basic EM.attach/watch support on the Sun JVM
- fully compatible with JRuby 1.4
Ruby 1.9
- fix bugs trying to kill the EM.defer threadpool
- fix signal handling to catch ctrl+c and other signals gracefully
Rubinius
- minor changes to build a compatible C extension

Special thanks to the following people for making this release possible:
- Bernd Ahlers
- Chris Turner
- Dan Mayer
- Perry Smith
- Bill 'spatulasnout' Kelly
- Hemant 'gnufied' Kumar
- Jake 'yakischloba' Douglas
- James 'raggi' Tucker
- coderrr

The rdoc has been updated and is available at http://eventmachine.rubyforge.org

Aman

Hi Aman,

I am struck with this wierd problem in windows when I am trying to use
the thin server for my RoR application developed in ruby 1.9.1p376
version and rails 2.3.5 version and I have been facing quite some
problems to get this up and running in my local box. i would like to
explain tehe various problems I had encounterd. FYI, I am going to host
my RoR application in a Windows server.

1. no such file or directory - rubyeventmachine ==> require
'rubyeventmachine' in line no. 66 of the eventmachine.rb file.
==> Really couldn't understand what this option should be changed to.
Experimentally, had changed the ruby_eventmachine to pr_eventmachine and
the symbol to :cascade option

2. After changing to pr_eventmachine ==> No such file or directory :
uuidgen (pr_event_machine)
==>After some googling, installed the Microsoft SDK which has the
UUidgen.exe which can solve the problem. Hard coded the `uuidgen` with
`<PATH to the uuidgen.exe>` and the server was getting started.

3. The application starts fine, but fails with the error :
G:/Softwares/Softwares/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.8-x86-mswin32-60/lib/pr_eventmachine.rb:587:in
`write_nonblock': A non-blocking
socket operation could not be completed immediately.
(Errno::EWOULDBLOCK)
        from
G:/Softwares/Softwares/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.8-x86-mswin32-60/lib/pr_eventmachine.rb:587:in
`eventable_write'
        from
G:/Softwares/Softwares/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.8-x86-mswin32-60/lib/pr_eventmachine.rb:371:in
`block in crank_selectable
s'

These things have been haunting me for quite some time. Please do
suggest me what a missing here, what option should I select in point
#1, and is there a rubyeventmachine.rb file to bedownloaded and included
in any of the directories?

FYI, My full gem list are given below.

···

=============================================================
actionmailer (2.3.5, 2.2.2)
actionpack (2.3.5, 2.2.2)
activerecord (2.3.5, 2.2.2)
activeresource (2.3.5, 2.2.2)
activesupport (2.3.8, 2.3.5, 2.2.2)
Ascii85 (1.0.0)
cgi_multipart_eof_fix (2.5.0)
color (1.4.1)
daemons (1.1.0, 1.0.3)
eventmachine (0.12.8 x86-mswin32-60)
fastthread (1.0.1 i386-mswin32)
gem_plugin (0.2.3)
guid (0.1.1)
gupshup (0.2.3)
hoe (2.6.1)
httpclient (2.1.5.2)
image_science (1.2.1)
json_pure (1.4.6)
log4r (1.1.7)
mysql (2.8.1 x86-mswin32)
paperclip (2.3.3)
pdf-reader (0.8.5)
pdf-writer (1.1.8)
rack (1.0.1)
rails (2.3.5, 2.2.2)
rake (0.8.7)
rubyforge (2.0.4)
rubygems-update (1.3.7)
thin (1.2.7 x86-mswin32)
transaction-simple (1.4.0)

And my gem environment is

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.1 (2009-12-07 patchlevel 376) [i386-mswin32]
  - INSTALLATION DIRECTORY:
G:/Softwares/Softwares/ruby-1.9.1/lib/ruby/gems/1.9.
1
  - RUBY EXECUTABLE: G:/Softwares/Softwares/ruby-1.9.1/bin/ruby.exe
  - EXECUTABLE DIRECTORY: G:/Softwares/Softwares/ruby-1.9.1/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mswin32-60
  - GEM PATHS:
     - G:/Softwares/Softwares/ruby-1.9.1/lib/ruby/gems/1.9.1
     - C:/Users/vaio/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/&quot;, "http://gems.github.com",
"http://ge
ms.github.com"]
  - REMOTE SOURCES:
     - http://rubygems.org/
     - http://gems.github.com
     - http://gems.github.com

Hope I will get some +ve reply with some quick fix to solve this issue.

Thanks and Regards,
Sandy

Aman Gupta wrote:

I am happy to announce the release of eventmachine 0.12.10. Gems
(including
binary builds for win32 and jruby) have been uploaded to rubyforge and
should
be available via `gem install` shortly.

Since 0.12.8, we've had over 130 patches with numerous bug fixes,
improvements
and several new features. Highlights include:

�- Improved Performance
� �- subclasses of EM::Connection are not created unless necessary
� �- prevent unnecessary system calls to epoll_ctl/kevent
� �- the reactor uses numeric signatures instead of strings,
� � �resulting in a ~15% overall performance boost

�- API Changes
� �- EM.reactor_thread accessor for the reactor's thread
� �- EM.next_tick and EM.schedule are now thread-safe
� �- EM::connect will raise a more better EM::ConnectionError with
details
� �- EM.epoll=/kqueue= will raise EM::Unsupported when unavailable
� �- improved the cryptic "no timer" exception and increased the
� � �default limit to 10k timers
� �- bugfix and improved performance for EM.current_time
� �- EM.add_periodic_timer returns PeriodicTimer object
� �- EM::Connection#get_sock_opt wrapper for getsockopt()
� �- added EM.watch for notifications about file descriptors
� � � �for notify_read/writable events, you cannot use EM.attach
� � � �EM.watch(fd, Watcher){ |c| c.notify_readable = true }
� �- EM::Connection#pending_connect_timeout= setter (defaults to 20s)
� �- EM.bind_connect can bind to random source port using nil
� � � �EM.bind_connect('local.ip', nil, 'remote.ip', 1234)
� �- added EM::Connection#pause/resume/paused? to pause and resume I/O
� �- EM::Connection#proxy_incoming_to takes an optional buffer size for
� � �limiting RAM usage when dealing with slow clients

�- Protocol Additions
� �- allow overriding the serializer used for ObjectProtocol
� �- basic SOCKS v4 client protocol implementation

�- Platform Support
� � �AIX, OpenBSD, Solaris
� � � �- minor fixes to support these platforms
� � �Windows
� � � �- fix missing unbind events on refused outbound connections
� � � �- fix issues with ruby 1.9 on windows

�- Ruby Support
� � �JRuby
� � � �- major overhaul of the jruby reactor for better compat and
performance
� � � �- basic EM.attach/watch support on the Sun JVM
� � � �- fully compatible with JRuby 1.4
� � �Ruby 1.9
� � � �- fix bugs trying to kill the EM.defer threadpool
� � � �- fix signal handling to catch ctrl+c and other signals
gracefully
� � �Rubinius
� � � �- minor changes to build a compatible C extension

Special thanks to the following people for making this release possible:
�- Bernd Ahlers
�- Chris Turner
�- Dan Mayer
�- Perry Smith
�- Bill 'spatulasnout' Kelly
�- Hemant 'gnufied' Kumar
�- Jake 'yakischloba' Douglas
�- James 'raggi' Tucker
�- coderrr

The rdoc has been updated and is available at
http://eventmachine.rubyforge.org

�Aman

--
Posted via http://www.ruby-forum.com/\.

� �- EM::Connection#pending_connect_timeout= setter (defaults to 20s)

An excellent addition. And a much more sane default.

As a note with the devkit and mingw I get:

cmain.cpp: In function 'int evma_send_file_data_to_connection(long
unsigned int, const char*)':
cmain.cpp:752:6: error: cannot convert 'stat*' to '_stati64*' for
argument '2' to 'int _fstati64(int, _stati64*)'
make.exe: *** [cmain.o] Error 1

Thanks!
-r

···

--
Posted via http://www.ruby-forum.com/\.