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