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