Hello community, here is the log from the commit of package rubygem-nio4r for openSUSE:Factory checked in at 2017-06-02 10:33:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-nio4r (Old) and /work/SRC/openSUSE:Factory/.rubygem-nio4r.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "rubygem-nio4r" Fri Jun 2 10:33:10 2017 rev:3 rq:499915 version:2.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-nio4r/rubygem-nio4r.changes 2017-01-15 11:19:10.161130066 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-nio4r.new/rubygem-nio4r.changes 2017-06-02 10:33:50.735553748 +0200 @@ -1,0 +2,24 @@ +Tue May 30 05:17:06 UTC 2017 - coolo@suse.com + +- updated to version 2.1.0 + see installed CHANGES.md + + ## 2.1.0 (2017-05-28) + + * [#130](https://github.com/socketry/nio4r/pull/130) + Add -fno-strict-aliasing flag when compiling C ext. + ([@junaruga]) + + * [#146](https://github.com/socketry/nio4r/pull/146) + Use non-blocking select when a timeout of 0 is given. + ([@tarcieri]) + + * [#147](https://github.com/socketry/nio4r/pull/147) + Update to libev 4.24. + ([@tarcieri]) + + * [#148](https://github.com/socketry/nio4r/pull/148) + Switch to the libev 4 API internally. + ([@tarcieri]) + +------------------------------------------------------------------- Old: ---- nio4r-2.0.0.gem New: ---- nio4r-2.1.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-nio4r.spec ++++++ --- /var/tmp/diff_new_pack.EAODL0/_old 2017-06-02 10:33:52.155353138 +0200 +++ /var/tmp/diff_new_pack.EAODL0/_new 2017-06-02 10:33:52.159352573 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-nio4r # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-nio4r -Version: 2.0.0 +Version: 2.1.0 Release: 0 %define mod_name nio4r %define mod_full_name %{mod_name}-%{version} ++++++ nio4r-2.0.0.gem -> nio4r-2.1.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2016-12-29 03:35:54.000000000 +0100 +++ new/.travis.yml 2017-05-28 22:58:36.000000000 +0200 @@ -2,6 +2,10 @@ sudo: false cache: bundler +before_install: + - gem update --system 2.6.10 + - gem --version + bundler_args: --without development branches: @@ -9,10 +13,11 @@ - master rvm: - - jruby-9.1.6.0 # latest stable - - 2.2.2 - - 2.3.3 - - 2.4.0 + - jruby-9.1.10.0 # latest stable + - 2.2.7 + - 2.3.4 + - 2.4.1 + - ruby-head env: global: @@ -22,6 +27,8 @@ - NIO4R_PURE=true matrix: + allow_failures: + - rvm: ruby-head fast_finish: true notifications: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGES.md new/CHANGES.md --- old/CHANGES.md 2016-12-29 03:35:54.000000000 +0100 +++ new/CHANGES.md 2017-05-28 22:58:36.000000000 +0200 @@ -1,3 +1,21 @@ +## 2.1.0 (2017-05-28) + +* [#130](https://github.com/socketry/nio4r/pull/130) + Add -fno-strict-aliasing flag when compiling C ext. + ([@junaruga]) + +* [#146](https://github.com/socketry/nio4r/pull/146) + Use non-blocking select when a timeout of 0 is given. + ([@tarcieri]) + +* [#147](https://github.com/socketry/nio4r/pull/147) + Update to libev 4.24. + ([@tarcieri]) + +* [#148](https://github.com/socketry/nio4r/pull/148) + Switch to the libev 4 API internally. + ([@tarcieri]) + ## 2.0.0 (2016-12-28) * [#53](https://github.com/socketry/nio4r/pull/53) @@ -144,3 +162,4 @@ [@tarcieri]: https://github.com/tarcieri [@johnnyt]: https://github.com/johnnyt [@UpeksheJay]: https://github.com/UpeksheJay +[@junaruga]: https://github.com/junaruga diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LICENSE.txt new/LICENSE.txt --- old/LICENSE.txt 2016-12-29 03:35:54.000000000 +0100 +++ new/LICENSE.txt 2017-05-28 22:58:36.000000000 +0200 @@ -1,4 +1,4 @@ -Copyright (c) 2011-16 Tony Arcieri +Copyright (c) 2011-2017 Tony Arcieri Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2016-12-29 03:35:54.000000000 +0100 +++ new/README.md 2017-05-28 22:58:36.000000000 +0200 @@ -6,8 +6,8 @@ [![Coverage Status](https://coveralls.io/repos/socketry/nio4r/badge.svg?branch=master)](https://coveralls.io/r/socketry/nio4r) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/socketry/nio4r/blob/master/LICENSE.txt) -_NOTE: This is the 2.x **development** branch of nio4r. For the 1.x **stable** -branch (used by [Rails 5]), please see:_ +_NOTE: This is the 2.x **stable** branch of nio4r. For the 1.x **legacy** branch, +please see:_ https://github.com/socketry/nio4r/tree/1-x-stable @@ -20,15 +20,15 @@ multiple I/O objects for various types of readiness, e.g. ready for reading or writing. -[Rails 5]: https://rubygems.org/gems/actioncable - ## Projects using nio4r * [ActionCable]: Rails 5 WebSocket protocol, uses nio4r for a WebSocket server * [Celluloid::IO]: Actor-based concurrency framework, uses nio4r for async I/O +* [Socketry Async]: Asynchronous I/O framework for Ruby [ActionCable]: https://rubygems.org/gems/actioncable -[Celluloid::IO]: https://github.com/socketry/socketry-io +[Celluloid::IO]: https://github.com/celluloid/celluloid-io +[Socketry Async]: https://github.com/socketry/async ## Goals @@ -50,6 +50,17 @@ * **Java NIO**: JRuby extension which wraps the Java NIO subsystem * **Pure Ruby**: `Kernel.select`-based backend that should work on any Ruby interpreter +## Discussion + +For discussion and general help with nio4r, email +[socketry+subscribe@googlegroups.com][subscribe] +or join on the web via the [Google Group]. + +We're also on IRC at ##socketry on irc.freenode.net. + +[subscribe]: mailto:socketry+subscribe@googlegroups.com +[google group]: https://groups.google.com/group/socketry + ## Documentation [Please see the nio4r wiki](https://github.com/socketry/nio4r/wiki) @@ -82,10 +93,10 @@ ## License -Copyright (c) 2011-2016 Tony Arcieri. Distributed under the MIT License. +Copyright (c) 2011-2017 Tony Arcieri. Distributed under the MIT License. See [LICENSE.txt] for further details. -Includes libev 4.23. Copyright (c) 2007-2016 Marc Alexander Lehmann. +Includes libev 4.24. Copyright (c) 2007-2016 Marc Alexander Lehmann. Distributed under the BSD license. See [ext/libev/LICENSE] for details. [LICENSE.txt]: https://github.com/socketry/nio4r/blob/master/LICENSE.txt Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/libev/Changes new/ext/libev/Changes --- old/ext/libev/Changes 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/libev/Changes 2017-05-28 22:58:36.000000000 +0200 @@ -1,5 +1,10 @@ Revision history for libev, a high-performance and full-featured event loop. +4.24 Wed Dec 28 05:19:55 CET 2016 + - bump version to 4.24, as the release tarball inexplicably + didn't have the right version in ev.h, even though the cvs-tagged + version did have the right one (reported by Ales Teska). + 4.23 Wed Nov 16 18:23:41 CET 2016 - move some declarations at the beginning to help certain retarded microsoft compilers, even though their documentation claims diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/libev/ev.h new/ext/libev/ev.h --- old/ext/libev/ev.h 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/libev/ev.h 2017-05-28 22:58:36.000000000 +0200 @@ -56,11 +56,6 @@ /*****************************************************************************/ -/* pre-4.0 compatibility */ -#ifndef EV_COMPAT3 -# define EV_COMPAT3 1 -#endif - #ifndef EV_FEATURES # if defined __OPTIMIZE_SIZE__ # define EV_FEATURES 0x7c @@ -211,7 +206,7 @@ /*****************************************************************************/ #define EV_VERSION_MAJOR 4 -#define EV_VERSION_MINOR 22 +#define EV_VERSION_MINOR 24 /* eventmask, revents, events... */ enum { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nio4r/extconf.rb new/ext/nio4r/extconf.rb --- old/ext/nio4r/extconf.rb 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/nio4r/extconf.rb 2017-05-28 22:58:36.000000000 +0200 @@ -18,6 +18,8 @@ $defs << "-DHAVE_SYS_RESOURCE_H" if have_header("sys/resource.h") +CONFIG["optflags"] << " -fno-strict-aliasing" + dir_config "nio4r_ext" create_makefile "nio4r_ext" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nio4r/nio4r.h new/ext/nio4r/nio4r.h --- old/ext/nio4r/nio4r.h 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/nio4r/nio4r.h 2017-05-28 22:58:36.000000000 +0200 @@ -12,7 +12,7 @@ struct NIO_Selector { - struct ev_loop *ev_loop; + ev_loop *ev_loop; struct ev_timer timer; /* for timeouts */ struct ev_io wakeup; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nio4r/nio4r_ext.c new/ext/nio4r/nio4r_ext.c --- old/ext/nio4r/nio4r_ext.c 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/nio4r/nio4r_ext.c 2017-05-28 22:58:36.000000000 +0200 @@ -1,6 +1,6 @@ /* - * Copyright (c) 2011 Tony Arcieri. Distributed under the MIT License. See - * LICENSE.txt for further details. + * Copyright (c) 2011-2017 Tony Arcieri. Distributed under the MIT License. + * See LICENSE.txt for further details. */ #include "nio4r.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nio4r/selector.c new/ext/nio4r/selector.c --- old/ext/nio4r/selector.c 2016-12-29 03:35:54.000000000 +0100 +++ new/ext/nio4r/selector.c 2017-05-28 22:58:36.000000000 +0200 @@ -49,8 +49,8 @@ static VALUE NIO_Selector_closed_synchronized(VALUE *args); static int NIO_Selector_run(struct NIO_Selector *selector, VALUE timeout); -static void NIO_Selector_timeout_callback(struct ev_loop *ev_loop, struct ev_timer *timer, int revents); -static void NIO_Selector_wakeup_callback(struct ev_loop *ev_loop, struct ev_io *io, int revents); +static void NIO_Selector_timeout_callback(ev_loop *ev_loop, struct ev_timer *timer, int revents); +static void NIO_Selector_wakeup_callback(ev_loop *ev_loop, struct ev_io *io, int revents); /* Default number of slots in the buffer for selected monitors */ #define INITIAL_READY_BUFFER 32 @@ -359,22 +359,30 @@ static int NIO_Selector_run(struct NIO_Selector *selector, VALUE timeout) { + int ev_run_flags = EVRUN_ONCE; int result; + double timeout_val; selector->selecting = 1; selector->wakeup_fired = 0; - /* Implement the optional timeout (if any) as a ev_timer */ - if(timeout != Qnil) { - /* It seems libev is not a fan of timers being zero, so fudge a little */ - selector->timer.repeat = NUM2DBL(timeout) + 0.0001; - ev_timer_again(selector->ev_loop, &selector->timer); - } else { + if(timeout == Qnil) { + /* Don't fire a wakeup timeout if we weren't passed one */ ev_timer_stop(selector->ev_loop, &selector->timer); + } else { + timeout_val = NUM2DBL(timeout); + if(timeout_val == 0) { + /* If we've been given an explicit timeout of 0, perform a non-blocking + select operation */ + ev_run_flags = EVRUN_NOWAIT; + } else { + selector->timer.repeat = timeout_val; + ev_timer_again(selector->ev_loop, &selector->timer); + } } /* libev is patched to release the GIL when it makes its system call */ - ev_loop(selector->ev_loop, EVLOOP_ONESHOT); + ev_run(selector->ev_loop, ev_run_flags); result = selector->ready_count; selector->selecting = selector->ready_count = 0; @@ -447,12 +455,12 @@ /* Called whenever a timeout fires on the event loop */ -static void NIO_Selector_timeout_callback(struct ev_loop *ev_loop, struct ev_timer *timer, int revents) +static void NIO_Selector_timeout_callback(ev_loop *ev_loop, struct ev_timer *timer, int revents) { } /* Called whenever a wakeup request is sent to a selector */ -static void NIO_Selector_wakeup_callback(struct ev_loop *ev_loop, struct ev_io *io, int revents) +static void NIO_Selector_wakeup_callback(ev_loop *ev_loop, struct ev_io *io, int revents) { char buffer[128]; struct NIO_Selector *selector = (struct NIO_Selector *)io->data; @@ -463,7 +471,7 @@ } /* libev callback fired whenever a monitor gets an event */ -void NIO_Selector_monitor_callback(struct ev_loop *ev_loop, struct ev_io *io, int revents) +void NIO_Selector_monitor_callback(ev_loop *ev_loop, struct ev_io *io, int revents) { struct NIO_Monitor *monitor_data = (struct NIO_Monitor *)io->data; struct NIO_Selector *selector = monitor_data->selector; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nio/version.rb new/lib/nio/version.rb --- old/lib/nio/version.rb 2016-12-29 03:35:54.000000000 +0100 +++ new/lib/nio/version.rb 2017-05-28 22:58:36.000000000 +0200 @@ -1,5 +1,5 @@ # frozen_string_literal: true module NIO - VERSION = "2.0.0" + VERSION = "2.1.0" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-12-29 03:35:54.000000000 +0100 +++ new/metadata 2017-05-28 22:58:36.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: nio4r version: !ruby/object:Gem::Version - version: 2.0.0 + version: 2.1.0 platform: ruby authors: - Tony Arcieri autorequire: bindir: bin cert_chain: [] -date: 2016-12-29 00:00:00.000000000 Z +date: 2017-05-28 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rake @@ -125,7 +125,7 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.6.8 +rubygems_version: 2.6.11 signing_key: specification_version: 4 summary: New IO for Ruby diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/spec_helper.rb new/spec/spec_helper.rb --- old/spec/spec_helper.rb 2016-12-29 03:35:54.000000000 +0100 +++ new/spec/spec_helper.rb 2017-05-28 22:58:36.000000000 +0200 @@ -20,7 +20,7 @@ $current_tcp_port += 1 begin - sock = Timeout.timeout(0.1) { TCPSocket.new("localhost", $current_tcp_port) } + sock = Timeout.timeout(1) { TCPSocket.new("localhost", $current_tcp_port) } rescue Errno::ECONNREFUSED break $current_tcp_port end