ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Changes
Revision: 1.586
Committed: Mon Aug 8 22:00:15 2011 UTC (12 years, 9 months ago) by root
Branch: MAIN
CVS Tags: rel-6_06
Changes since 1.585: +10 -0 lines
Log Message:
*** empty log message ***

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