kgio 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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...