Raindrops Aggregate Aggregate::LastDataRecv Aggregate::PMQ InetDiagSocket LastDataRecv Linux ListenStats Middleware Middleware::Proxy Struct TCP_Info Watcher

raindrops 0.20.1 / 2023-02-25 00:19 UTC

Stats for SO_REUSEPORT sockets are now handled properly.
Thanks to Dale Hamel for the patches.

Dale Hamel (2):
      Fix queue stats for sockets with SO_REUSEPORT
      Fix off by one error in test

raindrops 0.20.0 / 2021-12-06 23:41 UTC

Raindrops may now use file-backed mmap() rather than anonymous
memory.  Thanks to KJ Tsanaktsidis for the patch:

The documentation is also updated to note our mail archives are now
available via IMAP(S).

raindrops 0.19.2 / 2021-05-25 23:13 UTC

This release fixes compatibility with GC.compact on Ruby 3.x
when using ListenStats on Linux.  The listener stats
functionality is rarely used and does not affect most users
who just have raindrops installed for shared atomic counters.

raindrops 0.19.1 / 2020-01-08 09:31 UTC

This release fixes some warnings on newer Rubies.

We're no longer on since it's due
for expiry and I can't pay extortionists for a .org, so
s/ for now, and be prepared to move again
when extortionists move onto extorting the .net TLD.

      doc: switch homepage to dark216
      ext/raindrops/extconf: fix cflags reset on ancient CC
      fixes for newer rubies
      replace with

raindrops 0.19.0 - Rack 2.x middleware compatibility / 2017-08-09 23:52 UTC

This release fixes Rack 2.x compatibility for the few users of
Thanks to Dmytro Shteflyuk for this release.

No need to upgrade unless you use Raindrops::Middleware with
Rack 2.x.

There's also a few minor, inconsequential cleanups.

Dmytro Shteflyuk (1):
      Properly override respond_to? in Raindrops::Middleware::Proxy

Eric Wong (2):
      Ruby thread compatibility updates
      tcp_info: remove unnecessary extconf.h include

raindrops 0.18.0 / 2017-03-23 02:44 UTC

The most notable feature of this release is the addition of
FreeBSD and OpenBSD TCP_INFO support.  This includes the
Raindrops::TCP for portably mapping TCP state names to
platform-dependent numeric values:

Thanks to Jeremy Evans and Simon Eskildsen on the mailing list for inspiring
these changes to raindrops.

There's also a few internal cleanups, and documentation
improvements, including some fixes to the largely-forgotten
Raindrops::Aggreage::PMQ class:

20 changes since 0.17.0:

      test_inet_diag_socket: fix Fixnum deprecation warning
      TODO: add item for IPv6 breakage
      ext: fix documentation for C ext-defined classes
      TCP_Info: custom documentation for #get!
      TypedData C-API conversion
      test_watcher: disable test correctly when aggregate is missing
      tcp_info: support this struct under FreeBSD
      define Raindrops::TCP hash for TCP states
      linux_inet_diag: reduce stack usage and simplify
      avoid reading errno repeatedly
      aggregate/pmq: avoid false sharing of lock buffers
      aggregate/pmq: remove io-extra requirement
      aggregate/pmq: avoid File#stat allocation
      Merge remote-tracking branch 'origin/freebsd'
      Merge remote-tracking branch 'origin/aggregate-pmq'
      doc: remove private email support address
      doc: update location of TCP_INFO-related stuff
      build: avoid olddoc for building the RubyGem
      doc: document Raindrops::TCP hash
      aggregate/pmq: update version numbers for Ruby and Linux

raindrops 0.17.0 - rack 2.x updates / 2016-07-31 15:19 UTC

This release features minor updates to support rack 2.x
while maintaining support for rack 1.2 and later.
As a result, Ruby 1.8.6 compatibility is gone, but
Ruby 1.8.7 probably still works, for now.

There's also a minor warning fix, doc updates, and
the homepage now supports HTTPS (HTTP remains supported)

5 changes since raindrops 0.16.0:
      drop Rack::Utils.bytesize dependency
      gemspec: bump Rack dependency
      linux_inet_diag: GCC attribute format check
      use HTTPS and move homepage to
      examples: add yahns config, zbatery is abandoned

raindrops 0.16.0 - minor fixes and workarounds / 2016-02-29 12:36 UTC

There's mainly a fix/workaround for Ruby 2.3 now returning
locale-aware strings for File.readlink and our test suite
using strange paths allowed by *nix.

tcp_listener_stats won't return "true" object placeholders
if stats are configured for a non-existent listener.

There are also minor optimizations for Ruby 2.2+ (at the expense
of 2.1 and earlier).

And the usual round of minor tweaks and doc updates.

10 changes since v0.15.0:
      gemspec: avoid circular dependency on unicorn
      remove optimizations which made sense for older rubies
      linux: workaround Ruby 2.3 change
      linux: remove Pathname stdlib dependency
      add .gitattributes for Ruby method detection
      middleware: minor bytecode size reduction
      doc: update URLs and references
      README: remove indentation from URLs in RDoc
      linux: tcp_listener_stats drops "true" placeholders
      build: use '--local' domain for dev gem install

raindrops 0.15.0 - non-glibc compat fix on Linux / 2015-07-22 00:30 UTC

Thanks to Doug Forster for sending us the report.
No other fixes

* check for the existence of linux/tcp.h

raindrops 0.14.0 - misc doc updates / 2015-06-25 21:50 UTC

Eric Wong (7):
      linux_inet_diag: annotate memory freeing on diag errors
      README: trim intro and update license
      modernize packaging and documentation
      move mailing list to
      linux_inet_diag: clarify *fprintf usage without GVL
      TODO: add item for unix_diag and udp_diag
      linux_inet_diag: fix Wshorten-64-to-32 warnings

Hleb Valoshka (1):
      Add setup and teardown for ipv6 tests

raindrops 0.13.0 several minor fixes and improvements / 2014-02-18 20:59 UTC

Most notably, this release is necessary for Ruby 2.2 (dev).
Thanks to Koichi Sasada for the bug report!

Eric Wong (5):
      Rakefile: remove raa_update task
      last_data_recv: do not assume Unicorn includes all constants
      raindrops.gemspec: add wrongdoc dev dependency
      linux_inet_diag: fix Ruby 2.2 (dev) build
      license: use LGPLv2.1 or later (was LGPL (2.1|3.0)-only)

Hleb Valoshka (1):
      Remove Scope IDs from IPv6 addresses.

raindrops 0.12.0 - compatibility fixes / 2013-09-02 10:33 UTC

This release fixes builds on systems where compilers target i386
(and not later x86 systems).  There are also minor improvements for
Ruby 2.1.0dev and Rubinius.

Eric Wong (5):
      doc: add email address to generated doc/site
      README: update regarding Ruby support status
      extconf: try harder for gcc atomics in i386-configured systems
      linux_inet_diag: improve compatibility with newer GCs
      test_watcher: fix for Ruby trunk r40195 and later

raindrops 0.11.0 - minor fixes improvements / 2013-04-20 23:10 UTC

Eric Wong (7):
      raindrops: favor configured processor count over online count
      watcher: set Content-Type via assignment
      Linux::TCP_Info: implement #get! instance method
      linux_inet_diag: avoid unnecessary sockaddr initialization
      .gitignore: add .rbx
      switch back to gemspec development dependencies
      linux_inet_diag: better align listener_stats struct

Lawrence Pit (1):
      Watcher: Use relative paths in HTML links

raindrops 0.10.0 - minor feature updates / 2012-06-19 08:30 UTC

Improvements to the Unix domain socket handling and small
bugfixes throughout.

Support for the "unix_diag" facility in Linux 3.3+ is planned
but not yet implemented (patches to

Brian Corrigan (1):
      resolve symlinks to Unix domain sockets

Eric Wong (6):
      unix_listener_stats follows and remembers symlinks
      middleware/proxy: favor __send__ for method dispatch
      unix: show zero-value stats for idle listeners
      test_watcher: fix incorrect request/date comparison
      watcher: sort index of listener listing
      watcher: do not require Rack::Head for HEAD response

See "git log v0.9.0..v0.10.0" for full details

raindrops 0.9.0 - minor middleware/proxy update / 2012-05-21 00:06 UTC

Raindrops::Middleware::Proxy now forwards method_missing
to the proxied body object.  This allows compatibility
with non-standard Rack extensions employed by some
middlewares, applications, or servers.

Thanks to Ben Somers for the feature!

raindrops 0.8.1 - compatibility fixes / 2012-05-12 05:58 UTC

This release fixes a build problem found under a current SmartOS.  This
release also runs successfully on FreeBSD 9.0 under both x86-64 and

There are also documentation updates from Aman Gupta and a test suite
fix from Jeremy Evans for OpenBSD.

raindrops fully supports unicorn on recent versions of FreeBSD, OpenBSD,
SmartOS, and possibly other Free Software systems.  Portability reports
and fixes for Free Software systems is greatly appreciated at

Non-Free systems will never be supported.

raindrops requires the Linux 2.6.18 or later for full functionality
(which unicorn does not require).  Future releases will take advantage
of the unix_diag functionality found in the Linux 3.3 (and later)

raindrops 0.8.0 - watcher updates / 2011-10-14 22:00 UTC

There are various updates to the Raindrops::Watcher Rack app.
Most notably, the timestamp where the a statistic first and last
hit its peak value (active/queued connections) is captured.

As usual, the latest Raindrops::Watcher is running at:

raindrops 0.7.0 - FreeBSD fix, code cleanups / 2011-06-27 07:26 UTC

This release fixes a build issue on FreeBSD.  There are various
documentation and code cleanups, too.

raindrops 0.6.1 - fix build on non-Linux / 2011-03-21 22:31 UTC

TCP_INFO support couldn't compile under non-Linux, this was
broken since 0.5.0 when TCP_INFO support was introduced.

Thanks to Ben Bleything for the report.

raindrops 0.6.0 - polishing up the last release / 2011-03-21 21:46 UTC

Following up the huge 0.5.0 release, 0.6.0 makes
some minor improvements:

* minor UI/UX improvements for Watcher Rack app
* set close-on-exec by default for inet_diag sockets
* inet_diag build fixes for newer GNU libc6
* --with-atomic_ops-dir= build option added

raindrops 0.5.0 - more Linux extras! / 2011-03-17 03:13 UTC

Portable changes:
* Raindrops are now resizable within the limits of system page size
* Raindrops::Middleware proxies +to_path+ in response bodies
* More documentation

Linux-only changes:
* Raindrops::LastDataRecv[1] Rack application
* Raindrops::Watcher[2] Rack application
* Raindrops::TCP_Info[3] class for capturing TCP connection stats
* IPv6 support for inet_diag
* faster inet_diag stats for multiple sockets

There is also a demo server running the Watcher and Middleware
components.  It's capped to 30 concurrent users, so go easy on



raindrops 0.4.1 - more portability! / 2010-09-26 06:49 UTC

Rubinius 1.1.0 support is complete.  Atomic operations
are now available under FreeBSD 7.0 now.

Full changelog below:

    commit 8a2a725a4ad074af493e5aa075155eda8b1d6be7
    Author: Eric Wong <>
    Date:   Sat Sep 25 00:14:48 2010 -0700

    force -march=i486 where GCC is targeted for i386

    Nobody uses i386 anymore (especially not with Ruby!),
    but some systems like FreeBSD 7.0 still target GCC at
    i386 by default, so we force GCC to use a slightly
    more modern instruction set and allow it to use
    atomic builtins.

    commit 256cc7c8ffb441dcf2d2a2da3bbbcc82546962d9
    Author: Eric Wong <>
    Date:   Sat Sep 25 00:01:46 2010 -0700

    disable Linux-only code on non-Linux

    This allows us to build and link correctly on FreeBSD 7.0

    commit 22a5a39d75faa890048d07ae4ea0d494acd414ce
    Author: Eric Wong <>
    Date:   Sat Sep 25 06:25:42 2010 +0000

    linux: workaround missing RSTRUCT* macros in rbx

    Rubinius does not include macros for accessing
    Struct members in the C API.


raindrops 0.4.0 - flowing into new systems! / 2010-09-21 22:32 UTC

Non-GCC 4.x users may use the libatomic_ops[1] package to
compile Raindrops.  Memory efficiency is improved for modern
glibc users with run-time cache line size detection, we no
longer assume 128 byte cache lines.

[1] -

raindrops v0.3.0 - LGPL v2.1 and v3.0 / 2010-07-10 22:29 UTC

Raindrops is now licensed under the LGPLv2.1 or LGPLv3 (from
LGPLv3-only) to allow bundling in GPLv2-only applications.

There are small documentation updates and updated examples

raindrops 0.2.0 - raining penguins! / 2010-05-05 00:35 UTC

For servers running Unicorn 0.98.0 (and derivative servers)
under Linux, :listeners no longer needs to be passed explicitly
when configuring the Rack middleware.

Some small documentation updates and cleanups, too.

raindrops 0.1.0 / 2010-04-08 00:45 UTC

initial release

mail archives:
source code: git clone
	torsocks git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/raindrops.git