ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/Changes
Revision: 1.273
Committed: Sun Jul 24 05:53:34 2011 UTC (12 years, 10 months ago) by root
Branch: MAIN
Changes since 1.272: +1 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.31 Revision history for IO::AIO
2 root 1.30
3 root 1.59 TODO: better autoconf.pm that can return LIBS etc.
4 root 1.114 TODO: aio_cptree/mvtree
5 root 1.106 TODO: reduce condvar fairness: schedule hot-cache-threads first?
6 root 1.176 TODO: splice/tee/vmsplice? (http://kerneltrap.org/node/6505 http://lwn.net/Articles/178199/)
7 root 1.136 TODO: aio_fcntl, at least for file-locking
8 root 1.223 TODO: aio_mincore?
9 root 1.255 TODO: getxattr etc.?
10 root 1.260
11 root 1.272 - (libeio) added syncfs syscall wrapper.
12 root 1.273 - (libeio) set thread name on linux (ps -L/Hcx, top, gdb).
13 root 1.272
14 root 1.271 4.0 Mon Jul 18 05:01:10 CEST 2011
15 root 1.269 - INCOMPATIBLE CHANGE: fork is no longer supported (indeed, it never was),
16     see FORK BEHAVIOUR in manpage for details.
17 root 1.271 - passes testsuite on win32 now and may actually work
18     (activestate 5.10.1 / MSVC6, YMMV).
19 root 1.267 - (libeio) fix a deadlock where a wakeup signal could be missed when
20     a timeout occured at the same time.
21 root 1.263 - (libeio) added realpath.
22 root 1.266 - (libeio) added fallocate.
23     - (libeio) disabling sendfile on darwin unfortunately broke the emulation.
24 root 1.267 - (libeio) do not acquire any locks when forking.
25     - (libeio) use fewer time() syscalls when waiting for new requests.
26 root 1.263
27 root 1.262 3.93 Wed Jun 29 23:44:18 CEST 2011
28     - ECB.H WAS MISSING.
29    
30 root 1.261 3.92 Wed Jun 29 14:45:41 CEST 2011
31     - ecb.h was missing.
32    
33 root 1.260 3.91 Wed Jun 29 13:24:42 CEST 2011
34 root 1.253 - (libeio) work around a Linux (and likely FreeBSD and other
35     kernels) bug where sendfile would not transfer all the requested
36     bytes on large transfers, using a heuristic.
37 root 1.254 - buggy sendfile caused aio_move/copy to sometimes fail for big
38 root 1.260 files (fortunately it checks that the whole file has been
39 root 1.254 transferred...)
40 root 1.255 - use libecb for higher performance and higher portability.
41 root 1.256 - (libeio) disable sendfile on darwin, it's too broken.
42 root 1.257 - disable fork tests on !linux, as only linux supports mixing
43     pthread and fork in perl.
44 root 1.258 - document the fact that fork doesn't work anymore when using
45     this module, on anything !GNU/Linux.
46 root 1.259 - increase timeout in t/04_fork.t, as too many CPAN-tester setups
47     run on a 0.1MHz cpu. Or so.
48 root 1.252
49 root 1.251 3.9 Fri May 27 02:43:47 CEST 2011
50 root 1.250 - (libeio) fix memory corruption in aio_readdirx for the flags
51     combination READDIR_STAT_ORDER | READDIR_DIRS_FIRST.
52 root 1.267 - add lots of newer POSIX and GNU/Linux-specific open
53 root 1.251 flags.
54 root 1.238
55 root 1.247 3.8 Sun Mar 27 12:25:33 CEST 2011
56 root 1.245 - use nonstandard but maybe-working-on-bsd fork technique.
57     - support a max_idle value of 0.
58 root 1.246 - support setting of idle timeout value (IO::AIO::idle_timeout).
59 root 1.245
60     3.72 Fri Feb 11 04:25:38 CET 2011
61 root 1.248 - use _POSIX_MEMLOCK_RANGE to detect mlock/munlock.
62 root 1.244 - aio_mknod always used a dev_t value of 0.
63 root 1.242 - new treescan option: --grep.
64 root 1.244 - add more S_IF macros, and major/minor/makedev "macros".
65 root 1.241
66 root 1.240 3.71 Thu Dec 30 08:18:46 CET 2010
67     - the numerical result value passed to callbacks did not stringify
68     correctly, due to internal reuse and failure to reset the sv flags.
69 root 1.239 - actually test for posix_[mf]advise, as at least uClibc defines
70     _POSIX_ADVISORY_INFO without actually having any of the required
71     funcitonality. ugh.
72    
73 root 1.238 3.7 Mon Nov 1 23:00:34 CET 2010
74     - implement/add madvise, mmap, munmap, aio_mlockall, munlockall,
75     aio_mlock, munlock, msync and mtouch to @EXPORT_OK.
76     - document the sad state of affairs w.r.t. pthread on many bsds.
77     - do not enable mmap on systems without _POSIX_MAPPED_FILES
78     (openbsd 4.8).
79 root 1.231 - do not leak memory in IO::AIO::mmap when the scalar already
80     had string-data.
81 root 1.238 - add O_RDWR, O_APPEND and O_EXCL symbols and semi-document
82 root 1.228 them.
83 root 1.230 - cache the result IV, for a minor speedup in the common case.
84 root 1.231 - croak when an mmapped-scalar changes location, to detect
85     user-errors better.
86 root 1.237 - fix aio_readlink prototype.
87 root 1.228
88 root 1.227 3.65 Wed Mar 31 02:45:05 CEST 2010
89 root 1.225 - actually use PATH_MAX instead of NAME_MAX for readlink, as to not
90     cut off long pathnames in aio_readlink (based on patch by
91     Rasmus Andersson).
92 root 1.227 - a double fork partially killed the event pipe (great testcase
93     by dormando). affects IO::AIO, BDB and Async::Interrupt.
94     - suck steve's dick and rename our symbols to avoid colliding
95     with nonstandard identifier spam on the broken os x pseudo-os.
96     affects IO::AIO and BDB.
97 root 1.225
98 root 1.224 3.6 Mon Jan 11 00:43:39 CET 2010
99 root 1.219 - (libeio) more fixes for the freebsd/apple sendfile - broken by
100     manpage standards, but apparently correct accoridng to actual
101     kernel sources.
102 root 1.222 - add IO::AIO::mmap/munmap support.
103 root 1.220 - add IO::AIO::m(un)lockall support.
104 root 1.221 - clean up manpage.
105 root 1.218
106 root 1.217 3.5 Thu Jan 7 21:25:04 CET 2010
107 root 1.214 - (liebio) fix freebsd sendfile (Vanilla Hsu).
108     - (libeio) also fix darwin sendfile that suffered from a similar bug.
109 root 1.215 - add aio_statvfs as interface to statvfs/fstatvfs.
110 root 1.216 - work around buggy symlink() on cygwin in the testsuite.
111 root 1.217 - wtf. freebsd-8.0 actually passes the testsuite! I knew
112     they could implement fork and semaphores one day! cheers!
113 root 1.214
114 root 1.213 3.4 Sat Jan 2 15:13:04 CET 2010
115 root 1.209 - (libeio) max_poll_time was not properly converted to ticks.
116     - clarify cancel_subs description.
117 root 1.210 - IO::AIO::sendfile did not actually return the return value
118     from the sendfile call.
119 root 1.212 - implement aio_msync, aio_mtouch.
120 root 1.211 - (libeio) tentatively support darwin in sendfile.
121 root 1.209
122 root 1.208 3.31 Thu Nov 12 02:14:29 CET 2009
123 root 1.206 - fix result status documentation of aio_copy, aio_move.
124 root 1.207 - speed up object creation considerably by avoiding
125     hash lookups.
126 root 1.206
127 root 1.205 3.3 Wed Aug 5 13:52:58 CEST 2009
128 root 1.202 - use common::sense.
129     - use common schmorp.h header.
130     - allow integers (file descriptors) in addition to file handles.
131 root 1.203 - take advantage of linux' eventfd (but it seems slower on smp?).
132 root 1.204 - use poll not select on posix platforms.
133 root 1.202
134 root 1.201 3.261 Wed Jul 1 10:11:51 CEST 2009
135 root 1.207 - more 0S X workarounds (patch by Tokuhiro Matsuno).
136 root 1.200
137 root 1.199 3.26 Tue Jun 30 09:33:26 CEST 2009
138 root 1.207 - 0S X of course claims to be posix 2008 but lacks posix_fadvise.
139     try to work around this horribly broken OS in a somewhat hackish
140     way. might help other os's too.
141 root 1.199
142 root 1.198 3.25 Sat Jun 27 05:18:26 CEST 2009
143 root 1.197 - added IO::AIO::fadvise and IO::AIO::sendfile.
144 root 1.195 - (libeio) replaced quicksort+insertion sort by a tuned radix
145     sort + insertion sort, resulting in comparable runtime (usually
146     faster) to the old version, but without any ill side effects on
147     degenerated (for quicksort) data.
148     - (libeio) correctly sort dirs by inodes if we have perfect type
149 root 1.194 knowledge and DIRS_FIRST is used.
150 root 1.195 - (libeio) internally the wrong DT_* constants were used, but no
151     known system has differing EIO_DT_*/DT_* values, so not an issue.
152     - removed a (harmless) assert that was left over on the code
153     but should not have been.
154 root 1.196 - use more correct types (change IO length from IV to VAL64,
155     which makes a difference on systems without 64 bit perls).
156 root 1.194
157 root 1.193 3.23 Sat Jun 13 16:57:58 CEST 2009
158     - fix off-by-one bug in aio_readdir that was introduced in the
159     rushed 3.22 release.
160    
161 root 1.192 3.22 Sat Jun 13 15:32:40 CEST 2009
162 root 1.191 - speed up readdirx sort algorithm slightly.
163 root 1.192 - bin/treescan was missing from distro tarball.
164 root 1.191
165 root 1.190 3.21 Fri Jun 12 18:45:53 CEST 2009
166 root 1.187 - new options --dirs and --files for treescan.
167 root 1.188 - install bin/treescan by default.
168 root 1.189 - (libeio) aio_readdir can now be cancelled while executing.
169 root 1.190 - fix a printf format string for 64 bit systems (could lead
170     to problems on big endian 64 bit systems).
171     - do not use qsort() but our own algorithm: glibc initialises
172     the whole locale and I/O subsystem inside qsort, causing
173     a stack overflow on 32 bit machines. The new sort uses much less
174     stack and is more than twice as fast in typical situations.
175 root 1.187
176 root 1.186 3.2 Sun Jun 7 20:30:05 CEST 2009
177 root 1.182 - (libeio) pwrite emulation was even more flawed than intended and did
178     not restore the file offset.
179 root 1.183 - add aio_readdirx, which can return inode and filetype and sort
180     the names in various ways.
181 root 1.182 - unfortunately, utime, chmod, chown on an open file that has just
182     been written can easily block, which caused aio_copy to block the
183     process. no more!
184     - no longer rely on dst path in aio_copy when futime is available.
185    
186 root 1.181 3.19 Tue Apr 21 22:05:21 CEST 2009
187     - more perl 5.10 workarounds for aio_read and write.
188     - aio_write no longer modifies the sv (if possible).
189     - aio_read now works correctly with magic values.
190    
191 root 1.180 3.18 Sun Apr 19 21:17:32 CEST 2009
192 root 1.179 - better diagnostics when some aio_* functions get passed an illegal fh.
193 root 1.180 - try to avoid crashes due to incompatible 5.10 API changes. grmbl.
194 root 1.178
195 root 1.177 3.17 Thu Nov 20 08:45:36 CET 2008
196 root 1.176 - (libeio) added aio_sync_file_range (untested).
197 root 1.177 - add aio_busy to @IO::AIO::AIO_REQ.
198 root 1.175
199 root 1.174 3.16 Wed Oct 22 18:28:01 CEST 2008
200 root 1.173 - use SvREFCNT_inc instead of SvREFCNT_inc_NN in a non-speed critical
201     part to improve portability to perl 5.8 (reported by szymon).
202    
203 root 1.172 3.15 Mon Oct 13 00:39:55 CEST 2008
204 root 1.171 - automatic removal of feeders was broken.
205     - (libeio) use a more robust method to detect whether a feeder
206     has added something to the group or not.
207    
208 root 1.170 3.1 Thu Oct 2 13:34:40 CEST 2008
209 root 1.168 - pre-deref the passed callback object, for increased speed
210     and decreased memory usage.
211 root 1.167 - call on_next_submit callback even for aio_group - impact unknown,
212 root 1.166 but seems more correct.
213 root 1.168 - $req->cb now returns the original callback.
214 root 1.166 - (libeio) pass EIO_GROUP/aio_group requests through the queue without
215     requiring a thread switch.
216 root 1.169 - (libeio) status code of aio_futime and aio_utime was always passed 0.
217 root 1.166 - do some other µ-optimisations.
218    
219 root 1.165 3.07 Sat Aug 2 16:06:13 CEST 2008
220     - do not include LIBS in autoconf tests.
221    
222 root 1.164 3.06 Tue Jul 15 12:41:32 CEST 2008
223 root 1.162 - move preadwritelock definition before it's first reference,
224 root 1.164 to make it compile again on broken platforms (they still exist)
225     or badly cofngiured perls (redhat...), reported by Rob Bloodgood.
226 root 1.162
227 root 1.161 3.05 Thu Jun 19 23:23:52 CEST 2008
228 root 1.160 - work around perl overriding readdir etc. with thread-unsafe
229 root 1.161 (sic!) versions.
230 root 1.160
231 root 1.159 3.04 Wed Jun 18 01:35:38 CEST 2008
232     - (libeio) fix eio_mknod, which confused it's arguments.
233 root 1.158 - (libeio) do not use readdir_r, as Ulrich Drepper pointed out that this
234     is stupid.
235 root 1.159 - (libeio) fix eio__readahead prototype, patch by Jost Krieger.
236     - (libeio) fix a bug that could potentially cause IO::AIO
237     not to get initialised properly.
238 root 1.158
239 root 1.157 3.03 Thu May 29 05:33:30 CEST 2008
240 root 1.153 - (libeio) correctly call pthread_attr_destroy ().
241 root 1.155 - (libeio) work around broken bsd headers once more.
242 root 1.154 - reduce shared library size again by not including wrappers.
243 root 1.156 - max_outstanding could cause poll to enter a busy-waiting loop.
244     - document the new IO::AIO::poll_cb result value.
245 root 1.153
246 root 1.152 3.02 Mon May 12 02:32:02 CEST 2008
247 root 1.150 - fix a memory leak on aio_readlink.
248     - bring back working fchmod.
249 root 1.151 - nop and busy now set result to 0.
250     - set errno to ENOMEM when allocation fails.
251 root 1.150
252 root 1.149 3.01 Sun May 11 03:07:03 CEST 2008
253     - (libeio) make it compile on systems without readahead or readdir_r.
254 root 1.148 - (libeio) improve configure check for readahead availability.
255     - do not try to link against -lrt.
256 root 1.147 - use a separate configure script for IO::AIO (not the libeio one).
257    
258 root 1.146 3.0 Sun May 11 00:57:14 CEST 2008
259 root 1.145 - added bin/treescan to the distribution.
260     - switched to using libeio.
261     - LOTS OF INCOMPATIBLE CHANGES:
262     - remove signal functionality, it is not worth the effort.
263     - max_outstanding no longer returns the previous number of requests.
264     - poll_cb no longer returns number of requests.
265 root 1.143
266 root 1.142 2.62 Sat Apr 26 13:59:33 CEST 2008
267 root 1.141 - port to solaris perls configured for old posix
268     (analysed by Jost Krieger).
269 root 1.142 - keep a reference to the perl filehandle object in aio_close,
270     so it doesn't get closed prematurely, leading to ugly races.
271 root 1.141
272 root 1.140 2.61 Wed Apr 16 18:45:02 CEST 2008
273 root 1.137 - fix treescan output duplication and improve output ordering.
274     also display files given on the commandline.
275 root 1.140 - use a different algorithm for aio_close that is faster
276     and probably has even lower chances of blocking.
277 root 1.138 - do our own stack memory management for threads - linux
278     allocates outrageous amounts of VM (not so bad unless you
279     use mlockall...), which severely limits the number of threads
280 root 1.139 on 32-bit arches: stack size is the larger of PTHREAD_STACK_MIN
281     and 4096 * sizeof (long) (usually this is 16..64k).
282 root 1.137
283 root 1.136 2.6 Sun Mar 30 08:28:11 CEST 2008
284 root 1.134 - added aio_sync.
285 root 1.135 - added aio_pathsync.
286 root 1.136 - fix prototypes of (void) functions.
287 root 1.134
288 root 1.133 2.51 Sat Oct 6 16:04:54 CEST 2007
289     - perlio isn't generally threadsafe, so aio_close could not work reliably.
290     aio_close now tries a safe hack that might not be that asynchronous
291     (see the manpage for details).
292     - discard callback return values as to not grow the stack endlessly
293     when poll_cb handles many requests without returning.
294     - minor code cleanups.
295    
296 root 1.132 2.5 Thu Oct 4 14:49:08 CEST 2007
297 root 1.131 - replaced _fd2fh with faster xs code.
298     - aio_close will now try to do "the right thing" and thus might
299     work sensibly for the very first time.
300    
301 root 1.130 2.41 Mon Sep 24 21:28:21 CEST 2007
302 root 1.129 - after fork, invest some work to make sure that the poll_fileno
303     stays stable (by dup2'ing the new fd over the old one), to make
304     it easier for programs/libs that don't control their forking
305     behaviour and cannot recreate their watchers.
306    
307 root 1.128 2.4 Sun Aug 5 18:44:22 CEST 2007
308 root 1.127 - add aio_truncate, aio_chmod, aio_chown, aio_utime (linux
309     successfully demonstrated that you can block on futimes...).
310 root 1.124 - allow undef as fileoffset for aio_read/write and use read/write(2)
311     internally (useful for sockets or O_APPEND handles).
312 root 1.126 - allow undef for length in aio_write.
313     - negative dataoffsets work as expected now in aio_read/aio_write.
314 root 1.124 - use NV instead of UV for 32 bit perls and file offsets, as NVs
315 root 1.125 have a larger range then.
316 root 1.120 - shared code between BDB and IO::AIO.
317 root 1.127 - aio_busy was completely broken. now fixed.
318     - readahead emulation now returns something.
319 root 1.121 - correctly set errno to ENOSYS on unimplemented functions
320     (should never happen, though).
321 root 1.127 - large changes to make it partially compile and run on win32,
322     but win32 lacks too much functionality, and perl overrides way
323     too many functions with crashing versions.
324 root 1.120
325 root 1.119 2.33 Tue Jan 23 23:55:41 CET 2007
326     - fix install path (Andreas J. Koenig).
327    
328 root 1.118 2.32 Mon Jan 22 16:56:23 CET 2007
329 root 1.114 - added aio_rmtree.
330 root 1.115 - wow, aio_mkdir was missing.
331 root 1.116 - aio_load did return undef on error, not -1.
332 root 1.117 - use prefixexp not prefix in autoconf.pm
333     (suggested by ... rt.cpan.org unreachable).
334 root 1.118 - avoid installing autoconf.pm.
335 root 1.114
336 root 1.113 2.31 Sat Jan 6 03:46:02 CET 2007
337 root 1.112 - added aio_load.
338    
339 root 1.111 2.3 Sat Dec 23 05:48:07 CET 2006
340     - fix off-by-one bug in aio_read, causing memory corruption
341     or crashes.
342    
343 root 1.110 2.21 Fri Dec 22 05:03:38 CET 2006
344 root 1.108 - minor doc updates.
345 root 1.107 - minor cleanups.
346     - IO::AIO::poll returns request count.
347 root 1.109 - undocumented and unfinished async-signal-reporting.
348 root 1.107
349 root 1.103 2.2 Tue Oct 31 00:31:00 CET 2006
350 root 1.100 - minor doc updates.
351 root 1.101 - added aio_readlink.
352     - properly zero-terminate aio_read buffer.
353     - fix aio_read/write with nonzero dataoffset.
354 root 1.104 - reduced size of aio request structure.
355 root 1.106 - better diagnostics when pathnames etc. are not byte-encoded;
356 root 1.105 do not leak request in that case, either.
357 root 1.94
358 root 1.99 2.1 Sun Oct 29 02:01:57 CET 2006
359 root 1.98 - INCOMPATIBLE CHANGE: replace IO::AIO::poll_some by
360     IO::AIO::max_poll_reqs and IO::AIO::max_poll_time.
361 root 1.95 - fix a bug in aio_move where it would fail everytime
362     it would have to copy files manually.
363 root 1.98 - doc updates.
364 root 1.94 - start threads only on (very low) demand.
365 root 1.97 - end superfluous threads automatically after 10s idling.
366 root 1.98 - add IO::AIO::max_idle to control this.
367 root 1.94 - some tuning applied to random places.
368 root 1.95 - add aio_mknod.
369 root 1.59
370 root 1.92 2.0 Thu Oct 26 18:27:58 CEST 2006
371 root 1.90 - minor incompatibility: max_outstanding semantics have changed.
372 root 1.86 - major rewrite, consider all functionality EXPERIMENTAL.
373 root 1.68 - aio requests can be cancelled.
374 root 1.81 - callbacks can be (re-)set later.
375 root 1.93 - aio requests can choose between 9 priorities.
376 root 1.83 - add aio_group: aio requests can be grouped
377     into composite requests.
378     - generator interface for groups.
379 root 1.89 - add IO::AIO::poll_some.
380 root 1.72 - major documentation improvements.
381     - very minor bugfixes.
382 root 1.76 - add aio_nop for dummy requests.
383 root 1.84 - add aio_busy mainly for benchmarking and debugging.
384 root 1.79 - use "fast" mutexes on linux.
385 root 1.80 - use dynamic (and larger) buffers instead of
386     putting them onto the stack.
387     - optimise x86 and amd64 a bit.
388     - better error checking when ENOMEM.
389 root 1.85 - hopefully fix mem and dirp leaks on fork.
390 root 1.92 - warn about broken perl malloc.
391 root 1.88 - compiles on cygwin (but pread is broken on cygwin
392     which is not detected by autoconf, so you have to
393     edit autoconf/config.h yourself to enable emulation).
394 root 1.68
395 root 1.67 1.8 Sat Jun 24 22:20:44 CEST 2006
396 root 1.66 - add and/or document aio_rename, aio_link, aio_symlink and aio_move.
397    
398 root 1.65 1.73 Wed Mar 1 22:49:32 CET 2006
399     - codename "jost"
400     - AIX/Solaris(?) aren't being helpful again, hardcode a value
401     for NAME_MAX and drive with your eyes closed (reported by
402     wcooley@nakedape.cc).
403 root 1.63
404 root 1.62 1.72 Thu Feb 2 00:40:44 CET 2006
405 root 1.61 - another minor bug in aio_scandir, again, the callback was called
406     twice when the directory can't be stat'ed.
407    
408 root 1.60 1.71 Mon Dec 26 20:20:03 CET 2005
409     - grr, another minor bug in aio_scandir, this time resulting
410     in a runtime error.
411    
412 root 1.59 1.7 Mon Dec 26 19:29:48 CET 2005
413 root 1.58 - aio_scandir errornously called callback twice in some cases.
414 root 1.57 - added AnyEvent example.
415    
416 root 1.55 1.61 Wed Sep 7 19:40:42 CEST 2005
417 root 1.54 - no longer include $Config{libs}, as distros include too much
418 root 1.56 garbage in there that is not installed on typical systems
419 root 1.54 (for example, debian links perl against -lgdbm and many more
420     libraries despite perl not needing it, slowing down startup and
421     wasting memory).
422    
423 root 1.53 1.6 Tue Aug 30 17:44:44 CEST 2005
424     - added aio_readdir, aio_scandir.
425 root 1.51 - added aio_sendfile, including sendfile emulation when sendfile
426     isn't available. Linux, FreeBSD and HP-UX might work (sendfilev
427     support is unavailable on my solaris 8 machine, but preliminary
428     code is there. What's lacking is configury stuff and testing...).
429 root 1.46
430 root 1.44 1.5 Sat Aug 20 02:32:19 CEST 2005
431 root 1.51 - create the aio threads on demand only (good after forking).
432 root 1.41 - somebody nagged about C89 compatibility, so this release should
433 root 1.42 be C89 compatible, but no guarantees for future ones.
434 root 1.43 - abort when the configure script fails.
435 root 1.41
436 root 1.40 1.4 Wed Aug 17 08:07:27 CEST 2005
437 root 1.93 - forgot to recreate the pipe after forking, this could cause
438 root 1.40 deadlocks.
439    
440 root 1.39 1.3 Wed Aug 17 07:25:54 CEST 2005
441 root 1.33 - properly propagate exceptions from callbacks, instead of silently
442     eating them.
443 root 1.38 - use a different fork algorithm that avoids recursive callback
444     invocations and reduces fork latency in busy processes.
445 root 1.37 - fix a bug where the buffer scalar in aio_read got assigned the wrong
446     length after reading.
447     - fix a bug where the child would process some outstanding requests
448     from the parent.
449     - make a copy of the callback scalar, to avoid some very uncommon
450     (but valid) usages where the callback scalar changes.
451     - the callback was never freed in aio_read/aio_write.
452 root 1.38 - aio_read/aio_write will now set the readonly flag on the data
453     scalar for better error reporting.
454 root 1.33
455 root 1.32 1.2 Wed Aug 17 01:22:58 CEST 2005
456     - verified on cygwin, linux/amd64+ia32+alpha, solaris.
457 root 1.31 - use SvPVbyte for filenames now. You *need* to encode your strings to
458     the external filename encoding first.
459 root 1.32 - fix the bug where filehandles could leak (again).
460 root 1.31 - clarify freebsd situation: make it work and tell me how, or go away
461     with your underdocumented, broken and outdated OS.
462     - fork'ing should now be officially supported (where linux and
463     posix contradict each other, I followed posix).
464 root 1.32 - only call read() once per poll, not twice (speedup).
465     - new functions: aio_rmdir, aio_symlink.
466 root 1.31 - force callback arguments to be undef or a reference, for better
467     error catching.
468 root 1.1
469 root 1.29 1.1 Sun Aug 7 05:27:23 CEST 2005
470 root 1.25 - added configure script to detect availability of some calls.
471 root 1.27 (imperfect, as we cannot detect things like -lrt due to missing
472 root 1.23 feedback yet).
473 root 1.27 - emulate fdatasync via fsync, pread/pwrite via unsafe read/write
474     and readahead via manual reading on platforms lacking those.
475 root 1.19 - ported t/03_errors.t+framework by Brad Fitzpatrick
476     from Linux::AIO.
477 root 1.18 - removed XOPEN_SOURCE because stupid solaris 9 doesn't
478     compile with it enabled. Probably breaks others. Oh well.
479 root 1.24 - try to be more careful with errno on non-threaded perls.
480 root 1.26 - cygwins perl insisted on a matching open mode when morphing
481     the fd to an fh.
482 root 1.28 - convert sv's to "byte" encoding in aio_read/aio_write. Might
483     do that for pathnames, too, in the future, so make sure you
484     properly encode your pathnames.
485 root 1.18
486 root 1.17 1.0 Fri Jul 22 10:43:30 CEST 2005
487     - aio_open did not reliably deliver (open) filehandles.
488 root 1.16 - all aio_*-functions keep a reference to the filehandle so
489     it doesn't go away while the aio requests is working on it.
490     - disable warnings in AIO.pm.
491    
492 root 1.15 0.9 Wed Jul 20 23:55:04 CEST 2005
493     - allow recursive calls to poll_cb, use less locking calls, too.
494     - fix the Gtk2-example in the SYNOPSIS.
495 root 1.14 - use pread/pwrite not pread64/pwrite64. this was simply a leftover
496     from Linux::AIO.
497     (found by compiling on cygwin. Unfortunately, cygwin declares but
498     does not implement pread/pwrite).
499     - only include <sys/syscall.h> on linux.
500    
501 root 1.13 0.5 Tue Jul 12 13:03:09 CEST 2005
502 root 1.12 - removed #include <endian.h>, it's not portable, and we don't
503     need it anyway.
504     - link against -lrt, as it might contain goodies such as fdatasync,
505     and often aio_read, which we do not use yet, but it shouldn't hurt.
506    
507 root 1.11 0.4 Mon Jul 11 05:28:25 CEST 2005
508 root 1.9 - added IO::AIO::flush, IO::AIO::poll.
509 root 1.10 - make callback argument optional for all calls.
510 root 1.8
511 root 1.7 0.3 Mon Jul 11 01:42:37 CEST 2005
512 root 1.5 - restructured manpage.
513 root 1.7 - added SYNOPSIS with examples for Event, Glib, Tk.
514     - remove explicit context support so I don't have to maintain
515     it for threaded perls (i.e. it should work now :).
516 root 1.5
517 root 1.4 0.2 Sun Jul 10 22:57:12 CEST 2005
518 root 1.2 - return immediately from poll_wait if nreqs==0.
519     - get rid of the request pipe and use faster thread-thread
520 root 1.3 communications for most requests and responses.
521 root 1.2
522 root 1.1 0.1
523     - cloned from Linux::AIO, which is very similar.
524