ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/Changes
Revision: 1.310
Committed: Sun Jan 6 11:48:14 2013 UTC (11 years, 5 months ago) by root
Branch: MAIN
CVS Tags: rel-4_19
Changes since 1.309: +2 -0 lines
Log Message:
4.19

File Contents

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