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