ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Changes
Revision: 1.535
Committed: Wed Apr 14 01:56:02 2010 UTC (14 years, 1 month ago) by root
Branch: MAIN
CVS Tags: rel-5_22
Changes since 1.534: +3 -1 lines
Log Message:
5.22

File Contents

# User Rev Content
1 root 1.1 Revision history for Perl extension Coro.
2 root 1.113
3 root 1.382 TODO: should explore PerlIO::coroaio (perl leaks like hell).
4 root 1.487 TODO: unready_all
5 root 1.490 TODO: myhttpd header parsing
6 root 1.494 TODO: channel->maxsize(newsize)?
7 root 1.534 TODO: http://www.microsoft.com/msj/archive/s2ce.aspx
8    
9 root 1.535 5.22 Wed Apr 14 03:55:35 CEST 2010
10     - correctly return udnef on errors in Coro::Handle::read/write
11     (testcase by Marc Wims).
12 root 1.532 - convert Coro::Util into a "perl compatibility wrapper" - the functions
13     are less useful now, but are drop-in replacements for existing
14     functions, listing better alternatives in the documentation. This also
15     fixes a bug in Coro::LWP which naively substituted Socket::inet_aton
16     with Coro::Util::inet_aton.
17 root 1.533 - do not override $Coro::idle unconditionally in Coro.pm, as other
18     modules could have provided their own idle coro already
19     (for exmaple, Coro::AnyEvent).
20 root 1.532 - fix Coro::Util::gethost* functions.
21 root 1.534 - Coro::Timer corretcly exports it's symbols (reported by Hideki Yamamura).
22 root 1.532
23     5.21 Wed Dec 16 07:19:51 CET 2009
24 root 1.530 - automatically load Coro::AnyEvent when AnyEvent and Coro are used
25     together.
26     - add some examples on how to combine other event loops with Coro in
27 root 1.531 Coro::AnyEvent, and how to run it (and not to block). Seems to be
28     the most common source of confusion.
29     - try to catch people naively blocking in an event callback.
30     - work around the perl filehandle bug issue in conjunction with
31     older common::sense (as indirectly pointed out by ZSystem).
32 root 1.529 - clarify the "not from signal handlers" section.
33    
34 root 1.528 5.2 Sun Oct 4 14:54:24 CEST 2009
35 root 1.524 - Coro::Storable destroyed the prototypes of the functions it wrapped.
36 root 1.527 - export rouse_cb and rouse_wait by default now.
37 root 1.524 - fix various prototype mismatches in Coro::AnyEvent and Coro::Handle.
38 root 1.527 - new method $state->swap_sv.
39 root 1.522 - added section on "windows process emulation" to the manpage,
40     after a not-so-fruitful (nor-friendly) "discussion" with chip
41     salzenberg (discussion implies arguments, but his only arguments
42     were ad-hominems, one wonders why he started it in the first
43 root 1.523 place). I hope this explains it well enough for him to understand,
44     and maybe well enough for others to understand.
45 root 1.524 - use common::sense everywhere now.
46 root 1.525 - idle callbacks are no longer supported, use idle coros instead.
47     - print a thread listing when a deadlock is detected.
48 root 1.522
49 root 1.521 5.17 Sat Aug 22 23:09:31 CEST 2009
50 root 1.520 - work around a bug in the perl debugger causing crashes
51     when running under the debugger by marking _pool_handler as nodebug.
52 root 1.519 - speed up Coro::async considerably.
53 root 1.521 - try some hacks to get netbsd to work "more often" - their broken
54     setjmp/longjmp, ucontext *and* phtreads are really hard on Coro.
55     - convert Coro to AE 5.0 API.
56 root 1.519
57 root 1.518 5.162 Tue Jul 28 04:04:03 CEST 2009
58 root 1.517 - perl 5.8.2 is now minimum requirement.
59 root 1.518 - skip t/19_handle.t on broken windows perls.
60 root 1.517
61 root 1.516 5.161 Wed Jul 22 04:47:38 CEST 2009
62     - Coro::AnyEvent::poll could have a different prototype when EV was
63     used as backend (analyzed by Tatsuhiko Miyagawa).
64 root 1.515 - Coro::AnyEvent errornously initialised the event loop when loaded,
65     not on demand.
66 root 1.516 - try to workaround rare */t/01_unblock.t failures.
67 root 1.515
68 root 1.514 5.16 Tue Jul 21 01:44:37 CEST 2009
69 root 1.512 - Coro::AnyEvent failed to hook into the event loop
70     when no threads had been readied between detecting
71     the event loop and actually running it.
72 root 1.509 - considerably speed up Coro::Select by taking avdantage
73     of AnyEvent > 4.8 and some other optimisations.
74 root 1.514 - implement paragraph readline mode in Coro::Handle
75     (based on patches by Zsbán Ambrus).
76 root 1.513 - replace WSAEINPROGRESS by WSAEWOULDBLOCK (reported
77     and analyzed by Yasuhiro MATSUMOTO).
78 root 1.511 - clarified libcoro license and copyright.
79 root 1.510 - someone stole my EXTRA_META!!!
80 root 1.512 - implement Coro::Select::patch_pp_sselect and it's brother,
81     for hardcode select overriding.
82 root 1.509
83 root 1.508 5.151 Mon Jul 6 05:41:57 CEST 2009
84 root 1.506 - backport to windows process emulation code again (patch by
85     Yasuhiro MATSUMOTO).
86 root 1.507 - slightly update Coro::MakeMaker.
87 root 1.506
88 root 1.505 5.15 Tue Jun 30 10:28:06 CEST 2009
89 root 1.502 - deprecate Coro::Socket, document how to get ipv6 support via
90     AnyEvent::Socket instead.
91 root 1.500 - implement signal->wait ($cb) interface, similar to semaphores.
92 root 1.501 - work around SvOK not supporting getmagic, so we have to getmagic
93     to test for undef :/ (reported by Matthias Waldorf).
94 root 1.502 - load Coro::AnyEvent in all modules using AnyEvent.
95 root 1.503 - work around perl corrupting our internal data structures,
96     reported by Tokuhiro Matsuno.
97 root 1.504 - enable per-coroutine real and cpu time gathering
98     (Coro::State::enable_times).
99 root 1.500
100 root 1.499 5.14 Wed Jun 24 01:37:48 CEST 2009
101 root 1.497 - provide explicit functions to "cede" to the event loop in Coro::AnyEvent,
102     as this seems to have been a difficult concept (poll, sleep, idle,
103     idle_upto).
104     - add Coro::AnyEvent::readable/writable functions.
105     - clarify Coro::EV/Event/AnyEvent manpages.
106 root 1.496 - free per-thread global scalars in the thread calling ->cancel, to
107     avoid crashes when $_, $@ etc., are magical but some of those
108     had already been freed.
109 root 1.499 - "unexperimentalise" the callback interface for Coro::Semaphore.
110 root 1.493 - speed up ready queue management/context switching by using a linked
111 root 1.492 list instead of an array (~5-10%).
112 root 1.493 - implement "watch" command in Coro::Debug shells.
113 root 1.494 - for fun, implement time-slicing as an example in the manpage.
114 root 1.497 - if AnyEvent detects EV or Event, but we don't have Coro::EV or
115     Coro::Event, use the normal AnyEvent handling instead of dieing
116     (the same is true for Coro::Handle).
117     - properly document Coro::EV::timed_io_once.
118 root 1.498 - avoid unneccessary ->cancel calls in Coro::Handle.
119     - maybe make it work on mingw32 with win32 backend
120     (based on patch by Yasuhiro Matsumoto).
121 root 1.492
122 root 1.490 5.132 Fri May 29 09:00:39 CEST 2009
123 root 1.488 - do not keep a reference to the argument itself in
124 root 1.491 Coro::Semaphore::guard, as it could change later.
125 root 1.489 - support SO_RCVBUF/SO_SNDBUF nonstandard Coro::Socket options,
126     should support a prepare callback.
127 root 1.488
128 root 1.487 5.131 Mon Mar 16 23:20:37 CET 2009
129 root 1.485 - implement and document Coro->suspend, Coro->resume.
130 root 1.486 - fix Coro::Select implementation to not (often) close
131     the passed file descriptors (testcase provided by pippijn).
132 root 1.485
133 root 1.484 5.13 Mon Dec 15 21:51:42 CET 2008
134 root 1.481 - EXPERIMENTAL: implement dynamic winds (on_enter/on_leave).
135 root 1.476 - don't set diehook to C<undef> but instead to NULL, to avoid
136     spurious warnings.
137 root 1.478 - fix a lot of bugs in Coro::SemaphoreSet.
138     - Coro::SemaphoreSet will less often create a semaphore needlessly.
139     - add Coro::SemaphoreSet::count and wait methods.
140 root 1.477 - take advantage of the new Guard module.
141     - deprecate Coro::guard.
142 root 1.479 - try to fix the dreaded 01_unblock tests once more. I hate it when
143     testsuites need more fixing than the code they are supposed to test.
144 root 1.480 - croak in more cases when a required callback isn't resolvable.
145     - fix some minor issues in Coro::State->call/eval.
146     - use current coroutine context instead of a temporary one
147     when temporarily switching to another coroutine.
148 root 1.484 - do not call C-level on_destroy handlers during global destruction,
149     to avoid needless segfaults.
150 root 1.476
151 root 1.475 5.12 Sun Dec 7 13:30:38 CET 2008
152 root 1.467 - add default config for MirOS, which seems to be a bug-to-bug
153     compatible fork of openbsd ("world domination by releasing
154     openbsd cvs before the openbsd folks do it" or so :).
155 root 1.468 - free_padlist did destroy the names pad, not good, but didn't
156 root 1.470 seem to bother perl - this could fix issues such as eval ""
157 root 1.477 inside a function called from multiple coroutines.
158 root 1.467 - use a different method to detect destruction time.
159     - be more careful when freeing padlists just before global
160     destruction.
161 root 1.469 - fixed and expanded the call/cc example.
162 root 1.471 - renamed _terminate to _coro_run.
163 root 1.473 - new method Coro::Channel->shutdown.
164     - try pthreads on openbsd <4.4 (broken sigaltstack, will
165     pthreads fare better?).
166     - be less picky about destroying "a" running coroutine.
167 root 1.466
168 root 1.465 5.11 Tue Nov 25 21:49:05 CET 2008
169 root 1.464 - DEBUGGING in 5.10.0 is a mess: it constantly flags perfectly
170     working code with failed assertions, introducing more bugs than
171     it fixes, requiring elaborate workarounds :(
172    
173 root 1.463 5.1 Mon Nov 24 08:54:59 CET 2008
174     - wrote a small introductory tutorial - Coro::Intro.
175 root 1.454 - convert Coro::Timer, Coro::Select and Coro::Util to rouse API.
176 root 1.453 - Coro::Select did errornously dup the file descriptors
177     and didn't work with all AnyEvent backends.
178 root 1.463 - Coro::Select wasn't imported correctly form Coro::LWP, causing blocking
179     LWP data transfers.
180 root 1.458 - disassociate c contexts from coro objects - this is agruably more
181     correct, but mostly allows sharing of cctxs between coro and state
182     objects, for added memory savings and speed increases.
183 root 1.455 - bumped $Coro::POOL_RSS up to 32kb by default.
184 root 1.456 - no longer set the optype to OP_CUSTOM, as B::* understandably
185     doesn't like this very much (and we *are* a type of entersub).
186 root 1.458 - implement state cloning, just to prove that call/cc can be done.
187 root 1.460 - automatically load Coro::AnyEvent in Coro::Handle.
188 root 1.461 - wrap ->cancel calls in eval inside Coro::Handle as EV watchers
189     do not have this method (and don't need it either).
190     - speed up generic anyevent methods in Coro::Handle by using rouse
191     callbacks.
192     - allow coroutines in $Coro::IDLE, speeding up Coro::AnyEvent and
193     others. It also makes the debugger happier, as you can trace
194     through the idle threads now.
195 root 1.462 - add comppad_name* and hints ($^H, %^H) to per-thread variables.
196 root 1.461 - eg/event was pretty broken.
197 root 1.457 - better 5.8.6 compatibility.
198 root 1.453
199 root 1.452 5.0 Thu Nov 20 10:35:05 CET 2008
200 root 1.424 - NEW ARCHITECTURE: use the latest 4.x version if you experience
201     stability issues.
202 root 1.411 - bump API version to 7 - all dependents must be recompiled.
203 root 1.430 - removed timed_* functions - they were not being used anyways
204     and should be replaced by a more generic mechanism -
205 root 1.429 and were annoying to support anyways :)
206 root 1.451 - removed SemaphoreSet's waiter method - use sem method instead.
207 root 1.415 - Coro::Semaphore->adjust didn't correctly wake up enough waiters.
208 root 1.416 - async_pool did free a scalar value twice
209     ("Attempt to unreference...").
210 root 1.420 - fix a longstanding bug where calling terminate on a coro that
211     was waiting for a semaphore that was just becoming available
212     would cause a deadlock (semaphore would get into a state where
213 root 1.433 it was available but waiters were still blocked).
214 root 1.432 - calling throw on a coroutine that is waiting for a semaphore will
215     no longer make it acquire the semaphore (and thus leak a count).
216 root 1.412 - perl's process emulation is now not even theoretically supported
217     anymore.
218 root 1.447 - new functions Coro::rouse_cb and Coro::rouse_wait for easier
219     conversion of callback-style to blocking-style.
220     - new methods $coro->schedule_to and ->cede_to, to specifically
221     schedule or cede to a specific coroutine.
222 root 1.433 - new function Coro::Semaphore::wait.
223 root 1.428 - use named constants in Coro::Channel (Richard Hundt).
224 root 1.412 - directly patch the entersub opcode calling SLF functions (cede,
225     transfer and so on). this does speed up context switching, but
226     more importanly, it frees us from the hardcoded behaviour of
227     entersub, so we might actually be able to return something from
228     those functions and atcually create new ones.
229     - take advantage of __builtin_frame_address on gcc.
230     - expose THX in coroapi (not sure whether this was a wise decision,
231     as "threaded" perls are running at half speed anyways).
232     - implement execute_slf (schedule-like-function) interface that makes
233     it possible to implement schedule-like-functions in XS.
234 root 1.424 - use new SLF interface to massively speed up Coro::EV by roughly a
235     factor of two.
236     - used new SLF interface to massively speed up Coro::Semaphore by a
237     factor of three.
238 root 1.426 - used new SLF interface to speed up Coro::AIO by roughly a factor of
239     four and reduce its memory usage considerably.
240 root 1.429 - implement Coro::SemaphoreSet purely in terms of Coro::Semaphore,
241     for a nice speedup and vastly more correct behaviour. Also implement
242     a new method "sem" to get at the underlying semaphore object.
243 root 1.430 - implement Coro::Channel in terms of Coro::Semaphore, for a moderate
244     (in comparison) 20-40% speedup.
245 root 1.435 - used new SLF interface to reimplement Coro::Signal gaining
246     some unknown (because I was too lazy), but certain, speedup, and also
247     making signals reliable for the first time.
248 root 1.445 - used new SLF interface and other optimisations to speed up async_pool
249     by a factor of two. It also doesn't rely on perl's exception mechanism
250 root 1.446 to exit anymore. The overhead for terminating an async_pool, coro over
251     a normal async is now very small.
252 root 1.444 - sped up coroutine creation/destruction by 40%.
253 root 1.417 - forgot to include Coro/libcoro/README in the dist for all these years.
254 root 1.418 - work around a freebsd pthreads bug (manual testcancel is required as
255     pthread_cond_wait isn't a cancellation point on freebsd).
256 root 1.438 - use new rouse functions to speed up and simplify Coro::BDB.
257 root 1.439 - make "prefer perl native functions" work with threaded perls.
258 root 1.440 - condense Coro::Debug ps output, hint at v and w flags.
259 root 1.436 - (libcoro) lots of minor cleanups and portability improvements.
260 root 1.416
261 root 1.449 4.914 Wed Nov 19 12:54:18 CET 2008
262     - fix a disastrous bug in the readline optimisation
263     introduced in 4.801.
264    
265 root 1.416 4.913 Sat Nov 15 07:58:28 CET 2008
266     - async_pool did free a scalar value twice
267     ("Attempt to unreference...").
268 root 1.408
269 root 1.407 4.912 Thu Nov 13 18:31:23 CET 2008
270 root 1.404 - minor cleanups.
271 root 1.405 - use much larger stacks on linux and perl < 5.8.8.
272 root 1.406 - Coro::Debug::new_unix_server did not unlink the socket
273     when destroyed.
274 root 1.404
275 root 1.403 4.911 Tue Nov 11 04:26:17 CET 2008
276 root 1.401 - "port" to threaded perls.
277    
278 root 1.400 4.91 Mon Nov 10 05:36:38 CET 2008
279     - the ->throw exception object no longer leaks.
280     - creating a new cctx leaked a scopestack entry (memleak).
281     - new coroutines didn't get created with a zero flags field
282     (unknown impact).
283 root 1.399 - calling ->throw on a not-yet-started coroutine should now work
284     instead of being ignored.
285 root 1.400 - ->throw is now supported on Coro::State objects.
286 root 1.398 - clean up cctx creation code a bit.
287 root 1.400 - entersub is actually a UNOP, not a LOGOP (not a bugfix).
288 root 1.398
289 root 1.397 4.9 Sat Nov 8 17:45:27 CET 2008
290 root 1.392 - (libcoro) did not preserve rbp with CORO_ASM (we are getting there).
291     - (libcoro) no longer leak threads in the experimental pthread backend,
292     also speed it up considerably.
293 root 1.394 - (libcoro) do not rely on makecontext passing void *'s unscathed.
294 root 1.392 - fix compiletime dependencies on libcoro in the Makefile.
295     - cctx_count wasn't always updated properly.
296 root 1.393 - Coro::State::cctx_stacksize wasn't applied correctly.
297     - new function Coro::State::cctx_max_idle.
298     - the default max number of idle C contexts is now 4.
299 root 1.394 - (libcoro) try harder to get _setjmp/_longjmp.
300     - (libcoro) cleanup and extend the libcoro API to officially
301     allow the creation of empty source contexts.
302 root 1.395 - very experimental workaround for the totally broken netbsd platform.
303 root 1.396 - tried to hack around openbsd bugs.
304 root 1.391
305 root 1.390 4.804 Wed Nov 5 16:36:00 CET 2008
306 root 1.389 - Coro::Debug::new_unix_server would not create a non-blocking listening
307 root 1.390 socket, sometimes causing freezes.
308 root 1.392 - (libcoro) fix misaligned stack points for setjmp and assembly
309     methods, which can cause crashes on x86/x86_64 with a sufficiently
310     aggressive compiler.
311 root 1.389 - new function: Coro::Debug::new_tcp_server.
312 root 1.388 - move ->throw into the Coro class because it only works on coro objects.
313    
314 root 1.387 4.803 Mon Nov 3 17:16:12 CET 2008
315 root 1.392 - (libcoro) use a global asm statement to become independent of gcc
316     otpimisations for CORO_ASM (thanks to pippijn for the idea).
317 root 1.387 - try to workaround yet another broken bsd, this time dragonfly.
318 root 1.386
319 root 1.385 4.802 Thu Oct 30 10:56:12 CET 2008
320     - support -fno-omit-frame-pointer on x86 with the assembly method.
321 root 1.383 - tune 01_unblock.t tests a bit.
322    
323 root 1.382 4.801 Wed Oct 22 18:33:37 CEST 2008
324 root 1.381 - improve readline speed for very long "lines".
325 root 1.382 - backport to 5.8.8.
326 root 1.381
327 root 1.380 4.8 Thu Oct 2 13:34:40 CEST 2008
328 root 1.378 - new function Coro::AIO::aio_wait.
329     - Coro.:AIO and Coro::BDB now "use Coro::AnyEvent".
330     - greatly speed up and reduce memory usage of Coro::AIO requests.
331 root 1.379 - implement some other µ-optimisations.
332 root 1.378
333 root 1.377 4.749 Mon Sep 29 14:40:12 CEST 2008
334     - port to slow and broken pseudo-threaded perls. (courtesy pippijn).
335    
336 root 1.376 4.748 Sat Sep 27 14:03:19 CEST 2008
337 root 1.374 - implement, but do not document, PerlIO::cede(granularity).
338 root 1.372 - Coro::Storable forgot to wrap Storable::pstore.
339 root 1.374 - work around the multitude of leaks and memory corruption
340 root 1.375 bugs in PerlIO::via by using our own C-level perliol. As a side
341     effect, Coro::Storable is now much, much, much faster.
342 root 1.372
343 root 1.371 4.747 Tue Sep 23 01:59:41 CEST 2008
344 root 1.369 - fix a per-cv memleak (one empty array was leaked per
345     code reference).
346 root 1.370 - avoid a crash in coro->call|rss when the coroutine was already
347     destroyed (most noticably when using Coro::Debug::ps :)
348     - also protect *Storable::FILE.
349 root 1.371 - push up default storable granularity to 20ms.
350 root 1.369
351 root 1.368 4.746 Sun Sep 21 03:22:20 CEST 2008
352     - be more insistent on locking Storable against reentrancy
353     in Coro::Storable.
354 root 1.366 - move swap_def?v and throw to Coro::State, as documented.
355    
356 root 1.365 4.745 Thu Jul 24 00:14:38 CEST 2008
357 root 1.364 - remove debugging code related to MgPV_nolen_const, also try to
358     make it compile with perl 5.8.6 (yes, apple apparently loves
359     outdated software). Reported by John S.
360 root 1.363
361 root 1.362 4.744 Tue Jul 8 22:06:35 CEST 2008
362 root 1.361 - correctly provide default DIE/WARN handlers as documented.
363     - also overwrite PL_vtbl_sigelem.svt_clear, even though current
364     implementations inside perl work fine for us.
365    
366 root 1.360 4.743 Mon Jun 16 00:21:57 CEST 2008
367     - when using Coro::EV without running EV::loop it could
368     result in busy-waiting for events, this has been fixed.
369     - reduce codesize and improve performance by using EV_DEFAULT_UC.
370    
371 root 1.359 4.742 Sat May 31 14:10:21 CEST 2008
372     - implement a workaround for (some) perl <5.8.8 versions.
373     - require EV 3.3+.
374    
375 root 1.358 4.741 Fri May 30 23:33:09 CEST 2008
376     - tell netbsd how utterly broken their imitation of an OS is
377     and refuse to build by default if pthreads are in use.
378     - switch to "s" method on all bsd's by default, as their ucontext
379     stuff seems just too broken.
380     - fix a bug in Coro::Select.
381    
382 root 1.357 4.74 Thu May 29 20:05:31 CEST 2008
383     - do not test Coro::LWP for lack of dependencies.
384     - do not test Coro::Select for lack of working perls.
385    
386     4.73 Thu May 29 2008
387 root 1.356 - fix a bug in Coro::EV which would cause it to block despite
388     there being runnable coroutines.
389 root 1.354 - sprinkle "no warnings" freely over everything, also suppress
390     warnings for some other modules.
391 root 1.355 - fix typo in WSAEWOULDBLOCK.
392 root 1.354
393 root 1.353 4.72 Sun May 25 05:14:36 CEST 2008
394 root 1.351 - tweak META.yaml a bit, unfortunately, there is no documented way
395     to have optional dependencies with CPAN. doh :(
396 root 1.350 - avoid running some tests on windows because they would fail due to
397 root 1.351 perl bug (broken fork, broken pipes...).
398     - work around perl on windows bugs where perl returns undocumented
399     error codes for sysread, syswrite etc. by taking advantage
400     of AnyEvent's workaround for that problem.
401 root 1.350 - use AnyEvent::Util::fh_nonblocking in Coro::Handle to work around
402     a common perl implementation bug on windows.
403     - use unix domain sockets in testsuite to work around
404 root 1.351 common perl implementation bugs on widows (they are emulated by
405     tcp sockets on windows. ugh.)
406 root 1.350
407 root 1.349 4.71 Sat May 24 20:01:27 CEST 2008
408 root 1.348 - fix a bug in Coro::AnyEvent ("Usage: Coro::AnyEvent::_schedule()").
409 root 1.347 - take advantage of async name resolution of AnyEvent::Util.
410     - work around brutal inet_aton override in Coro::LWP.
411 root 1.348 - take advantage of the readyhook in Coro::EV, for smoother
412     scheduling.
413 root 1.347
414 root 1.346 4.7 Sun May 11 00:32:19 CEST 2008
415 root 1.342 - completely reworked the Coro manpage.
416     - added Coro::AnyEvent, generic event loop integration.
417 root 1.341 - implement cancel, ready and kill commands in Coro::Debug.
418     - document find_coro in Coro::Debug.
419 root 1.343 - incompatible change: rename has_stack to has_cctx.
420 root 1.346 - Coro::AIO and Coro::BDB no longer force event model detection,
421     use AnyEvent::AIO and AnyEvent::BDB.
422 root 1.341
423 root 1.340 4.6 Sat Apr 26 10:05:14 CEST 2008
424 root 1.336 - INCOMPATIBLE CHANGE: sub/code attributes are no longer supported
425 root 1.339 by the Coro module. It was a mistake to have it in the first place.
426     - (experimental) support for activestate perl 5.10 (method "w").
427     - (experimental) support for strawberry perl (method "a").
428 root 1.337 - coro_sigelem_set did not return a value although it had to,
429     actual impact unknown.
430 root 1.336
431 root 1.335 4.51 Mon Apr 14 13:28:27 CEST 2008
432     - make it compile again on 5.8.
433    
434 root 1.334 4.50 Thu Apr 10 09:43:17 CEST 2008
435     - I did it twice! (see 4.49).
436    
437 root 1.333 4.49 Sun Apr 6 21:23:31 CEST 2008
438     - grr, instead of compiling the recent changes on 5.10 only they
439     were compiled on 5.8 only.
440    
441 root 1.332 4.48 Sun Apr 6 20:36:46 CEST 2008
442 root 1.331 - allow coroutine switches during eval's under 5.10.x, as it seems
443     the parser is a per-interpreter option now, so this is safe
444     (this might fix the odd crashing bug).
445 root 1.332 - drop support for 5.9.x versions: they are dead, jim.
446 root 1.331
447 root 1.330 4.47 Sun Apr 6 00:37:52 CEST 2008
448 root 1.329 - force cctx allocation on API calls: we know we need to force one
449     and gcc actually manages to confuse our heuristic nowadays,
450     leading to crashes and worse.
451 root 1.330 - document force_cctx.
452 root 1.329
453 root 1.328 4.46 Fri Apr 4 22:05:43 CEST 2008
454     - upgrade libcoro, resulting in pthread-backend (which was only created
455     to fulfill the rules of the programming languages shootout).
456    
457 root 1.327 4.45 Thu Mar 13 11:55:36 CET 2008
458 root 1.322 - fix a file leaking bug in eg/mhyttpd that would allow
459     downloading of any file (reported by oesi).
460 root 1.325 - fix deadlock bug in Coro::Channel (reported by Richard Hundt)
461     (also add testcase).
462 root 1.323 - support Broadcast option in Coro::Socket (patch by Richard Hundt,
463     apparently having loads of fun with that).
464 root 1.324 - implement $state->swap_defsv, ->swap_defav and document ->throw.
465 root 1.322
466 root 1.321 4.4 Wed Feb 13 16:44:29 CET 2008
467 root 1.319 - only assume .cfi pseudo isns exist on GNU/Linux.
468 root 1.320 - add get_timed method to Coro::Channels.
469 root 1.321 - fixed Coro::Debug manpage.
470     - perl 5.11 compatbility improvement based on patch by
471     Andreas König.
472 root 1.319
473 root 1.318 4.37 Sun Jan 20 11:25:23 CET 2008
474 root 1.317 - soften the check for an active parser for perl 5.10 (avoiding
475     "Coro::State::transfer called while parsing" in many cases).
476 root 1.316
477 root 1.315 4.36 Sun Jan 13 10:53:56 CET 2008
478 root 1.314 - reset diehook when terminating from an async_pool as to not
479     trigger any __DIE__ handlers.
480    
481 root 1.313 4.35 Sun Jan 13 04:14:13 CET 2008
482 root 1.308 - "bt" debug command now displays any exceptions
483 root 1.311 from longmess and also skips the innermost
484     stackframes, giving more useufl output.
485 root 1.309 - allow backtraces in coroutines blocked in Coro::EV,
486 root 1.310 at a <1% speed hit.
487 root 1.312 - handle localising of $SIG{__WARN__} and __DIE__
488 root 1.314 properly (with a proper amount of dirty hacking).
489 root 1.308
490 root 1.307 4.34 Sat Dec 22 17:49:53 CET 2007
491 root 1.306 - upgrade to EV version 2.0 API.
492    
493 root 1.305 4.33 Mon Dec 17 08:36:12 CET 2007
494     - make Coro::AIO etc. loadable in the absence of EV.
495    
496 root 1.304 4.32 Mon Dec 17 07:46:02 CET 2007
497 root 1.301 - majorly improved Coro::Handle's performance with Coro::EV.
498 root 1.302 - implemented the until now mythical Coro::BDB module.
499 root 1.304 - specialcase EV in Coro::AIO and Coro::BDB for extra speed.
500 root 1.301
501 root 1.300 4.31 Wed Dec 5 12:32:39 CET 2007
502     - remove warn statement form Coro::Util.
503    
504 root 1.299 4.3 Tue Dec 4 20:33:14 CET 2007
505     - calls to the idle function could cause stack corruption
506     when the stack changed.
507 root 1.295 - do no longer rely on the presence of EV::DNS if EV is used
508     (because it is gone), but instead take avdantage of EV::ADNS
509     if available.
510 root 1.296 - add ($) prototypes to all functions in Coro::Storable.
511 root 1.297 - use a conventional (safer) idle callback in Coro::EV.
512 root 1.298 - do accept quickly in Coro::Debug to avoid endless loops.
513 root 1.295
514 root 1.294 4.22 Fri Nov 30 16:04:04 CET 2007
515 root 1.293 - really use optimised versions for Event and EV in Coro::Util
516     and Coro::Handle.
517    
518 root 1.292 4.21 Sun Nov 25 10:48:59 CET 2007
519 root 1.290 - fix a spurious memory read.
520 root 1.291 - Coro::EV no longer keeps the eventloop "alive".
521 root 1.290
522 root 1.289 4.2 Fri Nov 9 20:47:05 CET 2007
523 root 1.282 - enable/disable tracing from a new coroutine, not a pooled one.
524 root 1.283 - fix a memleak in Coro::Event.
525 root 1.284 - removed killall call from fork_eval.
526     - made sure store_fd is already loaded so that fork_eval
527     does not have to parse autoload in each subprocess.
528 root 1.288 - only use assembly method if -O switch is in $Config{optimize}.
529 root 1.289 - add (optional) Coro::EV module, so far the best event loop module
530     directly supported by Coro.
531     - if the event model is EV, use EV::DNS to resolve
532     stuff in Coro::Util.
533 root 1.286 - don't get confused by multiple event notifications in Coro::Handle.
534 root 1.287 - initial support for EV (libevent interface).
535 root 1.289 - require Event and EV using configure_requires, to force their existance.
536 root 1.282
537 root 1.281 4.13 Wed Oct 24 07:26:45 CEST 2007
538 root 1.277 - add Coro::Storable::blocking_thaw.
539 root 1.278 - use a vastly more complicated technique to localise
540     $SIG{__WARN/DIE__} that also works on perls <= 5.8.8.
541 root 1.279 - use a coroutine for the idle callback Coro::Event,
542     instead of running Event in the current coroutine context.
543     This also catches recursive invocations.
544 root 1.280 - actually report fork errors in gethostbyname and inet_aton.
545 root 1.277
546 root 1.276 4.11 Thu Oct 11 02:40:24 CEST 2007
547     - port to threaded perls.
548    
549 root 1.275 4.1 Thu Oct 11 02:38:16 CEST 2007
550 root 1.264 - incompatible change: $SIG{__DIE__} and $SIG{__WARN__} will now
551     be local to each coro (see Coro::State).
552 root 1.274 - incompatible change: for very deep reasons, cede and cede_notself
553     cannot return anything, so nothing will be returned.
554 root 1.264 - possibly bring back 5.10 compatibility (untested).
555     - work around stupid (and wrong) warning on 5.10 :(.
556     - overlay the saved state over the context stack. This saves
557     a few hundred bytes per coroutine on average and also
558     speeds up context switching a bit.
559 root 1.265 - further tune default stack sizes.
560 root 1.264 - (more) correctly calculate stack usage in coro_rss.
561 root 1.267 - Coro::Storable::blocking_* did not properly lock
562     resulting in races between coroutines.
563     - added Coro::Storable::guard.
564 root 1.268 - stopping to trace a coroutine could destroy the cctx of
565     an unrelated coroutine.
566 root 1.269 - explain the relationship between Perl and C coroutines in
567     more detail in Coro::State.
568 root 1.270 - Coro::Util::inet_aton did not short-circuit dotted quad forms,
569     causing a fork per resolve. This also affected Coro::Socket.
570 root 1.272 - switch to a separate stack in $coro->call/eval to avoid
571     invalidating pointers.
572 root 1.264
573 root 1.263 4.03 Sat Oct 6 21:24:00 CEST 2007
574 root 1.262 - added Coro::throw method.
575     - minor code cleanups.
576    
577 root 1.261 4.02 Sat Oct 6 02:36:47 CEST 2007
578 root 1.258 - fix a very minor per-coroutine memleak (a single codereference).
579 root 1.259 - fixed a bug where the currently in-use c context would be freed
580     prematurely (can happen only when programs change the stacksize
581     or use tracing).
582     - tracing can no longer keep a coro alive after it terminated.
583 root 1.260 - do static branch prediction in the common path for gcc. gives
584     about 2-5% speed improvement here.
585 root 1.258
586 root 1.256 4.01 Fri Oct 5 22:10:49 CEST 2007
587 root 1.257 - instead of recreating *a* standard output handle we simply
588     use STDOUT, which is faster and hopefully more robust.
589 root 1.255
590 root 1.254 4.0 Fri Oct 5 12:56:00 CEST 2007
591 root 1.238 - incompatibly changed Coro::Storable::freeze.
592 root 1.244 - major new feature: added Coro::Debug, for interactive coroutine
593     debugging, tracing and much more.
594 root 1.252 - major bug fix: unbelievable, but true: $_, $/ and many other
595     "saved" variables actually weren't being saved. This has been fixed,
596     of course, while increasing performance while losing all the save
597     flags.
598 root 1.251 - save flags are gone, and all the api functions dealing with them.
599 root 1.232 - added Coro::Semaphore::adjust.
600 root 1.233 - added Coro::Util::fork_eval.
601     - added Coro::Storable::{nfreeze,blocking_{freeze,nfreeze}}.
602 root 1.248 - added Coro::killall.
603 root 1.236 - reduce initial stack sizes to allow for "micro-coroutines".
604 root 1.239 - better async_pool resource management, moved parts of async_pool
605 root 1.240 handling to XS (major speed improvement).
606 root 1.245 - actually croak before modifying important data structures.
607     - refuse to transfer while compiling.
608     - possibly support eval EXPR better now.
609 root 1.249 - enable assembly per default on linux+bsd x86+amd64.
610 root 1.253 - all internal members were renamed _something for easier subclassing.
611 root 1.237 - many minor tweaks.
612 root 1.232
613 root 1.231 3.63 Wed May 16 14:10:06 CEST 2007
614 root 1.230 - implement handcoded assembly for x86/amd64 SVR ABI.
615    
616 root 1.229 3.62 Fri Apr 27 21:36:06 CEST 2007
617     - upgrade libcoro (which might set unwind info correctly).
618 root 1.228 - change default on linux to setjmp/longjmp.
619 root 1.227
620 root 1.226 3.61 Thu Apr 19 12:36:18 CEST 2007
621 root 1.225 - Coro::Storable caused an endless loop when thawing invalid
622     pst's sometimes.
623 root 1.223 - use a Semaphore in Coro::Storable, as Storable doesn't
624 root 1.224 seem to be reentrant (although it is documented to
625     be threadsafe...).
626     - fix Coro::Signal to bring back the original unreliable
627     but stateful semantics.
628 root 1.226 - fixed a lot of typos in Coro.pm (patch submitted by David
629     Steinbrunner, which applied flawlessly).
630 root 1.223
631     3.6 Sat Apr 14 17:13:31 CEST 2007
632 root 1.217 - added some bugfixes to get eg/myhttpd working again.
633 root 1.218 - added Coro::Storable for often-cede'ing freeze/thaw.
634 root 1.219 - try to do a clean exit when a coroutine calls exit
635     (EXPERIMENTAL).
636 root 1.220 - got rid of indirect call through _coro_init.
637     - updated the partly antique examples in eg/ to
638     work again and be a bit less magic, too.
639     - fixed Coro::Signal semantics to work as documented again.
640 root 1.217
641 root 1.216 3.55 Sun Mar 25 01:20:47 CET 2007
642 root 1.215 - add SAVE_DEFFH to save the default filehandle and enable
643     it by default.
644     - finally move socket-operations from Coro::Socket to Coro::Handle
645     to be able to unblock foreign sockets.
646     - add Coro::State::save_also and guarded_save.
647 root 1.211 - add count accessor to Coro::Semaphore.
648 root 1.212 - add Coro::State::cctx_stacksize.
649 root 1.213 - just for the fun of it, do not rely on implicit context,
650     which can dramatically improve performance, but people
651     using windows-process-emulation perls do not care much about
652     performance.
653 root 1.211
654 root 1.210 3.51 Sun Mar 4 14:18:04 CET 2007
655 root 1.209 - fixed a problem when you weakened references to Coro::State's
656     (patch by Yuval Kogman).
657    
658 root 1.208 3.501 Wed Feb 28 12:44:07 CET 2007
659     - rename some global symbols as macosx from hell redefines
660     them without asking.
661    
662 root 1.207 3.5 Tue Feb 13 20:22:53 CET 2007
663 root 1.204 - do AnyEvent model detection earlier, avoiding problems
664     caused by first using AnyEvent and later Coro::Event.
665 root 1.205 - implement and document Coro::Event event objects.
666     - fix a potential problem in Coro::Event causing crashes.
667 root 1.206 - initialise PL_comppad when creating a new coroutine,
668     avoids crashes on early coro destruction.
669 root 1.204
670 root 1.203 3.41 Mon Jan 22 19:19:49 CET 2007
671 root 1.202 - readline on Coro::Handle did not support undefined $/,
672     nor did it deliver partial lines on EOF or error.
673 root 1.203 - implement malloc fallback for stack allocation because
674     stupid broken idiotic OSX has a stupid broken
675     idiotic fits-the-whole-os mmap "implementation" and
676     my dick feels longer if Coro is portable even to
677     obsolete platforms.
678 root 1.202
679 root 1.201 3.4 Fri Jan 19 21:52:54 CET 2007
680 root 1.197 - remove t/09_timer.t, as it isn't really testing much
681     but was rather flaky in practise.
682 root 1.198 - async_pool coro would keep arguments and callback alive until
683     it was reused.
684 root 1.199 - cancellation of a coroutine could cause spurious idle calls
685     in cede_notself.
686 root 1.197
687 root 1.196 3.3 Sat Jan 6 03:45:00 CET 2007
688 root 1.187 - implement $coro->on_destroy.
689 root 1.188 - Coro::Event blocking semantics have been changed,
690     documented and - hopefully - improved.
691 root 1.184 - fix nice adding, not subtracting, from priority.
692 root 1.185 - fix ->prio and api_is_ready (patch by Mark Hinds).
693 root 1.190 - fixed an assert ("... == prev__cctx->idle_te")
694     that could errronously trigger.
695 root 1.192 - fix various large and small memleaks.
696 root 1.191 - use a (hopefully) more stable cancel implementation
697     that immediately frees the coroutine data.
698 root 1.194 - cede/cede_notself return a status now.
699 root 1.191 - added Coro::guard function.
700 root 1.193 - added a global coroutine pool for jobs (on my machine,
701     I can create and execute 48k simple coros/s with async,
702     and 128k coros with async_pool).
703 root 1.195 - Coro::AIO now uses the coroutine priority as io priority.
704 root 1.184
705 root 1.183 3.2 Fri Dec 22 05:07:09 CET 2006
706 root 1.179 - improve portability to slightly older perls.
707 root 1.180 - use cleaner coroutine destruction.
708 root 1.182 - simplify configuration for users.
709     - optionally (unrecommended) prefer perl functions over
710     their coro replacements.
711 root 1.179
712 root 1.178 3.11 Tue Dec 5 13:11:24 CET 2006
713     - fixed some bogus assert's, but as perl.h disables assert even
714     without NDEBUG (thank you very much), not too many people should
715     notice (that did include myself). Andreas König noticed, though :)
716     - do not save/restore PL_sortcxix on >= 5.9.x, it doesn't seem to have
717     it. Also noticed by Andreas König :)
718     - save/restore tainted status.
719     - verified to pass the testsuite on my 5.9.5.
720    
721 root 1.177 3.1 Mon Dec 4 23:03:40 CET 2006
722     - INCOMPATIBLE CHANGE: $/ is now per-coroutine (but slow).
723 root 1.175 - incompatible change: transfer flags are now per-state.
724 root 1.173 - give a better error message on deadlock.
725 root 1.175 - document Coro::nready.
726 root 1.174 - enhanced testsuite.
727 root 1.169
728 root 1.172 3.01 Sun Dec 3 23:47:42 CET 2006
729     - forgot to include Coro::Timer.
730    
731 root 1.171 3.0 Sun Dec 3 22:57:25 CET 2006
732 root 1.163 - the "FINALLY COMPLETELY STABLE" release (coming soon:
733     the "FAMOUS LAST WORDS" release).
734 root 1.166 - implement a new stack sharing algorithm, which uses a stack
735     pool (size currently hardcoded).
736 root 1.155 - make stack sharing mandatory (it no longer uses a heuristic).
737 root 1.157 - eval/die no longer cause weird problems under heavy use.
738 root 1.152 - Coro::Event could cause livelocks if it was used but
739 root 1.161 no Coro::Event watchers were used.
740 root 1.167 - Coro::Event now uses asynccheck as prepare does not
741     check for changed watchers.
742 root 1.170 - Coro::Event allows multiple waiting coros and will wake up one
743     per event.
744 root 1.152 - Coro::Event should be cleaner and more efficient now.
745 root 1.165 - new utility function Coro::unblock_sub.
746 root 1.164 - document the sad fact that Event is no longer reentrant.
747 root 1.163 - putting a coroutine into the ready queue twice could under
748     some circumstances lead to stack corruption.
749 root 1.161 - minor incompatibility: subclassing Coro::State is supported
750     directly now without going through a _coro_state member.
751 root 1.156 - state/coro switching is much faster now.
752 root 1.154 - very minor optimisations and code/documentation cleanup.
753 root 1.153 - avoid problems due to compiler inlining.
754 root 1.154 - removed timers from Coro::Timer -> use AnyEvent instead.
755     - replaced Coro::idle coroutine by (cleaner) idle handler.
756 root 1.156 - updated to newest libcoro.
757 root 1.159 - implement enhanced support for valgrind.
758 root 1.162 - implement is_ready and return value for ready.
759 root 1.168 - removed Coro::Cont, it was a misnomer (it's generators),
760     and it was somewhat annoying to get it right. Will come back
761     if somebody asks for it :)
762 root 1.163 - many ->wait methods and Coro::Event could return
763     spuriously without the event having happened.
764 root 1.146
765 root 1.145 2.5 Tue Nov 7 12:22:33 CET 2006
766 root 1.143 - made Coro::Util, Coro::Select, Coro::Handle and Coro::Socket
767     use AnyEvent, moved them to Coro/.
768 root 1.140 - added Coro::LWP which contains all the uglyness required to
769     make LWP non-blocking.
770     - should work with perl 5.9.x now (Andreas König made me do it).
771 root 1.141 - fixed another bug in Coro::Select when the timeout was undef.
772 root 1.136 - reuse PL_start_env for all coros, saves some memory per coroutine.
773     - manage PL_top_env differently, hopefully to avoid panic: top_env.
774 root 1.137 - timeout argument was not properly used in Coro::Socket.
775     - allow limited forms of subclassing in Coro::Handle/Coro::Socket.
776 root 1.138 - emulate undocumented(!) functionality of IO::Socket required
777     by LWP(!!).
778     - updated eg/lwp to work with newer lwp's.
779 root 1.140 - remove "FATAL: uncaught exception" prefix. Coroutines that die
780     kill the whole process, just as exceptions in the main "coroutine"
781     did already.
782 root 1.135
783 root 1.134 2.1 Wed Nov 1 23:01:13 CET 2006
784     - fix a long-standing bug in Coro::Select where select with
785     zero timeout would instead change the current default filehandle.
786 root 1.132 - use a simpler and hopefully more robust way to clone padlists
787     (uses less memory and a perl function instead of our own).
788     - coro can now create a stack guard area on many architectures.
789 root 1.134 - Coro::AIO properly reexports additional functions from IO::AIO.
790 root 1.132 - updated libcoro with a workaround for OS X,
791 root 1.134 pach and testing by Michael Schwern.
792 root 1.130
793 root 1.129 2.0 Tue Oct 24 05:47:17 CEST 2006
794 root 1.128 - support additional aio requests in Coro::AIO.
795    
796 root 1.129 1.9 (never properly released due to a glitch)
797    
798 root 1.127 1.8 Thu Feb 2 00:59:06 CET 2006
799 root 1.125 - applied suggested patch by SAMV to avoid problems during stupid
800     mark & sweep gc run.
801 root 1.126 - applied patch by Scott Walters for 5.9.3 compatibility.
802 root 1.125
803 root 1.124 1.7 Tue Dec 27 01:41:58 CET 2005
804 root 1.123 - added Coro::AIO, a thin wrapper around IO::AIO.
805 root 1.122 - improved Makefile.PL explanations.
806    
807 root 1.119 1.6 Mon Dec 12 21:30:05 CET 2005
808 root 1.117 - additionally save PM_curpm might fix as-of-yet
809 root 1.121 unseen problems with regex matches being attributed to the
810 root 1.117 wrong package.
811 root 1.118 - add t/10_bugs.t, which currently checks against imho broken
812     perls that use 0.26MB of stack space per Perl_magic_get
813 root 1.121 invocation (newer linuxes) as opposed to the 0.0002MB perl
814     normally uses.
815 root 1.120 - make stacksize configurable for the ultimate debian experience.
816 root 1.117
817 root 1.116 1.51 Mon Dec 12 18:48:36 CET 2005
818     - remove debugging warn() accidentally left in Coro::Select.
819    
820 root 1.115 1.5 Tue Nov 29 13:32:44 CET 2005
821 root 1.114 - use Coro::Event inside Coro::Select to avoid spurious deadlocks.
822 root 1.115 - fix Coro::Select 'select'.
823     - strict'ify some modules.
824 root 1.112 - libcoro errornously restored the SIGUSR2 handler to SIGUSR1.
825 root 1.115 - use XSLoader in selected modules.
826     - remove some 5.6 compatibility cruft.
827 root 1.112
828 root 1.111 1.4 Tue Sep 6 00:11:05 CEST 2005
829     - libcoro did not take into account the trampoline on amd64,
830     when 'l'inux method was used.
831    
832 root 1.110 1.31 Tue Aug 30 23:31:33 CEST 2005
833     - some portability fixes/workarounds.
834    
835 root 1.107 1.3 Sat Aug 20 03:08:56 CEST 2005
836 root 1.108 - no code changes. module seems to work fine.
837 root 1.106 - improve Coro::State docs, remove reference to nonexisting
838     Coro::State::flush method.
839 root 1.107 - no longer autodetect windows, present it as an option instead.
840 root 1.106
841 root 1.105 1.2 Mon May 16 02:00:55 CEST 2005
842 root 1.100 - included libcoro.c earlier in State.xs, might improve portability.
843 root 1.101 - use a faster and possibly more stable Coro::Cont implementation.
844 root 1.102 - accept x86_64 in addition to amd64 for optimized linux-amd64 support.
845 root 1.104 - fix bugs Coro::SemaphoreSet that could cause locks never to be freed.
846 root 1.105 - fix bugs in CoroAPI.h and document it in Coro::MakeMaker.
847 root 1.100
848 root 1.99 1.11 Thu Mar 3 18:00:52 CET 2005
849     - change of contact address.
850    
851 root 1.98 1.1 Tue Feb 22 20:51:16 CET 2005
852 root 1.97 - support [l]inux method on amd64.
853 root 1.109 - allow some context switches while compiling/eval'ing.
854 root 1.97
855 root 1.96 1.0 Tue Aug 10 03:47:27 CEST 2004
856 root 1.95 - Event 0.89 fixes the bug again.
857 root 1.96 - fix the remaining(??) memleak. I didn't free the cache-AV for
858     padlists, so one AV per created anon-sub leaked.
859 root 1.95
860 pcg 1.94 0.97 Fri May 14 15:23:32 CEST 2004
861     - remove stupid gcc extension that was an experiment only anyway.
862    
863 pcg 1.93 0.96 Thu May 13 18:09:29 CEST 2004
864 root 1.103 - tell people if they have yet another broken Event variant.
865 pcg 1.91 - made Coro to work _better_ with threads (it seems that, as long
866     as you use Coros in one thread only everything will work fine.
867     Looking at the perl source the problem might be missing locking
868     between Coro and some perl internal routines. That's not easily
869     fixable).
870 pcg 1.92 - (hopefully) got rid of the static xnext inside transfer.
871 pcg 1.91
872 pcg 1.90 0.95 Sun Feb 15 03:20:28 CET 2004
873 pcg 1.86 - removed Coro::State::flush, implemented a new and much
874     faster caching mechanism by attaching magic to the CV.
875 pcg 1.87 - a memleak with (real) closures remains.
876 pcg 1.88 - dramatically reduced size of stacks to 65536 (linux/x86), after
877     observing that even myhttpd never had more than a kilobyte
878     of stack in use (stack is still only physically allocated in
879     pagesize increments for systems suporting mmap).
880 pcg 1.89 - fix for a "cygwin-64" architecture added, proposed by Stefan Traby.
881 pcg 1.90 - fix for threaded perl.
882 pcg 1.86
883 pcg 1.85 0.9 Sun Nov 23 04:32:39 CET 2003
884 pcg 1.84 - fix a few very hard to track down but (of course) stupid
885     memory leaks.
886     - stringify version number to avoid locale problems :(.
887 pcg 1.85 - perl 5.9.0 does not have SvPADBUSY, reported by Scott Walters,
888     hopefully ignoring it "just works".
889 pcg 1.84
890 pcg 1.83 0.8 Wed Nov 5 19:38:40 CET 2003
891     - port to perl5.005_03, but only 5.8.x+ is supported!
892 pcg 1.82 - honor LocalAddr even without LocalPort in Coro::Socket.
893    
894 root 1.81 0.7 Tue May 27 03:12:38 CEST 2003
895     - the version jump indicates some level of testing, not gobs
896     of new features.
897 root 1.80 - uh... I found the prompt function in ExtUtils::MakeMaker.
898     Highly correct stuff, that is...
899 root 1.81 - fixed(?) a bug with die's in coroutines causing "panic: top_env".
900     the fix is not well understood by the author, so beware :(.
901 root 1.80
902 root 1.79 0.652 Thu May 8 02:54:46 CEST 2003
903 root 1.76 - Applied patch by Slaven Rezic to set default to "s" on FreeBSD,
904 root 1.78 cause version 4 doesn't have ucontext.
905 root 1.77 - Benjamin Reed reported that setjmp works fine on darwin,
906     so preselect it.
907 root 1.76
908 root 1.75 0.651 Sat Mar 29 15:00:23 CET 2003
909     - fix a bug in Coro::Handle where some bytes could get lost
910     on reading, reported by jason@nichego.net.
911 root 1.74
912 root 1.73 0.65 Sun Mar 23 00:08:26 CET 2003
913 root 1.72 - added a README.linux-glibc.
914     - new module Coro::Select.
915     - also save/restore PL_comppad, fixes segfaults with 5.8.1.
916     (I never claimed that I know what I am doing ;).
917 root 1.73 - set default to setjmp/longjmp on non-x86-linux.
918 root 1.72
919 root 1.71 0.6 Thu Nov 21 11:09:06 CET 2002
920     - made lazy context switching the default.
921     - fixed the bug where SemaphoreSet::guard
922     was the same as timed_guard and timed_guard was missing.
923     - fix a memleak in Coro::Timer.
924     - reclassified context sharing as not experimental.
925    
926 root 1.70 0.534 Sun Apr 14 03:05:12 CEST 2002
927 root 1.69 - fixed backspace => tab in header parsing (myhttpd).
928 root 1.70 - added eg/readline, for elmex.
929     - Coro::Event now calls ->start on first call instead of
930     ->again, which created wrong timeouts for the first ->next.
931     - fixed a bug where Coro::Socket returned a closed socket instead
932     of nothing on ECONNREFUSED and similar error conditions.
933 root 1.69
934 root 1.68 0.533 Mon Feb 18 18:49:40 CET 2002
935     - adapt to finally working Event-0.85.
936     - fixed buggy event initialization (trapped under windows, but how
937     could it possibly have worked anywhere?)
938    
939 root 1.67 0.532 Wed Jan 16 02:45:32 CET 2002
940 root 1.66 - removed the reference to pp_entersub, might work on
941     (some) win32 perls now (testsuite works under cygwin,
942     without Event, which freezes).
943 root 1.65
944 root 1.64 0.531 Mon Dec 10 22:18:44 CET 2001
945 root 1.63 - Fixed a bug in SemaphoreSet::timed_down.
946    
947 root 1.64 0.53 Tue Nov 27 21:11:13 CET 2001
948 root 1.60 - some tests for Event.
949 root 1.61 - slightly different internal architecture to get refcnt into the object
950     and not the reference. might fix a few bugs, certainly did introduce
951     new ones.
952     - Coro::Timer (independent of Event).
953 root 1.62 - new timed_wait functions for Coro::Signal, Semaphore, SemaphoreSet.
954 root 1.60
955 root 1.64 0.52 Tue Nov 6 21:36:18 CET 2001
956 root 1.58 - ported to cygwin (trivial).
957     patch by Gerrit P. Haase <gp@familiehaase.de>.
958     - small setjmp code fix by Sullivan.DanielJ@epamail.epa.gov.
959    
960 root 1.64 0.51 Thu Nov 1 20:39:01 CET 2001
961 root 1.54 - terminate/cancel now work properly (otherwise termination
962     could cause a "next coroutine is not and contains not..."
963     error.
964 root 1.55 - added Coro::Socket::shutdown.
965 root 1.56 - Coro::Event::loop no is the same as Event::loop.
966     - implemented terminate with args + join.
967 root 1.54
968 root 1.64 0.5 Fri Sep 28 16:15:35 CEST 2001
969 root 1.53 - fixed "print" on a Coro::Handle. The print method worked.
970 root 1.50 - small tweaks (seem to reduce memory consumption a lot)
971     in various modules.
972     - splendid use of "no warnings" scattered throughout.
973 root 1.52 - added Coro::Handle::rbuf, fixed Coro::Handle::fh.
974 root 1.48
975 root 1.47 0.49 Sun Sep 16 02:42:45 CEST 2001
976 root 1.43 - changed some method calls to function calls for speed
977     inside Coro::Handle.
978 root 1.44 - make Coro::Handle use an array instead of a hash for
979     speed reasons.
980     - IRIX mystery solved: it's SGI's NT, after all: "standard, huh?".
981     sjlj and ucontext should now work.
982     - IRIX-specific port for libcoro.
983 root 1.45 - swapped order of accept results to match IO::Socket.
984 root 1.46 - changed getsock/peername to sock/peername to match IO::Socket.
985     - fixed a bug that caused segfault when returning to main task
986     under some circumstances.
987     - other bugfixes.
988 root 1.43
989 root 1.42 0.45 Sun Sep 2 02:54:01 CEST 2001
990 root 1.36 - new method Coro::Handle::timeout.
991     - corrected speling of set...name to get...name in Coro::Socket.
992     - Coro::Socket::accept now returns a Coro::Socket, not a Coro::Handle.
993     - Coro::Handle now supports fileno and FILENO.
994     - added eg/myhttpd, a web server.
995 root 1.37 - Coro::Socket now accepts numeric ports as well as "port(number)"
996     syntax.
997 root 1.38 - moved some scheduling primitives into xs code. more to come.
998 root 1.39 - new simple priority system.
999 root 1.40 - implemented Coro::Event using XS, almost four times faster!
1000 root 1.41 - small memory corruption problem fixed (boy that was difficult).
1001 root 1.36
1002 root 1.35 0.13 Wed Aug 8 16:53:07 CEST 2001
1003 root 1.31 - new method Coro::Handle::readline.
1004 root 1.34 - added eg/lwp and Coro::Handle::autoflush, to make LWP work.
1005     (see eg/lwp on how to make LWP non-blocking).
1006 root 1.31 - renamed Coro::Socket::new_inet to new.
1007 root 1.32 - added Coro::Util, some utility functions.
1008 root 1.33 - die/eval now works better (still get annoying (but true ;)
1009     "Callback called exit" messages).
1010 root 1.34 - Coro::Handle now supports timeout, and Coro::Socket Timeout.
1011     - much better Coro::Socket support.
1012 root 1.31
1013     0.12 Fri Jul 27 04:19:01 CEST 2001
1014 root 1.29 - do not use mmap if neither MAP_ANON nor MAP_ANONYMOUS is defined.
1015 root 1.34 - very experimental stack sharing algorithm. not 100% safe but
1016 root 1.28 should work well in practise ;)
1017 root 1.30 - added Coro::RWLock.
1018 root 1.31 - Coro::Specific now works.
1019 root 1.28
1020     0.11 Tue Jul 24 22:49:21 CEST 2001
1021 root 1.27 - added specialized hack for newer and older linux versions (fast).
1022     - renamed Coro::Event::IO to Coro::Handle.
1023     - new module Coro::Socket.
1024    
1025 root 1.26 0.1 Tue Jul 24 01:47:53 CEST 2001
1026 root 1.23 - release candidate 3. A rather new internal structure :(
1027 root 1.24 - the great renaming: Damian Conway gave me a suitable replacement
1028     for yield.
1029 root 1.23 - added Coro/libcoro, a portable coroutine implementation for C
1030 root 1.22 (not even perl-dependent!!!), which can be used by Coro::State.
1031 root 1.20 - renamed SAVE_DEFSV (on xs-level only) to avoid symbol clash in
1032     perl-5.6.
1033 root 1.16 - new function Coro::Event::idle.
1034     - the idle process is now overriden
1035     by default in Coro::Event.
1036 root 1.17 - Coro::Channel now enforces the size.
1037 root 1.18 - canceling events now works in all cases.
1038 root 1.19 - Coro state now include $_ and $@.
1039     - yet another bug workaround that I do not really understand :(
1040 root 1.21 - new module Coro::Event::IO (very undocumented) to do
1041     non-blocking i/o.
1042 root 1.25 - performance tuning.
1043 root 1.16
1044 root 1.15 0.08 Thu Jul 19 06:13:25 CEST 2001
1045 root 1.14 - release candidate 2 (new functionality).
1046 root 1.13 - add Coro::State::flush function.
1047     - transfer now supports a flags value (mostly for speed ATM).
1048     - might compile and work in the presence of threads now.
1049 root 1.14 - continuations have a saner syntax.
1050 root 1.19 - no more memleaks.
1051 root 1.13
1052 root 1.12 0.07 Tue Jul 17 17:40:18 CEST 2001
1053     - release candidate 1 ;)
1054     - slightly nicer code.
1055     - fixed a scheduling bug in Coro::Event.
1056    
1057 root 1.11 0.06 Tue Jul 17 04:23:24 CEST 2001
1058     - ok, I found the showstopper - the same sub must not be
1059 root 1.9 re-entered in two different coroutines, otherwise => crash. I
1060     see no easy solution to this problem, except by walking the call
1061     chaing and saving/restoring the cv's, which is what I do now.
1062 root 1.11 - memory leaks still latent, especially at thread termination.
1063     - Coro::Event now works (haha).
1064 root 1.9
1065 root 1.8 0.05 Sun Jul 15 17:32:20 CEST 2001
1066     - fixed a few issues in Coro::Event.
1067     - I forgot to include Coro::Event in 0.04 :(:(:(
1068    
1069 root 1.7 0.04 Sun Jul 15 05:24:59 CEST 2001
1070 root 1.5 - @_ is now properly localized.
1071 root 1.4 - Coro::State is now easier subclassable.
1072     - Coro::Cont now coroutine-aware.
1073     - Coro::Specific is a low-overhead module to create
1074     coroutine-specific vars.
1075 root 1.6 - Coro::Event provides a simple interface to Event.
1076 root 1.4
1077 root 1.3 0.03 Fri Jul 13 14:51:52 CEST 2001
1078 root 1.4 - transfer() now implemented in XS (beware).
1079     - new module Coro::Cont for really faked continuations.
1080     - big internal architecture changes: Coro::State is now
1081 root 1.3 really low-level and can thus be used to implement other
1082 root 1.4 interesting things, While "Coro::" implements a process-like
1083     model. Still crude and subject to change.
1084 root 1.3 - $_ and $@ are no longer being localized.
1085    
1086 root 1.2 0.02 Tue Jul 10 01:38:17 CEST 2001
1087     - implemented "async" attribute.
1088     - $_ and $@ are now localized.
1089     - added Coro::Channel.
1090     - more testcases, still no docs.
1091    
1092 root 1.1 0.01 Tue Jul 3 02:18:41 CEST 2001
1093     - original version; copied from Convert::Scalar.
1094