kgio 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,532 +1,811 @@
1
- ChangeLog from git://git.bogomips.org/kgio.git ()
1
+ ChangeLog from http://bogomips.org/kgio.git
2
2
 
3
- commit f093312ad1ed336363f352991b6b99d96f7aed1d
4
- Author: Eric Wong <normalperson@yhbt.net>
5
- Date: Thu Nov 18 17:16:53 2010 -0800
6
-
7
- kgio 2.0.0 - major internal API changes
8
-
9
- (no code changes from 2.0.0pre1)
10
-
11
- This release should make Kgio easier and more consistent
12
- to use across a variety of libraries/applications.
13
-
14
- The global Kgio.wait_*able(=) accessor methods are gone in favor
15
- of having default kgio_wait_readable and kgio_wait_writable
16
- methods added to all Kgio-using classes. Sub-classes may (and
17
- are encouraged to) redefine these if needed.
18
-
19
- Eric Wong (7):
20
- expand Kgio::*#kgio_read! documentation
21
- prefer symbolic names for waiting read/writability
22
- EOFError message matches Ruby's
23
- README: Gemcutter => RubyGems.org
24
- update documentation with mailing list info
25
- add default kgio_wait_*able methods
26
- switch entirely to kgio_wait_*able methods
27
-
28
- commit edfa7e60de5556b6abc9febe6a21e12dadbafd0b
29
- Author: Eric Wong <normalperson@yhbt.net>
30
- Date: Thu Nov 18 15:42:27 2010 -0800
31
-
32
- Rakefile: list prerelease tags as well
33
-
34
- Since we do prerelease nowadays before real ones.
35
-
36
- commit d78a2075bdb0a30bf0064d2857011c330cc0d09e
37
- Author: Eric Wong <normalperson@yhbt.net>
38
- Date: Thu Nov 18 15:38:12 2010 -0800
39
-
40
- move website to bogomips.org
41
-
42
- This project is useful enough for others and to stand alone
43
- without needing to be associated with Unicorn.
44
-
45
- commit 28070c522aff233eadb7e167f8d4e8122cd0bb47
46
- Author: Eric Wong <normalperson@yhbt.net>
47
- Date: Thu Nov 18 15:15:40 2010 -0800
48
-
49
- kgio 2.0.0pre1 - major internal API changes
50
-
51
- This release should make Kgio easier and more consistent
52
- to use across a variety of libraries/applications.
53
-
54
- The global Kgio.wait_*able(=) accessor methods are gone in favor
55
- of having default kgio_wait_readable and kgio_wait_writable
56
- methods added to all Kgio-using classes. Sub-classes may (and
57
- are encouraged to) redefine these if needed.
58
-
59
- Eric Wong (7):
60
- expand Kgio::*#kgio_read! documentation
61
- prefer symbolic names for waiting read/writability
62
- EOFError message matches Ruby's
63
- README: Gemcutter => RubyGems.org
64
- update documentation with mailing list info
65
- add default kgio_wait_*able methods
66
- switch entirely to kgio_wait_*able methods
67
-
68
- commit c69955e64648ab6a3471a54f7885a320428682f9
69
- Author: Eric Wong <e@yhbt.net>
70
- Date: Thu Nov 18 14:37:05 2010 -0800
71
-
72
- switch entirely to kgio_wait_*able methods
73
-
74
- This removes the global Kgio.wait_*able accesors and requires
75
- each class to define (or fall back to) the Kgio::DefaultWaiters
76
- methods.
77
-
78
- commit f1b497e601ed2acb54f75dc989d0a5ec7afebca0
79
- Author: Eric Wong <e@yhbt.net>
80
- Date: Thu Nov 18 13:38:32 2010 -0800
81
-
82
- add default kgio_wait_*able methods
83
-
84
- It makes it easier for people to use certain overrides without
85
- killing other methods. This is the first step in fixing
86
- problems people were having with dalli 0.11.1+ while running
87
- Unicorn.
88
-
89
- commit 827ad6b4fba768a5cac8fb4e83fbbf61cf7a3194
90
- Author: Eric Wong <e@yhbt.net>
91
- Date: Mon Nov 15 10:33:55 2010 -0800
92
-
93
- update documentation with mailing list info
94
-
95
- We're a real project, apparently, so it can have its
96
- own mailing list.
97
-
98
- commit fd88eae588c1e715dcaf3a1a000391cc13481e02
99
- Author: Eric Wong <e@yhbt.net>
100
- Date: Mon Nov 15 10:22:49 2010 -0800
101
-
102
- README: Gemcutter => RubyGems.org
103
-
104
- That's the new name for it and it's official
105
-
106
- commit 8615a3f9554df0fd7f7f088cd49cf1e3be49de9f
107
- Author: Eric Wong <e@yhbt.net>
108
- Date: Fri Nov 12 20:25:50 2010 -0800
109
-
110
- EOFError message matches Ruby's
111
-
112
- This makes messages appear less different than Ruby
113
- when using kgio_read!
114
-
115
- Requested-by: Mike Perham
116
-
117
- commit 2772ed8bfe108b66b7493bc5cb0c40ddeb1ca57d
118
- Author: Eric Wong <e@yhbt.net>
119
- Date: Fri Nov 5 09:01:08 2010 +0800
120
-
121
- prefer symbolic names for waiting read/writability
122
-
123
- There's no point in using constants that point to symbols
124
- instead of just the symbols themselves.
125
-
126
- commit bf3b507791403811bece9dff915ca10757bca519
127
- Author: Eric Wong <e@yhbt.net>
128
- Date: Thu Oct 28 21:02:31 2010 +0000
129
-
130
- expand Kgio::*#kgio_read! documentation
131
-
132
- If the author can forget why it was written, so can
133
- the rest of the world.
134
-
135
- commit f4d08a07a02393cca5ddd1277acc4f95c83307ff
136
- Author: Eric Wong <e@yhbt.net>
137
- Date: Fri Oct 8 14:55:16 2010 -0700
138
-
139
- kgio 1.3.1 - fix zero-length reads
140
-
141
- kgio_read and kgio_tryread will now return an empty string when
142
- a length of zero is specified instead of nil (which would signal
143
- an EOF). This emulates the behavior of IO#read, IO#readpartial,
144
- IO#sysread, IO#read_nonblock in core Ruby for consistency.
145
-
146
- commit d225ede82d820d045bd7cfb826f444cf6601577c
147
- Author: Eric Wong <normalperson@yhbt.net>
148
- Date: Fri Oct 8 02:53:38 2010 -0700
149
-
150
- return empty string on length=0
151
-
152
- This matches behavior of all the core Ruby methods.
153
-
154
- commit e4599227f0da0f652cbcb52838e631d7384dcd0d
155
- Author: Eric Wong <e@yhbt.net>
156
- Date: Thu Oct 7 20:02:40 2010 -0700
157
-
158
- kgio 1.3.0 - bug and usability fixes
159
-
160
- * make Kgio::WaitWritable and Kgio::WaitReadable symbols
161
- * trywrite: fix stupid off-by-one error causing corrupt writes
162
- on retries
163
-
164
- commit f5fc35221d37141b0f72278c7b969211410e94c0
165
- Author: Eric Wong <e@yhbt.net>
166
- Date: Thu Oct 7 20:00:09 2010 -0700
167
-
168
- tests: don't trust what I think I know about Ruby
169
-
170
- case/when and === didn't actually work as I expected
171
- them to.
172
-
173
- commit 2152188f41bf2a5067e84a4404b48b2282a9dd55
174
- Author: Eric Wong <e@yhbt.net>
175
- Date: Thu Oct 7 19:56:57 2010 -0700
176
-
177
- trywrite: fix stupid off-by-one error causing corrupt writes
178
-
179
- Oops!
180
-
181
- commit c448ad898ecb7f354a32a320294da4727fc9af52
182
- Author: Eric Wong <e@yhbt.net>
183
- Date: Thu Oct 7 19:55:49 2010 -0700
184
-
185
- make WaitWritable and WaitReadable symbols
186
-
187
- This makes them easier to compare with === when used
188
- in case/when statements in Ruby
189
-
190
- commit 49f0b98c69f1f0bf637953d0bfc96b764f00ab9b
191
- Author: Eric Wong <e@yhbt.net>
192
- Date: Thu Oct 7 07:15:49 2010 +0000
193
-
194
- kgio 1.2.1 - doc and *BSD workarounds
195
-
196
- This fixes our accept4() wrapper which did not work as expected
197
- on some *BSD-based systems due to fcntl(fd, F_GETFL) returning
198
- false information. Linux 2.6+ users are unnaffected, including
199
- those without accept4().
200
-
201
- Also some RDoc fixes.
202
-
203
- commit 03344bb763f5269afe7fafd56a47270719c7ef9e
204
- Author: Eric Wong <e@yhbt.net>
205
- Date: Thu Oct 7 07:14:07 2010 +0000
206
-
207
- doc: fix RDoc generation
208
-
209
- Oops, completely broken by the splitting of the code.
210
-
211
- commit 637317eb479525dca543eda7a8977410bc43b832
212
- Author: Eric Wong <e+07380@yhbt.net>
213
- Date: Wed Oct 6 14:08:35 2010 -0700
214
-
215
- accept4: workaround (P)OS X bug w/O_NONBLOCK
216
-
217
- Apparently fcntl(fd, F_GETFL) can return falsely return the
218
- O_NONBLOCK flag without actually having it set in the kernel.
219
- This is totally broken on the part of the OS.
220
-
221
- commit ca76c75f8a24d0cd6828fe16ca3790a277b35f8d
222
- Author: Eric Wong <e+07380@yhbt.net>
223
- Date: Wed Oct 6 14:06:27 2010 -0700
224
-
225
- build: pick on on modified extension files
226
-
227
- We build more than one file nowadays.
228
-
229
- commit 65f96b7750616bc210397c16eea40961e578a788
230
- Author: Eric Wong <e@yhbt.net>
231
- Date: Wed Oct 6 11:51:04 2010 -0700
232
-
233
- doc: fix typo in Kgio.accept_cloexec= doc
234
-
235
- oops...
236
-
237
- commit 414dd17f1009c571e2d7657721271756e3d4dd8e
238
- Author: Eric Wong <e@yhbt.net>
239
- Date: Tue Oct 5 16:09:40 2010 -0700
240
-
241
- kgio 1.2.0 - cleanups and minor improvements
242
-
243
- The C extension is now split into several files for
244
- ease-of-maintenance.
245
-
246
- Slightly more common, client-triggerable exceptions (EOFError,
247
- Errno::EPIPE, Errno::ECONNRESET) are now less expensive as they
248
- are generated without backtraces.
249
-
250
- commit e085bb9600b190692beb5efc85656ebf127ae08c
251
- Author: Eric Wong <e@yhbt.net>
252
- Date: Tue Oct 5 15:45:16 2010 -0700
253
-
254
- generate empty backtraces for EPIPE and ECONNRESET
255
-
256
- Malicious clients may disconnect during big writes to cause
257
- EPIPE and ECONNRESET exceptions. Generating backtraces can be
258
- expensive with Ruby, so mitigate the DoS vector by lowering the
259
- cost of generating an exception.
260
-
261
- commit b168cc894037620cab82fa82f3ab37a3aab81570
262
- Author: Eric Wong <e@yhbt.net>
263
- Date: Tue Oct 5 15:26:57 2010 -0700
264
-
265
- add kgio_read! methods which may raise EOFError
266
-
267
- Except EOFError is gently raised to not include a huge
268
- backtrace. Large backtraces can be a performance problem on
269
- busy servers that malicious clients may exploit to deny service.
270
-
271
- commit 870ada92db7071c7982913e508ac35b97d6e8761
272
- Author: Eric Wong <e@yhbt.net>
273
- Date: Tue Oct 5 11:45:02 2010 -0700
274
-
275
- GNUmakefile: use portable tar invocation
276
-
277
- We've been spoiled by GNU tar.
278
-
279
- commit 2a6115a89d5c95428bd6c3e0bc10e5a3a4c3c3be
280
- Author: Eric Wong <e@yhbt.net>
281
- Date: Wed Sep 29 18:25:58 2010 -0700
282
-
283
- refactor and split into separate files
284
-
285
- Making the code easier to read and navigate. This also
286
- frees us from having to use the stupid A4_ prefix for
287
- accept4(2) flags since it conflicts with the socket(2)
288
- ones.
289
-
290
- commit 8fe89997453d6c530c3f5e08bc9c1da40a621248
291
- Author: Eric Wong <e@yhbt.net>
292
- Date: Wed Sep 29 17:13:21 2010 -0700
293
-
294
- Make kgio_trywrite more aggressive with retrying
295
-
296
- Partial writes can be retried until completely denied with
297
- EAGAIN. Often times, it is beneficial to retry immediately
298
- after a partial write because the kernel may allocate more
299
- buffers or the reader can drain the buffers.
300
-
301
- This helps the caller avoid crossing the Ruby <-> C boundary
302
- more than necessary.
303
-
304
- commit 39c851e595970a2349a8a39878afd94a3324e102
305
- Author: Eric Wong <e@yhbt.net>
306
- Date: Tue Sep 28 18:16:53 2010 -0700
307
-
308
- kgio 1.1.0 - flexible accept methods
309
-
310
- * an alternate class now be returned by accept/tryaccept
311
- by setting "Kgio.accept_class ="
312
-
313
- commit 911f6ab306aff1e24c9c570eeae33923fa1b99d9
314
- Author: Eric Wong <e@yhbt.net>
315
- Date: Tue Sep 28 18:04:51 2010 -0700
316
-
317
- alternate classes may be returned by accept/tryaccept
318
-
319
- These can be useful for avoiding wrapper objects and
320
- also allows users to more easily try different things
321
- without stepping on others' toe^H^H^Hclasses.
322
-
323
- commit 526b4bd48a20a34ef5959fdc4aa580d5f9199652
324
- Author: Eric Wong <e@yhbt.net>
325
- Date: Mon Sep 27 19:59:34 2010 -0700
326
-
327
- kgio 1.0.1 - compatibility fixes
328
-
329
- * add compatibility for ancient Rubies (1.8.6)
330
- * linux: fix accept4() support for newer Linux
331
-
332
- commit 20cbc0355104470fb433dd13e87a5d5c7e888ab1
333
- Author: Eric Wong <e@yhbt.net>
334
- Date: Tue Sep 28 02:56:41 2010 +0000
335
-
336
- linux: fix accept4() support for newer Linux
337
-
338
- Oops :x Tested on Debian sid.
339
-
340
- commit 24f1d168eb0937f0586c45b266bcd208431f0107
341
- Author: Eric Wong <e@yhbt.net>
342
- Date: Mon Sep 27 18:06:34 2010 -0700
343
-
344
- add compatibility for ancient Rubies
345
-
346
- This is tested on Ruby 1.8.6-p114, but may work
347
- for 1.8.5, too. Ugh, people ought to upgrade.
348
-
349
- commit e4d204c86e9420023ba3e4d8dbeb6b3fea8d6cf7
350
- Author: Eric Wong <e@yhbt.net>
351
- Date: Tue Sep 28 00:27:44 2010 +0000
352
-
353
- kgio 1.0.0 - initial release
354
-
355
- Documentation and release infrastructure updates
356
- and such...
357
-
358
- commit 8984b9556a3493570fbb4f747fce712d58f2cdd8
359
- Author: Eric Wong <e@yhbt.net>
360
- Date: Tue Sep 28 00:07:43 2010 +0000
361
-
362
- doc: TODO update
363
-
364
- commit 2c64a1fc07d3b9a80d112e3b0e2baa7ec29c2f47
365
- Author: Eric Wong <e@yhbt.net>
366
- Date: Tue Sep 28 00:03:39 2010 +0000
367
-
368
- read/write: account for buffer changes during wait
369
-
370
- It's possible for applications to modify the buffer during
371
- reads and writes, so make a best effort to account for those.
372
-
373
- commit f2ea9918655e8ee0576bee2950d16485031fc361
374
- Author: Eric Wong <e@yhbt.net>
375
- Date: Mon Sep 27 23:59:59 2010 +0000
376
-
377
- tests: fix broken monster trywrite test
378
-
379
- Oops, use random data so it's easier to detect this.
380
-
381
- commit 7abc0eb3dd804c2e65660b7dd9c828df0e03b80a
382
- Author: Eric Wong <e+absinthe@yhbt.net>
383
- Date: Mon Sep 27 15:09:44 2010 -0700
384
-
385
- test_tcp*read_write: use blocking kgio_accept in setup
386
-
387
- Some OSes (FreeBSD 7.0) do not seem to setup
388
- connections as quickly.
389
-
390
- commit 95d2eae6a4da34c504427af6ae0ab4c8c70c0ce5
391
- Author: Eric Wong <e+absinthe@yhbt.net>
392
- Date: Mon Sep 27 15:09:43 2010 -0700
393
-
394
- set blocking flag before blocking IO#read
395
-
396
- Some older Rubies may not behave correctly otherwise
397
-
398
- commit 0806cac89f9d0e169b6c1e4da68c1ad66daa23ae
399
- Author: Eric Wong <e@yhbt.net>
400
- Date: Mon Sep 27 23:16:53 2010 +0000
401
-
402
- tess: ensure buffer is cleared on failures
403
-
404
- No need to leak data.
405
-
406
- commit 50b86bf23063f3e6c3777b39c9464f73ccfd6ef5
407
- Author: Eric Wong <e@yhbt.net>
408
- Date: Mon Sep 27 22:55:52 2010 +0000
409
-
410
- more documentation
411
-
412
- Somebody's gotta do it...
413
-
414
- commit 5123d66fe0b2dad67539a20fe5b91f5b9afd814a
415
- Author: Eric Wong <e@yhbt.net>
416
- Date: Mon Sep 27 16:56:13 2010 +0000
417
-
418
- avoid initiating syscalls before rb_io_wait_*
419
-
420
- Some Ruby implementations (Rubinius) may call lseek
421
- and clobber the intended errno when looking up the
422
- open file, causing rb_io_wait_* functions to fail.
423
-
424
- commit 6c818b0b6f76ef733679bcea1024142b4ef3ce00
425
- Author: Eric Wong <e@yhbt.net>
426
- Date: Mon Sep 27 01:13:30 2010 +0000
427
-
428
- add kgio_tryaccept, kgio_accept _really_ blocks
429
-
430
- We'll stick with the "try" prefix if we're going to be
431
- non-blocking. kgio_accept will favor a blocking accept() call
432
- where it's possible to release the GVL, allowing it to avoid
433
- thundering herd problems. Otherwise it'll use thread-safe
434
- blocking under Ruby 1.8.
435
-
436
- commit f81cb3c05a0eb46ec61ceb295b51ead16e6a0da4
437
- Author: Eric Wong <e@yhbt.net>
438
- Date: Mon Sep 27 00:57:14 2010 +0000
439
-
440
- use SOCK_NONBLOCK for socket(2) if possible
441
-
442
- This saves us a relatively expensive fcntl() system call.
443
-
444
- commit 87cf3ce6185b9138032a5af53cecae98f8c93564
445
- Author: Eric Wong <e@yhbt.net>
446
- Date: Mon Sep 27 00:24:50 2010 +0000
447
-
448
- connect: no do not leak descriptors on failure
449
-
450
- We cannot raise exceptions and expect GC to clean up
451
- after us until we've created an actual IO object.
452
-
453
- commit 6fbde1518578dd1b828efcecaf2caf893bddc110
454
- Author: Eric Wong <e@yhbt.net>
455
- Date: Mon Sep 27 00:11:43 2010 +0000
456
-
457
- "start" singleton methods for non-blocking connect
458
-
459
- These initiate (but do not wait for) non-blocking connects.
460
-
461
- commit fdfecc6d815bab8dfc1d8ad6758a66d44ab51e31
462
- Author: Eric Wong <e@yhbt.net>
463
- Date: Sun Sep 26 07:51:12 2010 +0000
464
-
465
- introduce kgio_try* methods
466
-
467
- Avoid altering behavior based on globals that
468
- Kgio.wait_{read,writ}able stored in, since that's too confusing.
469
- The non-try variants are closer to the normal IO read/write
470
- methods, except they can be more easily plugged into alternate
471
- reactors and event frameworks.
472
-
473
- commit d8ee79e1e5c6e6908009213324db25cf41c583ce
474
- Author: Eric Wong <e@yhbt.net>
475
- Date: Sat Sep 25 17:55:07 2010 +0000
476
-
477
- kgio_read returns nil on EOF
478
-
479
- Just like IO#read
480
-
481
- commit af03e4471de3d3b91eec16e26e93a84d4a717116
482
- Author: Eric Wong <e@yhbt.net>
483
- Date: Sat Sep 25 17:47:13 2010 +0000
484
-
485
- split out reusable bits into separate headers
486
-
487
- No point in cluttering up the meat of our code.
488
-
489
- commit db53263856d864ba6273e6cac73011f699509d71
490
- Author: Eric Wong <e+absinthe@yhbt.net>
491
- Date: Sat Sep 25 01:36:13 2010 -0700
492
-
493
- only use MSG_DONTWAIT under Linux
494
-
495
- MSG_DONTWAIT is less consistently implemented/supported on other
496
- platforms on stream sockets, so fallback to fcntl() + read()/write()
497
- for stream sockets. This also fixes our previously broken support
498
- of non-MSG_DONTWAIT systems.
499
-
500
- commit a82dc40c2a509c4ab692da34b572693f243fbfae
501
- Author: Eric Wong <e+absinthe@yhbt.net>
502
- Date: Sat Sep 25 01:36:12 2010 -0700
503
-
504
- write/send may fail with ECONNRESET
505
-
506
- Tested on FreeBSD 7.0
507
-
508
- commit 0c60192621303f5e4ebd46d43a058de48126bc8a
509
- Author: Eric Wong <e+absinthe@yhbt.net>
510
- Date: Sat Sep 25 01:36:11 2010 -0700
511
-
512
- fix missing netinet/in.h include
513
-
514
- This is needed for FreeBSD 7.0, at least.
515
-
516
- commit 0beb82437f4ab0b8422e225080b234361092315e
517
- Author: Eric Wong <e@yhbt.net>
518
- Date: Sat Sep 25 08:15:13 2010 +0000
519
-
520
- beef up the test suite
521
-
522
- We need to test server <-> client interaction
523
- more thoroughly since some systems don't implement
524
- everything right.
525
-
526
- commit 460e6b025896dee64b39d194d4c1a536129654de
527
- Author: Eric Wong <e@yhbt.net>
528
- Date: Thu Sep 23 22:56:44 2010 +0000
529
-
530
- initial commit + release
531
-
532
- everything shou^Wmight be working...
3
+ commit 75a7da2bd757617995f5492df1205e4a3459618b
4
+ Author: Eric Wong <normalperson@yhbt.net>
5
+ Date: Thu Feb 3 18:46:21 2011 -0800
6
+
7
+ kgio 2.2.0 - kinder, gentler I/O for the Internets
8
+
9
+ * sockets accept()ed by a TCP_NOPUSH/TCP_CORK listener
10
+ automatically flush on kgio_*read calls if there is pending
11
+ data. "Kgio.autopush = false" disables this globally,
12
+ and Kgio::Socket also get "kgio_autopush=" to enable/disable
13
+ on a per-object individual basis.
14
+
15
+ * ECONNRESET exceptions get empty backtraces for kgio_*read.
16
+ There's nothing a programmer can do about these, so there's
17
+ no point in going through the expensive backtrace generation
18
+ process.
19
+
20
+ * Kgio.try* singleton methods added for working with non-Kgio
21
+ enhanced objects. No more needing to use Object#extend
22
+ and blowing away your method cache to make existing I/O
23
+ objects kinder and gentler.
24
+
25
+ * IPv6 support should be complete, systems without a native
26
+ getaddrinfo(3) are now unsupported (and will remain so
27
+ unless somebody complains).
28
+
29
+ There should be no other backwards-incompatible changes other
30
+ than requiring getaddrinfo(3) and friends for IPv6 support.
31
+
32
+ commit c8fb5aa33262a455997ff6a57659a8d125f36d66
33
+ Author: Eric Wong <normalperson@yhbt.net>
34
+ Date: Thu Feb 3 14:28:11 2011 -0800
35
+
36
+ add SocketMethods#kgio_addr!
37
+
38
+ This refreshes (or sets) the @kgio_addr ivar for sockets
39
+ that didn't go through kgio_accept or kgio_tryaccept.
40
+
41
+ commit cff0dd2f73acc73f721b2a589af9e37baedd2489
42
+ Author: Eric Wong <normalperson@yhbt.net>
43
+ Date: Wed Feb 2 13:56:31 2011 -0800
44
+
45
+ fix typos in ipv6 test case
46
+
47
+ Oops, RTFE :P
48
+
49
+ commit 17abe6ce8f01810022b948c71de0026b4ac89597
50
+ Author: Eric Wong <e@yhbt.net>
51
+ Date: Wed Feb 2 21:33:28 2011 +0000
52
+
53
+ add proper IPv6 support
54
+
55
+ No extra #ifdefs, we just won't support old systems without
56
+ getaddrinfo() and friends anymore. I doubt anybody still has
57
+ them...
58
+
59
+ commit 879f2f0ee9133f34ec3e24141bdb4936e3408d3a
60
+ Author: Eric Wong <normalperson@yhbt.net>
61
+ Date: Tue Feb 1 14:00:07 2011 -0800
62
+
63
+ avoid re-interning if GCC is not used (or under 1.8)
64
+
65
+ Needless calls to rb_intern are wasteful in even semi-frequently
66
+ used code.
67
+
68
+ commit 499f158c74b7c455dca08fc30be88cb699ee24c6
69
+ Author: Eric Wong <normalperson@yhbt.net>
70
+ Date: Tue Feb 1 13:58:20 2011 -0800
71
+
72
+ kgio_*read: empty backtrace for ECONNRESET
73
+
74
+ There's nothing a programmer can do about ECONNRESET
75
+ so just make the exception cheaper to raise so it
76
+ can still be logged.
77
+
78
+ commit 36f69750cd69cbf892580da04be6675e23d92f6f
79
+ Author: Eric Wong <normalperson@yhbt.net>
80
+ Date: Mon Jan 31 18:39:31 2011 -0800
81
+
82
+ add singleton methods for non-Kgio objects
83
+
84
+ This allows people to more easily use Kgio in existing apps.
85
+
86
+ commit 37e50a9a5fcd45242373379c0dc61ebf8ff609af
87
+ Author: Eric Wong <normalperson@yhbt.net>
88
+ Date: Mon Jan 31 18:27:24 2011 -0800
89
+
90
+ autopush: enable accessors for client sockets
91
+
92
+ Might as well allow clients to efficiently handle
93
+ TCP_CORK/TCP_NOPUSH, too.
94
+
95
+ commit d4773fc63a847119004c17a1b8803a815f99d98a
96
+ Author: Eric Wong <normalperson@yhbt.net>
97
+ Date: Mon Jan 31 17:34:07 2011 -0800
98
+
99
+ autopush: enable this by default
100
+
101
+ TCP_CORK (and presuably TCP_NOPUSH) aren't remotely useful in
102
+ Rainbows! without this and there's almost no overhead for MRI,
103
+ either.
104
+
105
+ commit 8a1fc65c88dee174940735bb46074c72ac47ce61
106
+ Author: Eric Wong <normalperson@yhbt.net>
107
+ Date: Mon Jan 31 17:05:48 2011 -0800
108
+
109
+ autopush: optimize away ivar usage under MRI
110
+
111
+ We know that all versions of MRI have a small RFile structure
112
+ that is allocated in the same object slots as other Ruby types
113
+ and also zeroed on allocation.
114
+
115
+ This optimization enables us to fall back to using ivars in
116
+ case MRI changes or if we're used on other Rubies.
117
+
118
+ commit 6479b6d3934b8930910e0057f516aa019dd7a8c7
119
+ Author: Eric Wong <normalperson@yhbt.net>
120
+ Date: Mon Jan 31 15:18:33 2011 -0800
121
+
122
+ autopush: enable for TCP_NOPUSH under FreeBSD
123
+
124
+ Hopefully it works for people who use TCP_NOPUSH...
125
+
126
+ commit 15744a90cda72e9007914cd2a78b0b2949193479
127
+ Author: Eric Wong <normalperson@yhbt.net>
128
+ Date: Mon Jan 31 13:58:53 2011 -0800
129
+
130
+ autopush: simplify implementation and just use ivars
131
+
132
+ Duh...
133
+
134
+ commit 313d2bb8d37dbc5602e464def90b3e7fa9f60924
135
+ Author: Eric Wong <normalperson@yhbt.net>
136
+ Date: Mon Jan 31 13:03:02 2011 -0800
137
+
138
+ rename nopush_smart to autopush
139
+
140
+ This is probably a better name for it, libautocork is a nice
141
+ name even though we won't use it directly.
142
+
143
+ commit 910f6f3df099c04fcd55bd6b20785cce69cb36ae
144
+ Author: Eric Wong <normalperson@yhbt.net>
145
+ Date: Thu Jan 27 19:43:39 2011 -0800
146
+
147
+ preliminary implementation of "smart_nopush"
148
+
149
+ It only supports TCP_CORK under Linux right now.
150
+
151
+ We use a very basic strategy to use TCP_CORK semantics optimally
152
+ in most TCP servers: On corked sockets, we will uncork on recv()
153
+ if there was a previous send(). Otherwise we do not fiddle
154
+ with TCP_CORK at all.
155
+
156
+ Under Linux, we can rely on TCP_CORK being inherited in an
157
+ accept()-ed client socket so we can avoid syscalls for each
158
+ accept()-ed client if we already know the accept() socket corks.
159
+
160
+ This module does NOTHING for client TCP sockets, we only deal
161
+ with accept()-ed sockets right now.
162
+
163
+ commit ec91ac3d8c8d9236ba0cd01794c9c4a3ee3f7eeb
164
+ Author: Eric Wong <normalperson@yhbt.net>
165
+ Date: Thu Jan 27 14:11:16 2011 -0800
166
+
167
+ revamp packaging makefile, update URLs
168
+
169
+ More common code that's still GNU make is better for my
170
+ sanity. Also, bogomips.org went on a URL diet recently.
171
+
172
+ commit f6c79438ed195bb706903d104cce850bfbfbac41
173
+ Author: Eric Wong <normalperson@yhbt.net>
174
+ Date: Tue Jan 18 15:52:25 2011 -0800
175
+
176
+ add tests for empty writes, too
177
+
178
+ There could be some platforms that dislike it...
179
+
180
+ commit 9c81cc3fd8d2b3dce68d69d8e0c56a4c5d89ebf0
181
+ Author: Eric Wong <normalperson@yhbt.net>
182
+ Date: Thu Jan 13 14:46:02 2011 -0800
183
+
184
+ Makefile: remove non-existent target reference
185
+
186
+ Oops
187
+
188
+ commit fb8104e1f2a5d1cdcb99a19b6a4bdabf0b1c2643
189
+ Author: Eric Wong <normalperson@yhbt.net>
190
+ Date: Sat Dec 25 18:06:47 2010 -0800
191
+
192
+ kgio 2.1.1 - one small Rubinius fix
193
+
194
+ We now avoid errno side-effects in kgio_wait_*able methods.
195
+ This affects Rubinius, but may affect other Ruby platforms
196
+ (particularly those that use stdio) as well.
197
+
198
+ commit 6ab4331f8137e949ab57f014f96ff3918a315044
199
+ Author: Eric Wong <normalperson@yhbt.net>
200
+ Date: Sat Dec 25 18:02:16 2010 -0800
201
+
202
+ avoid errno side-effects in kgio_wait_*able
203
+
204
+ Retrieving the file descriptor may have side-effects on
205
+ certain Ruby implementations (e.g. Rubinius), so ensure
206
+ our errno is preserved before calling rb_io_wait_*able().
207
+
208
+ commit 3a0323b642ee054319a5e64ffe28e089bbd013e4
209
+ Author: Eric Wong <normalperson@yhbt.net>
210
+ Date: Sun Dec 26 01:08:58 2010 +0000
211
+
212
+ gemspec: point folks to the public mailing list
213
+
214
+ It's more useful that way.
215
+
216
+ commit 9d5c9e6c9975cb5c10e7384aed9ed22ae0ee57c8
217
+ Author: Eric Wong <normalperson@yhbt.net>
218
+ Date: Sun Dec 26 01:02:00 2010 +0000
219
+
220
+ kgio 2.1.0 - accept improvements and fixes
221
+
222
+ kgio_accept and kgio_tryaccept now take an optional argument
223
+ to override the default Kgio::Socket class that is returned.
224
+
225
+ These methods also fall back to using regular accept() if
226
+ kgio was built on a system with accept4() and later run on
227
+ a system without accept4().
228
+
229
+ commit dcd5eff7dd5d5861b67667f48424979be9bcabc8
230
+ Author: Eric Wong <normalperson@yhbt.net>
231
+ Date: Sun Dec 26 00:21:25 2010 +0000
232
+
233
+ quiet down some harmless compiler warnings
234
+
235
+ Less noise means we'll notice real bugs sooner.
236
+
237
+ commit 5280f35f131d88f90afffff0e10f7900530728aa
238
+ Author: Eric Wong <e@yhbt.net>
239
+ Date: Sat Dec 25 23:00:05 2010 +0000
240
+
241
+ accept4: fall back to regular accept() on ENOSYS
242
+
243
+ kgio may occasionally be built on a system with accept4()
244
+ and then deployed on one without it. Handle this case
245
+ gracefully since it unfortunately happens on production systems.
246
+
247
+ commit b859c4a12905cbd71d19cde2aaa9f88ec0374cc5
248
+ Author: Eric Wong <e@yhbt.net>
249
+ Date: Sat Dec 25 22:44:53 2010 +0000
250
+
251
+ accept methods may take an optional argument
252
+
253
+ This is preferred as we no longer have to rely on a global
254
+ constant.
255
+
256
+ commit ef069ece624906b3946248421620d8458bcef605
257
+ Author: Eric Wong <e@yhbt.net>
258
+ Date: Fri Dec 24 09:21:19 2010 +0000
259
+
260
+ Rakefile: fix RAA license
261
+
262
+ Oops, we were never Ruby licensed.
263
+
264
+ commit 472240687caf3f113a3ff408729f8205c475d7d5
265
+ Author: Eric Wong <e@yhbt.net>
266
+ Date: Fri Dec 24 09:20:40 2010 +0000
267
+
268
+ doc: use wrongdoc for documentation
269
+
270
+ wrongdoc factors out a bunch of common code from this
271
+ project into its own and removes JavaScript from RDoc
272
+ to boot.
273
+
274
+ commit 64bbc95d2192fb621b763c1c4d1ae32940c1a5ac
275
+ Author: Eric Wong <normalperson@yhbt.net>
276
+ Date: Wed Dec 22 12:12:18 2010 -0800
277
+
278
+ fix errors in RDoc
279
+
280
+ Noticed-by: Iñaki Baz Castillo
281
+
282
+ commit f093312ad1ed336363f352991b6b99d96f7aed1d
283
+ Author: Eric Wong <normalperson@yhbt.net>
284
+ Date: Thu Nov 18 17:16:53 2010 -0800
285
+
286
+ kgio 2.0.0 - major internal API changes
287
+
288
+ (no code changes from 2.0.0pre1)
289
+
290
+ This release should make Kgio easier and more consistent
291
+ to use across a variety of libraries/applications.
292
+
293
+ The global Kgio.wait_*able(=) accessor methods are gone in favor
294
+ of having default kgio_wait_readable and kgio_wait_writable
295
+ methods added to all Kgio-using classes. Sub-classes may (and
296
+ are encouraged to) redefine these if needed.
297
+
298
+ Eric Wong (7):
299
+ expand Kgio::*#kgio_read! documentation
300
+ prefer symbolic names for waiting read/writability
301
+ EOFError message matches Ruby's
302
+ README: Gemcutter => RubyGems.org
303
+ update documentation with mailing list info
304
+ add default kgio_wait_*able methods
305
+ switch entirely to kgio_wait_*able methods
306
+
307
+ commit edfa7e60de5556b6abc9febe6a21e12dadbafd0b
308
+ Author: Eric Wong <normalperson@yhbt.net>
309
+ Date: Thu Nov 18 15:42:27 2010 -0800
310
+
311
+ Rakefile: list prerelease tags as well
312
+
313
+ Since we do prerelease nowadays before real ones.
314
+
315
+ commit d78a2075bdb0a30bf0064d2857011c330cc0d09e
316
+ Author: Eric Wong <normalperson@yhbt.net>
317
+ Date: Thu Nov 18 15:38:12 2010 -0800
318
+
319
+ move website to bogomips.org
320
+
321
+ This project is useful enough for others and to stand alone
322
+ without needing to be associated with Unicorn.
323
+
324
+ commit 28070c522aff233eadb7e167f8d4e8122cd0bb47
325
+ Author: Eric Wong <normalperson@yhbt.net>
326
+ Date: Thu Nov 18 15:15:40 2010 -0800
327
+
328
+ kgio 2.0.0pre1 - major internal API changes
329
+
330
+ This release should make Kgio easier and more consistent
331
+ to use across a variety of libraries/applications.
332
+
333
+ The global Kgio.wait_*able(=) accessor methods are gone in favor
334
+ of having default kgio_wait_readable and kgio_wait_writable
335
+ methods added to all Kgio-using classes. Sub-classes may (and
336
+ are encouraged to) redefine these if needed.
337
+
338
+ Eric Wong (7):
339
+ expand Kgio::*#kgio_read! documentation
340
+ prefer symbolic names for waiting read/writability
341
+ EOFError message matches Ruby's
342
+ README: Gemcutter => RubyGems.org
343
+ update documentation with mailing list info
344
+ add default kgio_wait_*able methods
345
+ switch entirely to kgio_wait_*able methods
346
+
347
+ commit c69955e64648ab6a3471a54f7885a320428682f9
348
+ Author: Eric Wong <e@yhbt.net>
349
+ Date: Thu Nov 18 14:37:05 2010 -0800
350
+
351
+ switch entirely to kgio_wait_*able methods
352
+
353
+ This removes the global Kgio.wait_*able accesors and requires
354
+ each class to define (or fall back to) the Kgio::DefaultWaiters
355
+ methods.
356
+
357
+ commit f1b497e601ed2acb54f75dc989d0a5ec7afebca0
358
+ Author: Eric Wong <e@yhbt.net>
359
+ Date: Thu Nov 18 13:38:32 2010 -0800
360
+
361
+ add default kgio_wait_*able methods
362
+
363
+ It makes it easier for people to use certain overrides without
364
+ killing other methods. This is the first step in fixing
365
+ problems people were having with dalli 0.11.1+ while running
366
+ Unicorn.
367
+
368
+ commit 827ad6b4fba768a5cac8fb4e83fbbf61cf7a3194
369
+ Author: Eric Wong <e@yhbt.net>
370
+ Date: Mon Nov 15 10:33:55 2010 -0800
371
+
372
+ update documentation with mailing list info
373
+
374
+ We're a real project, apparently, so it can have its
375
+ own mailing list.
376
+
377
+ commit fd88eae588c1e715dcaf3a1a000391cc13481e02
378
+ Author: Eric Wong <e@yhbt.net>
379
+ Date: Mon Nov 15 10:22:49 2010 -0800
380
+
381
+ README: Gemcutter => RubyGems.org
382
+
383
+ That's the new name for it and it's official
384
+
385
+ commit 8615a3f9554df0fd7f7f088cd49cf1e3be49de9f
386
+ Author: Eric Wong <e@yhbt.net>
387
+ Date: Fri Nov 12 20:25:50 2010 -0800
388
+
389
+ EOFError message matches Ruby's
390
+
391
+ This makes messages appear less different than Ruby
392
+ when using kgio_read!
393
+
394
+ Requested-by: Mike Perham
395
+
396
+ commit 2772ed8bfe108b66b7493bc5cb0c40ddeb1ca57d
397
+ Author: Eric Wong <e@yhbt.net>
398
+ Date: Fri Nov 5 09:01:08 2010 +0800
399
+
400
+ prefer symbolic names for waiting read/writability
401
+
402
+ There's no point in using constants that point to symbols
403
+ instead of just the symbols themselves.
404
+
405
+ commit bf3b507791403811bece9dff915ca10757bca519
406
+ Author: Eric Wong <e@yhbt.net>
407
+ Date: Thu Oct 28 21:02:31 2010 +0000
408
+
409
+ expand Kgio::*#kgio_read! documentation
410
+
411
+ If the author can forget why it was written, so can
412
+ the rest of the world.
413
+
414
+ commit f4d08a07a02393cca5ddd1277acc4f95c83307ff
415
+ Author: Eric Wong <e@yhbt.net>
416
+ Date: Fri Oct 8 14:55:16 2010 -0700
417
+
418
+ kgio 1.3.1 - fix zero-length reads
419
+
420
+ kgio_read and kgio_tryread will now return an empty string when
421
+ a length of zero is specified instead of nil (which would signal
422
+ an EOF). This emulates the behavior of IO#read, IO#readpartial,
423
+ IO#sysread, IO#read_nonblock in core Ruby for consistency.
424
+
425
+ commit d225ede82d820d045bd7cfb826f444cf6601577c
426
+ Author: Eric Wong <normalperson@yhbt.net>
427
+ Date: Fri Oct 8 02:53:38 2010 -0700
428
+
429
+ return empty string on length=0
430
+
431
+ This matches behavior of all the core Ruby methods.
432
+
433
+ commit e4599227f0da0f652cbcb52838e631d7384dcd0d
434
+ Author: Eric Wong <e@yhbt.net>
435
+ Date: Thu Oct 7 20:02:40 2010 -0700
436
+
437
+ kgio 1.3.0 - bug and usability fixes
438
+
439
+ * make Kgio::WaitWritable and Kgio::WaitReadable symbols
440
+ * trywrite: fix stupid off-by-one error causing corrupt writes
441
+ on retries
442
+
443
+ commit f5fc35221d37141b0f72278c7b969211410e94c0
444
+ Author: Eric Wong <e@yhbt.net>
445
+ Date: Thu Oct 7 20:00:09 2010 -0700
446
+
447
+ tests: don't trust what I think I know about Ruby
448
+
449
+ case/when and === didn't actually work as I expected
450
+ them to.
451
+
452
+ commit 2152188f41bf2a5067e84a4404b48b2282a9dd55
453
+ Author: Eric Wong <e@yhbt.net>
454
+ Date: Thu Oct 7 19:56:57 2010 -0700
455
+
456
+ trywrite: fix stupid off-by-one error causing corrupt writes
457
+
458
+ Oops!
459
+
460
+ commit c448ad898ecb7f354a32a320294da4727fc9af52
461
+ Author: Eric Wong <e@yhbt.net>
462
+ Date: Thu Oct 7 19:55:49 2010 -0700
463
+
464
+ make WaitWritable and WaitReadable symbols
465
+
466
+ This makes them easier to compare with === when used
467
+ in case/when statements in Ruby
468
+
469
+ commit 49f0b98c69f1f0bf637953d0bfc96b764f00ab9b
470
+ Author: Eric Wong <e@yhbt.net>
471
+ Date: Thu Oct 7 07:15:49 2010 +0000
472
+
473
+ kgio 1.2.1 - doc and *BSD workarounds
474
+
475
+ This fixes our accept4() wrapper which did not work as expected
476
+ on some *BSD-based systems due to fcntl(fd, F_GETFL) returning
477
+ false information. Linux 2.6+ users are unnaffected, including
478
+ those without accept4().
479
+
480
+ Also some RDoc fixes.
481
+
482
+ commit 03344bb763f5269afe7fafd56a47270719c7ef9e
483
+ Author: Eric Wong <e@yhbt.net>
484
+ Date: Thu Oct 7 07:14:07 2010 +0000
485
+
486
+ doc: fix RDoc generation
487
+
488
+ Oops, completely broken by the splitting of the code.
489
+
490
+ commit 637317eb479525dca543eda7a8977410bc43b832
491
+ Author: Eric Wong <e+07380@yhbt.net>
492
+ Date: Wed Oct 6 14:08:35 2010 -0700
493
+
494
+ accept4: workaround (P)OS X bug w/O_NONBLOCK
495
+
496
+ Apparently fcntl(fd, F_GETFL) can return falsely return the
497
+ O_NONBLOCK flag without actually having it set in the kernel.
498
+ This is totally broken on the part of the OS.
499
+
500
+ commit ca76c75f8a24d0cd6828fe16ca3790a277b35f8d
501
+ Author: Eric Wong <e+07380@yhbt.net>
502
+ Date: Wed Oct 6 14:06:27 2010 -0700
503
+
504
+ build: pick on on modified extension files
505
+
506
+ We build more than one file nowadays.
507
+
508
+ commit 65f96b7750616bc210397c16eea40961e578a788
509
+ Author: Eric Wong <e@yhbt.net>
510
+ Date: Wed Oct 6 11:51:04 2010 -0700
511
+
512
+ doc: fix typo in Kgio.accept_cloexec= doc
513
+
514
+ oops...
515
+
516
+ commit 414dd17f1009c571e2d7657721271756e3d4dd8e
517
+ Author: Eric Wong <e@yhbt.net>
518
+ Date: Tue Oct 5 16:09:40 2010 -0700
519
+
520
+ kgio 1.2.0 - cleanups and minor improvements
521
+
522
+ The C extension is now split into several files for
523
+ ease-of-maintenance.
524
+
525
+ Slightly more common, client-triggerable exceptions (EOFError,
526
+ Errno::EPIPE, Errno::ECONNRESET) are now less expensive as they
527
+ are generated without backtraces.
528
+
529
+ commit e085bb9600b190692beb5efc85656ebf127ae08c
530
+ Author: Eric Wong <e@yhbt.net>
531
+ Date: Tue Oct 5 15:45:16 2010 -0700
532
+
533
+ generate empty backtraces for EPIPE and ECONNRESET
534
+
535
+ Malicious clients may disconnect during big writes to cause
536
+ EPIPE and ECONNRESET exceptions. Generating backtraces can be
537
+ expensive with Ruby, so mitigate the DoS vector by lowering the
538
+ cost of generating an exception.
539
+
540
+ commit b168cc894037620cab82fa82f3ab37a3aab81570
541
+ Author: Eric Wong <e@yhbt.net>
542
+ Date: Tue Oct 5 15:26:57 2010 -0700
543
+
544
+ add kgio_read! methods which may raise EOFError
545
+
546
+ Except EOFError is gently raised to not include a huge
547
+ backtrace. Large backtraces can be a performance problem on
548
+ busy servers that malicious clients may exploit to deny service.
549
+
550
+ commit 870ada92db7071c7982913e508ac35b97d6e8761
551
+ Author: Eric Wong <e@yhbt.net>
552
+ Date: Tue Oct 5 11:45:02 2010 -0700
553
+
554
+ GNUmakefile: use portable tar invocation
555
+
556
+ We've been spoiled by GNU tar.
557
+
558
+ commit 2a6115a89d5c95428bd6c3e0bc10e5a3a4c3c3be
559
+ Author: Eric Wong <e@yhbt.net>
560
+ Date: Wed Sep 29 18:25:58 2010 -0700
561
+
562
+ refactor and split into separate files
563
+
564
+ Making the code easier to read and navigate. This also
565
+ frees us from having to use the stupid A4_ prefix for
566
+ accept4(2) flags since it conflicts with the socket(2)
567
+ ones.
568
+
569
+ commit 8fe89997453d6c530c3f5e08bc9c1da40a621248
570
+ Author: Eric Wong <e@yhbt.net>
571
+ Date: Wed Sep 29 17:13:21 2010 -0700
572
+
573
+ Make kgio_trywrite more aggressive with retrying
574
+
575
+ Partial writes can be retried until completely denied with
576
+ EAGAIN. Often times, it is beneficial to retry immediately
577
+ after a partial write because the kernel may allocate more
578
+ buffers or the reader can drain the buffers.
579
+
580
+ This helps the caller avoid crossing the Ruby <-> C boundary
581
+ more than necessary.
582
+
583
+ commit 39c851e595970a2349a8a39878afd94a3324e102
584
+ Author: Eric Wong <e@yhbt.net>
585
+ Date: Tue Sep 28 18:16:53 2010 -0700
586
+
587
+ kgio 1.1.0 - flexible accept methods
588
+
589
+ * an alternate class now be returned by accept/tryaccept
590
+ by setting "Kgio.accept_class ="
591
+
592
+ commit 911f6ab306aff1e24c9c570eeae33923fa1b99d9
593
+ Author: Eric Wong <e@yhbt.net>
594
+ Date: Tue Sep 28 18:04:51 2010 -0700
595
+
596
+ alternate classes may be returned by accept/tryaccept
597
+
598
+ These can be useful for avoiding wrapper objects and
599
+ also allows users to more easily try different things
600
+ without stepping on others' toe^H^H^Hclasses.
601
+
602
+ commit 526b4bd48a20a34ef5959fdc4aa580d5f9199652
603
+ Author: Eric Wong <e@yhbt.net>
604
+ Date: Mon Sep 27 19:59:34 2010 -0700
605
+
606
+ kgio 1.0.1 - compatibility fixes
607
+
608
+ * add compatibility for ancient Rubies (1.8.6)
609
+ * linux: fix accept4() support for newer Linux
610
+
611
+ commit 20cbc0355104470fb433dd13e87a5d5c7e888ab1
612
+ Author: Eric Wong <e@yhbt.net>
613
+ Date: Tue Sep 28 02:56:41 2010 +0000
614
+
615
+ linux: fix accept4() support for newer Linux
616
+
617
+ Oops :x Tested on Debian sid.
618
+
619
+ commit 24f1d168eb0937f0586c45b266bcd208431f0107
620
+ Author: Eric Wong <e@yhbt.net>
621
+ Date: Mon Sep 27 18:06:34 2010 -0700
622
+
623
+ add compatibility for ancient Rubies
624
+
625
+ This is tested on Ruby 1.8.6-p114, but may work
626
+ for 1.8.5, too. Ugh, people ought to upgrade.
627
+
628
+ commit e4d204c86e9420023ba3e4d8dbeb6b3fea8d6cf7
629
+ Author: Eric Wong <e@yhbt.net>
630
+ Date: Tue Sep 28 00:27:44 2010 +0000
631
+
632
+ kgio 1.0.0 - initial release
633
+
634
+ Documentation and release infrastructure updates
635
+ and such...
636
+
637
+ commit 8984b9556a3493570fbb4f747fce712d58f2cdd8
638
+ Author: Eric Wong <e@yhbt.net>
639
+ Date: Tue Sep 28 00:07:43 2010 +0000
640
+
641
+ doc: TODO update
642
+
643
+ commit 2c64a1fc07d3b9a80d112e3b0e2baa7ec29c2f47
644
+ Author: Eric Wong <e@yhbt.net>
645
+ Date: Tue Sep 28 00:03:39 2010 +0000
646
+
647
+ read/write: account for buffer changes during wait
648
+
649
+ It's possible for applications to modify the buffer during
650
+ reads and writes, so make a best effort to account for those.
651
+
652
+ commit f2ea9918655e8ee0576bee2950d16485031fc361
653
+ Author: Eric Wong <e@yhbt.net>
654
+ Date: Mon Sep 27 23:59:59 2010 +0000
655
+
656
+ tests: fix broken monster trywrite test
657
+
658
+ Oops, use random data so it's easier to detect this.
659
+
660
+ commit 7abc0eb3dd804c2e65660b7dd9c828df0e03b80a
661
+ Author: Eric Wong <e+absinthe@yhbt.net>
662
+ Date: Mon Sep 27 15:09:44 2010 -0700
663
+
664
+ test_tcp*read_write: use blocking kgio_accept in setup
665
+
666
+ Some OSes (FreeBSD 7.0) do not seem to setup
667
+ connections as quickly.
668
+
669
+ commit 95d2eae6a4da34c504427af6ae0ab4c8c70c0ce5
670
+ Author: Eric Wong <e+absinthe@yhbt.net>
671
+ Date: Mon Sep 27 15:09:43 2010 -0700
672
+
673
+ set blocking flag before blocking IO#read
674
+
675
+ Some older Rubies may not behave correctly otherwise
676
+
677
+ commit 0806cac89f9d0e169b6c1e4da68c1ad66daa23ae
678
+ Author: Eric Wong <e@yhbt.net>
679
+ Date: Mon Sep 27 23:16:53 2010 +0000
680
+
681
+ tess: ensure buffer is cleared on failures
682
+
683
+ No need to leak data.
684
+
685
+ commit 50b86bf23063f3e6c3777b39c9464f73ccfd6ef5
686
+ Author: Eric Wong <e@yhbt.net>
687
+ Date: Mon Sep 27 22:55:52 2010 +0000
688
+
689
+ more documentation
690
+
691
+ Somebody's gotta do it...
692
+
693
+ commit 5123d66fe0b2dad67539a20fe5b91f5b9afd814a
694
+ Author: Eric Wong <e@yhbt.net>
695
+ Date: Mon Sep 27 16:56:13 2010 +0000
696
+
697
+ avoid initiating syscalls before rb_io_wait_*
698
+
699
+ Some Ruby implementations (Rubinius) may call lseek
700
+ and clobber the intended errno when looking up the
701
+ open file, causing rb_io_wait_* functions to fail.
702
+
703
+ commit 6c818b0b6f76ef733679bcea1024142b4ef3ce00
704
+ Author: Eric Wong <e@yhbt.net>
705
+ Date: Mon Sep 27 01:13:30 2010 +0000
706
+
707
+ add kgio_tryaccept, kgio_accept _really_ blocks
708
+
709
+ We'll stick with the "try" prefix if we're going to be
710
+ non-blocking. kgio_accept will favor a blocking accept() call
711
+ where it's possible to release the GVL, allowing it to avoid
712
+ thundering herd problems. Otherwise it'll use thread-safe
713
+ blocking under Ruby 1.8.
714
+
715
+ commit f81cb3c05a0eb46ec61ceb295b51ead16e6a0da4
716
+ Author: Eric Wong <e@yhbt.net>
717
+ Date: Mon Sep 27 00:57:14 2010 +0000
718
+
719
+ use SOCK_NONBLOCK for socket(2) if possible
720
+
721
+ This saves us a relatively expensive fcntl() system call.
722
+
723
+ commit 87cf3ce6185b9138032a5af53cecae98f8c93564
724
+ Author: Eric Wong <e@yhbt.net>
725
+ Date: Mon Sep 27 00:24:50 2010 +0000
726
+
727
+ connect: no do not leak descriptors on failure
728
+
729
+ We cannot raise exceptions and expect GC to clean up
730
+ after us until we've created an actual IO object.
731
+
732
+ commit 6fbde1518578dd1b828efcecaf2caf893bddc110
733
+ Author: Eric Wong <e@yhbt.net>
734
+ Date: Mon Sep 27 00:11:43 2010 +0000
735
+
736
+ "start" singleton methods for non-blocking connect
737
+
738
+ These initiate (but do not wait for) non-blocking connects.
739
+
740
+ commit fdfecc6d815bab8dfc1d8ad6758a66d44ab51e31
741
+ Author: Eric Wong <e@yhbt.net>
742
+ Date: Sun Sep 26 07:51:12 2010 +0000
743
+
744
+ introduce kgio_try* methods
745
+
746
+ Avoid altering behavior based on globals that
747
+ Kgio.wait_{read,writ}able stored in, since that's too confusing.
748
+ The non-try variants are closer to the normal IO read/write
749
+ methods, except they can be more easily plugged into alternate
750
+ reactors and event frameworks.
751
+
752
+ commit d8ee79e1e5c6e6908009213324db25cf41c583ce
753
+ Author: Eric Wong <e@yhbt.net>
754
+ Date: Sat Sep 25 17:55:07 2010 +0000
755
+
756
+ kgio_read returns nil on EOF
757
+
758
+ Just like IO#read
759
+
760
+ commit af03e4471de3d3b91eec16e26e93a84d4a717116
761
+ Author: Eric Wong <e@yhbt.net>
762
+ Date: Sat Sep 25 17:47:13 2010 +0000
763
+
764
+ split out reusable bits into separate headers
765
+
766
+ No point in cluttering up the meat of our code.
767
+
768
+ commit db53263856d864ba6273e6cac73011f699509d71
769
+ Author: Eric Wong <e+absinthe@yhbt.net>
770
+ Date: Sat Sep 25 01:36:13 2010 -0700
771
+
772
+ only use MSG_DONTWAIT under Linux
773
+
774
+ MSG_DONTWAIT is less consistently implemented/supported on other
775
+ platforms on stream sockets, so fallback to fcntl() + read()/write()
776
+ for stream sockets. This also fixes our previously broken support
777
+ of non-MSG_DONTWAIT systems.
778
+
779
+ commit a82dc40c2a509c4ab692da34b572693f243fbfae
780
+ Author: Eric Wong <e+absinthe@yhbt.net>
781
+ Date: Sat Sep 25 01:36:12 2010 -0700
782
+
783
+ write/send may fail with ECONNRESET
784
+
785
+ Tested on FreeBSD 7.0
786
+
787
+ commit 0c60192621303f5e4ebd46d43a058de48126bc8a
788
+ Author: Eric Wong <e+absinthe@yhbt.net>
789
+ Date: Sat Sep 25 01:36:11 2010 -0700
790
+
791
+ fix missing netinet/in.h include
792
+
793
+ This is needed for FreeBSD 7.0, at least.
794
+
795
+ commit 0beb82437f4ab0b8422e225080b234361092315e
796
+ Author: Eric Wong <e@yhbt.net>
797
+ Date: Sat Sep 25 08:15:13 2010 +0000
798
+
799
+ beef up the test suite
800
+
801
+ We need to test server <-> client interaction
802
+ more thoroughly since some systems don't implement
803
+ everything right.
804
+
805
+ commit 460e6b025896dee64b39d194d4c1a536129654de
806
+ Author: Eric Wong <e@yhbt.net>
807
+ Date: Thu Sep 23 22:56:44 2010 +0000
808
+
809
+ initial commit + release
810
+
811
+ everything shou^Wmight be working...