ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/Changes
Revision: 1.192
Committed: Wed Oct 1 14:49:23 2008 UTC (15 years, 7 months ago) by root
Branch: MAIN
Changes since 1.191: +3 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 Revision history for Perl extension AnyEvent.
2    
3 root 1.191 4.3
4     - fix a bug in AnyEvent::Handle where in SSL connect mode, the
5     client would first wait for some data by the server and
6     otherwise hang. (Reported and analyzed in an absolutely
7     exemplary manner by Adam Rosenstein).
8     - fix a bug in AnyEvent::Handle where SSL EOF would not be treated
9     as stream EOF, putting the connection into a hung state.
10     (Reported and analyzed in an absolutely exemplary manner by Adam
11     Rosenstein).
12     - fix a potential segfault in AnyEvent::Handle when the TLS context
13     would go missing in a read callback (e.g. due to stoptls) -
14     Net::SSLeay of course makes no type checking whatsoever.
15 root 1.192 - AnyEvent::Handle will not stop the read watcher in TLS mode.
16     - AnyEvent::Handle->stoptls will send a TLS close notify
17     instead of simply destroying the stream now.
18 root 1.191
19 root 1.190 4.234 Mon Sep 29 04:08:13 CEST 2008
20 root 1.189 - fix child watcher documentation: only child exits will be reported,
21     no trace events.
22 root 1.190 - mention SIGPIPE in AnyEvent::Handle.
23     - perl backend will now use POSIX::times as monotonic clock
24 root 1.188 when available and the monotonic clock option is not.
25 root 1.187 - run even without Time::HiRes in some cases now, but do not
26 root 1.190 provide sub-second accuracy (all *supported* perl versions have
27 root 1.187 Time::HiRes).
28    
29 root 1.186 4.233 Fri Aug 22 01:48:05 CEST 2008
30     - fix a bug in the testsuite, causing a hang.
31     - clarified lots of AnyEvent::Handle constructor arguments.
32    
33 root 1.185 4.232 Thu Aug 21 20:44:25 CEST 2008
34     - fix a bug in AnyEvent::Handle that could cause two fatal error
35     callbacks on EOF, which caused AnyEvent::HTTP to signal success twice
36     (testcase by Leon Brocard).
37     - clarified on_eof/on_error documentation a bit.
38    
39 root 1.184 4.231 Tue Jul 29 13:12:15 CEST 2008
40     - remove some debugging code left in AnyEvent::Util::fork_call
41     (and no, it's impossible to implement with the broken windows
42     perls without resource leaks or worse).
43    
44 root 1.183 4.23 Tue Jul 29 12:19:59 CEST 2008
45 root 1.177 - document the first parameter passed to condvar callbacks to be
46     the callback.
47 root 1.178 - add AnyEvent::Socket::{ntoa,aton} aliases.
48 root 1.180 - optimize the AE::Handle->push_read (line) for the default
49 root 1.179 eol marker.
50 root 1.180 - optimize push_read (packstring|storable) for small packets.
51 root 1.182 - invoke on_error callback when no on_eof callback is set.
52 root 1.180 - fix a bug in push_read (storable) of unknown impact.
53 root 1.177
54 root 1.176 4.22 Sun Jul 20 16:34:13 CEST 2008
55 root 1.174 - new function AnyEvent::Socket::parse_hostport.
56 root 1.175 - as the bulkheads at microsoft can't even get getprotobyname reliably
57     working on their shitty fucking broken os we need to hardcode
58     some common protocol numbers in AnyEvent::Socket. How can
59     people even bother with such a pile of shit as windows.
60 root 1.174
61 root 1.173 4.21 Thu Jul 17 14:40:05 CEST 2008
62 root 1.171 - INCOMPATIBLE CHANGE: AnyEvent::Util::fork_call now has a prototype
63     which is incompatible to previous invocation syntax.
64 root 1.172 - work around more windows perl bugs in fork_call. I cannot imagine
65     why anybody would bother implementing fork in such an obviously
66     unusable way.
67     - avoid calling $do_retry if the request has already finished in
68     AnyEvent::DNS, thus avoiding an exception (reported by Anatoly
69     K. Sharifulin).
70 root 1.170
71 root 1.169 4.2 Sat Jul 12 22:42:11 CEST 2008
72 root 1.165 - support an "interval" argument for repeating timers.
73 root 1.164 - fix a bug in the pure perl event loop that caused timers to
74     be delayed under some circumstances.
75 root 1.167 - implement optional argument checking via PERL_ANYEVENT_STRICT.
76 root 1.169 - not importing anything from Event causes it to malfunction
77     and not use Time::HiRes, work around this bug.
78     - more bug workarounds against the endlessly broken Tk module,
79 root 1.168 seems to work now on 32 bit machines, but less so on 64 bit.
80 root 1.164 - minor optimisations applied to most backends.
81    
82 root 1.163 4.161 Fri Jul 4 14:24:48 CEST 2008
83 elmex 1.162 - fixed the t/handle/02_write.t, it read after write, with the
84 root 1.163 assumption that all data could be written before read
85     (reported by Jim Razmus).
86 elmex 1.162
87 root 1.161 4.160 Thu Jul 3 04:02:21 CEST 2008
88 root 1.160 - re-registering signal watchers after unregistering one did
89     not work if a backend falls back on AnyEvent's default
90     implementation (also affected child watchers).
91 root 1.159 - new AnyEvent::Handle options: autocork and no_delay.
92    
93 root 1.158 4.152 Sun Jun 22 14:15:44 CEST 2008
94 root 1.159 - allow for 32-bit perls that implement shifts differently
95     on different architectures in parse_ipv4 (reported and
96 root 1.158 analysed by Keiichi DAIBA).
97    
98 root 1.157 4.151 Fri Jun 6 17:34:24 CEST 2008
99     - make sure specifying _only_ on_read and never pushing reads
100     works.
101    
102 root 1.155 4.15 Fri Jun 6 13:00:46 CEST 2008
103 root 1.154 - the pure perl backend would keep some watchers alive when more than
104     one watcher was registered for the same fd.
105 root 1.155 - new "packstring" and "storable" read and write types
106     for AnyEvent::Handle.
107 root 1.156 - allow on_eof handler to be called after on_error with EPIPE returns.
108 root 1.153 - do not immediately call on_read callback in handle constructor.
109    
110 root 1.152 4.14 Thu Jun 5 20:29:31 CEST 2008
111 elmex 1.149 - Fixed a bug in DNS SRV priority sorting.
112 root 1.150 - AnyEvent::Util::guard now reports runtime errors while
113     executing the guard block as warnings.
114 root 1.152 - handle 0-byte-reads just before EOF correctly in AnyEvent::Handle.
115 elmex 1.149
116 root 1.148 4.13 Thu Jun 5 00:47:59 CEST 2008
117 root 1.146 - AnyEvent::DNS only followed cname chains with length 2,
118     contrary to documentation. bumped it up to 10, thanks to
119     microsoft, the current broken-dns-config-king.
120 root 1.147 - AnyEvent::DNS didn't check for socket return status
121     but instead relied on perl not creating filehandles in that
122     case - too bad it gives you a bogus file handle (reported
123     and analysed by Vladimir Timofeev).
124 root 1.145 - fix queue management logic in AnyEvent::Handle:
125     when on_read was registered, the queue was empty
126     and no progress could be made AnyEvent::Handle would
127     enter an endless loop.
128     - correctly start reading again when the handle became
129     busy again after idling.
130 root 1.146 - correctly treat tls shut-downs as EOF condition
131     (for the time being, would be nice to have a callback for that).
132 root 1.145 - correctly call eof callback under all conditions
133     (hopefully).
134 root 1.146 - the timeout callback did not expect that $self can go
135     away any time.
136 root 1.145
137 root 1.144 4.12 Tue Jun 3 10:58:04 CEST 2008
138     - include AnyEvent::Intro, a tutorial for anyevent,
139     anyevent::socket and anyevent::handle.
140 root 1.143 - allow more options in on_error.
141 root 1.142
142 root 1.141 4.11 Fri May 30 23:42:25 CEST 2008
143 root 1.135 - INCOMPATIBLE CHANGE: replace ptr by real PTR lookup, provide
144     reverse_lookup and reverse_verify to replace it, support
145     v4mapped and v4compat addresses.
146 root 1.129 - provide more documentation for the resolver class.
147 root 1.130 - really replace longest run of :0: by :: in format_address,
148     also properly convert :: and ::1 again.
149 root 1.134 - support NAPTR record name and decode it.
150 root 1.133 - implement random weight sampling for SRV records, as per
151     rfc 2782.
152 root 1.137 - correctly abort on srv-record targets of ".".
153     - added AnyEvent::DNS::wait_for_slot.
154 root 1.138 - in the unlikely event of a virtual circuit connection
155     being invalidated by a delayed udp reply, AnyEvent::DNS
156     could die. this has been fixed.
157     - plug a probable memleak in the DNS vc code.
158     - use configured timeout also for VC request phase.
159 root 1.139 - implement timeout and max_outstanding methods
160     for resolver class.
161 root 1.140 - update version numbers in all modules.
162 root 1.129
163 root 1.128 4.1 Thu May 29 05:45:40 CEST 2008
164 root 1.123 - INCOMPATIBLE CHANGE: renamed xxx_ip functions to xxx_address
165     which mirrors their purpose better (old names still available
166     for a while). Also moved AnyEvent::DNS::addr to
167     AnyEvent::Socket::resolve_sockaddr.
168 root 1.127 - implement AnyEvent->time and AnyEvent->now.
169 root 1.124 - fix IPv6 support in pack_sockaddr.
170 root 1.123 - officially un-experimentalise all newly introduced code.
171     - support unix domain sockets everywhere by specifying
172     a host of "unix/" and the pathname as service.
173 root 1.126 - implement an activity timeout in AnyEvent::Handle.
174 root 1.122 - added a regex read type to AnyEvent::Handle.
175     - added a json read/write type to AnyEvent::Handle.
176 root 1.118 - always croak in on_error in AnyEvent::Handle.
177     - document how to subclass AnyEvent::Handle.
178 root 1.120 - implement AnyEvent::Util::fork_call.
179 root 1.127 - add support for IPv6 nameservers and nameserver statements.
180 root 1.121 - work around _yet_ _another_ windows perl bug in where empty
181     select masks cause errors in the pure perl backend (this
182     workaround cannot be implemented for the other event loops,
183     but EV also works around this).
184 root 1.123 - supply AnyEvent::Socket::address_type and make good use of it.
185 root 1.122 - clarify and fix the Handle documentation w.r.t $self vs. $handle
186     vs. callback arguments.
187 root 1.127 - add some recommends to the META.yml.
188 root 1.117
189 root 1.116 4.05 Mon May 26 19:44:06 CEST 2008
190     - some platforms ignore the rfc and prepend an extra sa_len member to
191     the sockaddr structure, cater for those. also use sockaddr_family,
192     didn't know it was there, but comes in handy for the workaround.
193 root 1.114 - undo the import WIN32 hack.
194    
195 root 1.113 4.04 Mon May 26 08:03:31 CEST 2008
196 root 1.109 - try to work around yet another windows bug: failed connects are reported
197 root 1.110 as if it were out-of-band data. windows users: you suck. Only
198     EV, Glib, Event and the pure perl backend can handle this condition.
199 root 1.111 - optimize write algorithm in AnyEvent::Handle.
200 root 1.106 - properly parse PERL_ANYEVENT_PROTOCOLS and use the info correctly.
201 root 1.112 - tcp_connect now properly iterates through all targets.
202 root 1.104 - check wether IPv6 sockets can actually be created, otherwise, disable ipv6
203 root 1.114 support entirely. also hardcode some AF_INET6 constants for the
204 root 1.107 sake of perl 5.8.
205 root 1.106 - vastly improved nameserver/suffix detection algorithm for windows
206     (still a hack...)
207     - try to use a fallback dns server if no dns servers could be found.
208 root 1.108 - splatter around some local $SIG{__DIE__}'s to work around bad
209     die handlers.
210 root 1.104
211 root 1.102 4.03 Sun May 25 05:05:57 CEST 2008
212 root 1.100 - work around perl bugs on windows, where perl returns undocumented
213     error codes for sysread, syswrite etc.
214 root 1.96 - fix AnyEvent::Handle::unshift_read to really unshift and not push.
215 root 1.97 - AnyEvent::Handle could sometimes stumble over 0-byte writes.
216 root 1.101 - fix unpack_sockaddr, now works for AF_INET6 sockaddr's.
217 root 1.100 - updated documentation.
218 root 1.103 - lots of workarounds for perl 5.8 quirks.
219 root 1.98 - implement a more flexible type system for both reads and writes
220     in AnyEvent::Handle.
221 root 1.101 - support IPv6 in tcp_server.
222     - pass local hostname and port to the prepare callback in tcp_server.
223 root 1.99 - make types extendable in AnyEvent::Handle.
224 root 1.100 - croak, not die, in AnyEvent::Handle;
225 root 1.96
226 root 1.95 4.0 Sat May 24 19:58:08 CEST 2008
227 root 1.88 - added (experimental) AnyEvent::DNS module.
228     - added (experimental) AnyEvent::Socket module.
229 root 1.93 - added (experiemntal) support for TLS/SSL in AnyEvent::Handle.
230 root 1.90 - make condvar->end call ->send as documented.
231     - make condvar constructor support the documented cb => argument.
232 root 1.94 - overload condvars so you can use them instead of code references.
233 root 1.93 - support more of the POSIX forms instead of a pure dotted quad for
234 root 1.89 verbatim ip addresses.
235 root 1.88 - AnyEvent::Socket::inet_aton will use AnyEvent::DNS now and not fork anymore.
236 root 1.87 - try very hard not to freeze on broken windows perls.
237 root 1.86 - make on_eof optional in AnyEvent::Handle.
238 root 1.83 - support service names in tcp_connect and tcp_server.
239 root 1.84 - work around netbsd/openbsd bug causing unix sockets not to
240 root 1.121 become writable until empty.
241 root 1.81 - only make a dummy read for error detection when getpeername
242     returns ENOTCONN.
243 root 1.181 - defend AnyEvent::Util::inet_aton against Coro::LWP's brutal
244 root 1.82 override.
245 root 1.91 - new AnyEvent::Guard::cancel.
246 root 1.81
247 root 1.80 3.5 Sat May 17 23:17:14 CEST 2008
248 root 1.79 - gracefully deal with systems not defining CLOCK_MONOTONIC
249     (as opposed to not supporting the clock itself, which worked in 3.41).
250 root 1.77 - added AnyEvent::Util::tcp_connect and AnyEvent::Util::tcp_server
251     helpers, to replace the ill-designed AnyEvent::Socket class.
252     - added some examples (eg/connect, eg/handle).
253     - added AnyEvent::Util::guard.
254     - AnyEvent::Util now exports most of its functions.
255 elmex 1.74 - fixed a bug in *_read_chunk, where the callback was called with $self as
256     first and second argument.
257 root 1.77 - simplified and fixed regex handling in AnyEvent::Handle::*_read_line.
258 root 1.72 - fix manpage condvars examples to use new syntax.
259 root 1.78 - considerably improve inet_aton with EV::ADNS backend to support
260     cname chains (common dns configuration bug, e.g. with www.google.de)
261     and aaaa records if no a record could be found.
262 root 1.72
263 root 1.71 3.41 Sun May 11 19:53:13 CEST 2008
264     - work around a bug in perl 5.8.8's local. Reported by Yi Ma Mao.
265    
266 root 1.70 3.4 Sun May 11 00:29:25 CEST 2008
267 root 1.181 - complete re-implementation of condvars with a hopefully much more useful
268 root 1.70 API (backward compatible functions exist but are undocumented).
269 root 1.69 - AnyEvent::Handle fully rewritten with a hopefully more powerful API
270     (still subject to change).
271 root 1.63 - take advantage of CLOCK_MONOTONIC, if available, in AnyEvent::Impl::Perl.
272 root 1.68 - provide AnyEvent::post_detect and @AnyEvent::post_detect, which
273 root 1.67 allows module authors to avoid forcing event loop detection.
274     (used by Coro::AIO, Coro::BDB, Coro::AnyEvent for example).
275 root 1.66 - remove coro backends: Coro now provides generic support for AnyEvent
276     via Coro::AnyEvent.
277 root 1.63
278 root 1.62 3.3 Mon Apr 28 09:51:06 CEST 2008
279     - added AnyEvent::Handle, AnyEvent::Socket and AnyEvent::Util modules.
280 root 1.55 - fix a bug in the pure perl backend that kept watchers alive
281     when multiple watchers were registered for the same fh/poll combo.
282 root 1.54 - add a benchmark section showing AnyEvent overhead and comparing
283     the different event loops with each other.
284 root 1.56 - prefer pure perl over tk when autoprobing, as it's about as fast,
285     but doesn't crash with many watchers.
286 root 1.62 - declare Qt support non-experimental.
287 root 1.56 - clarify the confusing section about the file descriptor being
288     kept alive.
289     - document the race between loading of an event module and
290     child processes exiting.
291 root 1.53 - support POE as "backend" (with some caveats, POE is not generic
292 root 1.54 enough, and darn slow).
293 root 1.53 - support Wx and Prima through POE.
294 root 1.60 - optimise perl backend to use 20% less memory and take advantage
295 root 1.62 of typical timeout behaviour. It can now compete with
296 root 1.60 select/poll-based C event loops in most cases (it is usually
297     faster than Event and Glib :).
298 root 1.59 - roughly cut EV memory use in half and increase its speed by 30%,
299 root 1.62 by removing undocumented functionality. Did something similar
300     to other event loops where possible.
301 root 1.53
302 root 1.50 3.2 Thu Apr 24 10:10:40 CEST 2008
303 root 1.51 - do not die when anyevent watchers are destroyed while running callbacks
304     in the pureperl backend (could only happen when two watchers are registered
305     for the same fh/poll combo).
306     - support autoloading for child watchers, was broken in all versions.
307 root 1.47 - implement PERL_ANYEVENT_MODEL env variable.
308 root 1.49 - (experimental) implement interface to the (very crashy/buggy) Event::Lib module.
309     - (experimental) implement interface to the Qt module (cannot be autoprobed).
310 root 1.52 - this release is IO:AnyEvent-proof.
311 root 1.47
312 root 1.46 3.12 Tue Apr 22 07:11:46 CEST 2008
313     - reinstate AUTHOR section that got lost somehow.
314     - do not hang in the testsuite with badly broken perls (activestate,
315     strawberry...), but instead diagnose the problem and continue.
316     - use INT instead of CHLD in an attempt to support broken windows perls
317     better (this decreases the test quality, unfortunately).
318     - do not send the signal to the process group
319     (no problem for CHLD, bad for INT :).
320    
321 root 1.45 3.11 Sat Apr 19 06:57:31 CEST 2008
322     - major documentation rework.
323     - document the fact that child watchers only watch for zombies.
324     - fix the child watcher example.
325    
326 root 1.43 3.1 Wed Apr 16 17:09:01 CEST 2008
327 root 1.40 - work around recurring bugs in Tk by dup'ing filehandles, the
328 root 1.43 only method with good success chances on Tk (the bugs apparently
329     don't get fixed anytime soon).
330 root 1.42 - lift the restriction of only one watcher per fh direction
331     (as the Tk bug workaround also lifts it and only Tk imposed
332     such strong limits).
333 root 1.41 - changed probe order to prefer coro adaptors.
334     - explain why recursion into the event loop is not supported
335     unless the backend supports it (only Coro::EV does without
336     any restrictions...).
337     - add simple manpages for all backend modules.
338 root 1.40
339 root 1.39 3.0 Mon Apr 7 21:30:23 CEST 2008
340 root 1.38 - Coro::Signal changed semantics, roll our own, also cleaning
341     up the Coro implementation in general.
342     - rename Coro backend to CoroEvent.
343     - add some decision helping paragraph to the manpage that should
344 root 1.44 help people to decide whether AnyEvent is the right thing for them.
345 root 1.38
346 root 1.37 2.9 Mon Jan 28 13:31:54 CET 2008
347     - update for EV 3.0 API changes.
348    
349 root 1.36 2.8 Sun Nov 25 15:06:03 CET 2007
350     - waitpid can validly return 0. accept this fact of life
351     instead of reporting it to any watchers.
352    
353 root 1.35 2.7 Fri Nov 23 11:41:14 CET 2007
354 root 1.34 - force use of AnyEvent::Impl::Perl in testsuite, there is
355     too much breakage outside AnyEvent.
356 root 1.35 - deliver signals synchronously in AnyEvent::Impl::Perl
357     or any other event loop that relies on AnyEvents child
358     watcher emulation. *Could* help with hanging testsuite
359     (except when Event or EV are installed).
360 root 1.34
361 root 1.33 2.6 Fri Nov 9 20:36:35 CET 2007
362 root 1.32 - fix bug in testsuite.
363     - move EV adaptor modules to AnyEvent.
364     - add Coro+EV adaptor module.
365 root 1.26
366 root 1.31 2.55 Tue Nov 6 17:41:32 CET 2007
367 root 1.27 - add EV to the list of supported event models.
368 root 1.30 - do not auto-reset pid watchers, pass pid and status to them.
369 root 1.29 - allow a pid of zero to watch for all children in child watchers.
370 root 1.27
371 root 1.25 2.54 Wed Jul 18 17:36:23 CEST 2007
372     - work around a perl bug that results in
373     BEGIN not safe after errors--compilation aborted without
374     any discernible reason or error message by once
375     again not use'ing strict.
376    
377 root 1.24 2.53 Sun Jul 8 10:51:53 CEST 2007
378     - make Glib interface work again (spotted by elmex).
379    
380 root 1.22 2.52 Wed Mar 7 18:36:16 CET 2007
381     - child watchers stopped working permanently when
382 root 1.23 all current child watchers were destroyed.
383 root 1.22
384 root 1.21 2.51 Mon Dec 11 21:33:24 CET 2006
385     - work around bugs in perl where eval "require Module" returns
386     true even if the module couldn't be loaded :/.
387    
388 root 1.20 2.5 Mon Dec 11 02:15:28 CET 2006
389 root 1.19 - avoid $AUTOLOAD because many perls corrupt it.
390 root 1.20 - AnyEvent::detect forces autodetection.
391     - implement signal watchers (experimental)
392     (Tk does not support async signals (<= 804.027 at least),
393     so they might get delayed indefinitely on Tk).
394     - implement child watchers (experimental).
395     - moved default condvar implementation into base module, simplifying
396     most implementation modules.
397 root 1.14
398 root 1.18 2.1 Fri Nov 24 15:50:48 CET 2006
399 root 1.16 - better docs.
400     - simple testsuite.
401 root 1.17 - added AnyEvent->one_event method for special purposes.
402 root 1.16
403 root 1.15 2.0 Wed Nov 1 02:21:30 CET 2006
404 root 1.13 - INCOMPATIBLE CHANGE: poll can now either be "r" or "w" but not both.
405     - INCOMPATIBLE CHANGE: io watcher callbacks have no arguments anymore.
406     - EXPERIMENTAL:
407     new pure-perl model added, AnyEvent now always finds a suitable
408     event model.
409 root 1.12 - improved documentation.
410     - reduced cpu overhead.
411    
412 root 1.11 1.02 Fri Jan 13 14:15:40 CET 2006
413     - add COPYING to clarify license.
414    
415 root 1.10 1.01 Sun Jan 8 05:48:09 CET 2006
416     - correctly cancel Event timers, avoid memory leaks.
417    
418 root 1.9 1.0 Sun Jan 8 05:40:58 CET 2006
419 root 1.8 - allow third-party interfaces to be added at runtime.
420     - fix version number.
421    
422 root 1.7 0.9 Fri Dec 30 02:25:41 CET 2005
423 root 1.6 - fixed errors in the documentation.
424 root 1.7 - going back to using $VERSION as "load check",
425     as suggested by Jörn Reder. Let's see why I stopped using
426     this method.
427     - add 'hup' to the list of events to receive for glib
428     and generate 'rw' events for it, as some versions of
429     glib seem to require this, while this breaks other
430     (older) versions of glib.
431     - implemented PERL_ANYEVENT_VERBOSE env variable.
432 root 1.6
433 root 1.5 0.3 Sun Dec 4 10:43:33 CET 2005
434     - no changes to the code.
435     - fixed documentation.
436     - clarified some corner cases.
437     - vastly improved documentation with a long example.
438    
439 root 1.3 0.2 Thu Dec 1 22:18:49 CET 2005
440 root 1.44 - check whether a valid method was called, to avoid endless loops.
441 root 1.4 - move condvars into their own class (cleaner, safer).
442     - don't die when some modules are not available.
443     - Tk is too broken to allow for words. Will work once Tk works.
444 root 1.3
445 root 1.2 0.1 Thu Dec 1 19:44:57 CET 2005
446     - spiced up and cleaned up for release.
447    
448 root 1.1 0.01 Tue Sep 21 18:12:09 CEST 2004
449     - original version; copied from Convert::Scalar.
450