tarcieri / rev

Rev is a high performance event library for Ruby built on top of libev

rev / CHANGES
100644 180 lines (100 sloc) 4.933 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
0.3.2:
 
* None yet!
 
0.3.1:
 
* Configurable intervals for Rev::StatWatcher
 
* Fix broken version number :(
 
* Removed warning about spuriously readable sockets from Rev::Listener
 
* Rev::Listener ignores ECONNABORTED from accept_nonblock
 
* Document rationale for EAGAIN/ECONNABORTED handling in Rev::Listener
 
0.3.0:
 
* Add Rev::StatWatcher to monitor filesystem changes
 
* Add Rev::Listener#fileno for accessing the underlying file descriptor
 
* Support for creating Rev::Listeners from existing TCPServers/UNIXServers
 
* Upgrade to libev 3.8
 
* Simplified code loading
 
* Pull in iobuffer gem and change outstanding uses of Rev::Buffer to IO::Buffer
 
* Fix memory leaks resulting from strange semantics of Ruby's xrealloc
 
* Rev::UNIXServer: use path instead of the first argument
 
* Rev::Server-based classes can build off ::*Server objects
 
0.2.4:
 
* Ugh, botched my first release from the git repo. Oh well. Try, try again.
 
0.2.3:
 
* Initial Windows support
 
* Initial Ruby 1.8.7 and 1.9.1 support
 
* Upgrade to libev 3.52
 
* Add checks for sys/resource.h and don't allow getting/setting maxfds if it
  isn't present
 
0.2.2:
 
* Correct a pointer arithmetic error in the buffering code that could result
  in data corruption.
 
* Upgrade to libev 3.41
 
* Relax HTTP/1.1 reponse parser to allow the "reason" portion of the response
  header to be omitted
 
0.2.1:
 
* Upgrade to libev 3.31
 
* Rev::Loop#run_once and Rev::Loop#run_nonblock now return the number of events
  received when they were running
 
* Remove inheritence relationship between Rev::IO and Rev::IOWatcher
 
* Loosen HTTP/1.1 response parser to accept a common malformation in HTTP/1.1
  chunk headers
 
* Add underscore prefix to instance variables to avoid conflicts in subclasses
 
* Remove Rev::SSLServer until it can be made more useful
 
0.2.0:
 
* Initial Ruby 1.8.6 support
 
* Omit Rev::LIBEV_VERSION constant
 
* Catch Errno::ECONNRESET when writing to sockets
 
* SSL support via Rev::SSL, with a small C extension subclassing Ruby's
  OpenSSL::SSL::SSLSocket allowing for non-blocking SSL handshakes
 
* Initial Rev::Utils implementation with #ncpus and methods to query and
  change the maximum number of file descriptors for the current process.
 
* Initial Rev::AsyncWatcher implementation for cross-thread signaling
 
* Handle unspecified Content-Length when encoding is identity in HttpClient
 
* Fix bug in HttpClient processing zero Content-Length
 
* Get rid of method_missing stuff in Rev::HttpClient
 
* Have Rev::HttpClient close the connection on error
 
* Allow Rev::TCPSocket#on_connect to be private when accepting connections
  from a Rev::TCPServer
 
0.1.4:
 
* Calibrate Rev::TimerWatchers against ev_time() and ev_now() when the watcher
  is attached to the loop to ensure that the timeout interval is correct.
 
* Add check to ensure that a Rev::Loop cannot be run from within a callback
 
* Store Rev::Loop.default in a Thread-specific instance variable
 
* Upgrade libev to 0.3.0
 
* Rename BufferedIO to IO
 
* Fixed bug in BufferedIO#write_output_buffer causing it to spin endlessly on
  an empty buffer.
 
* Added has_active_watchers? to Rev::Loop to check for active watchers
 
0.1.3:
 
* Fixed bug in Rev::Buffer read_from and write_to: now rb_sys_fail on failed
  reads/writes.
 
* Change Rev::Buffer memory pools to purge on a periodic interval, rather than
  whenever the GC marks the object.
 
* Fix bug in tracking the active watcher count. Factor shared watcher behavior
  from rev_watcher.h to rev_watcher.c.
 
0.1.2:
 
* Commit initial specs
 
* Improve RDoc for the library
 
* Eliminate "zero copy" writes as they bypass the event loop
 
* Added Rev::Buffer C extension to provide high speed buffered writes
 
* Implement Rev::TCPSocket#peeraddr to improve compatibility with Ruby sockets
 
* Added Rev::Listener.close for clean shutdown of a listener
 
* Rev::Loop.default used to call ev_loop_default() (in C). However, this
  registers signal handlers which conflict with Ruby's own. Now the behavior
  has been changed to return a thread-local singleton of Rev::Loop.
 
* Creating a new Rev::TCPListener will disable reverse lookups in BasicSocket
 
* Made backlog for Rev::TCPListener user-definable
 
* Rev::TCPSocket now implements an on_resolve_failed callback for failed DNS
  resolution. By default it's aliased to on_connect_failed.
 
* Changed event_callbacks to use instance_exec rather than passing the
  watcher object as an argument. Documented use of defining an event
  callback as a block
 
* Subsecond precision for Rev::TimerWatchers
 
0.1.1:
 
* Added Rev::HttpClient, an asynchronous HTTP/1.1 client written on top of
  the Rev::TCPSocket class
 
* Imported HTTP response parser from the RFuzz project
 
* Added exception handling for Errno::ECONNRESET and Errno::EAGAIN
 
* Fixed bugs in buffered writer which resulted in exceptions if all data
  couldn't be written with a nonblocking write.
 
0.1.0:
 
* Initial public release