Coro

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

        - remove unused hv_sig.

6.47 Sat Jul 11 03:58:20 CEST 2015
	- swap_svs - NVs can be in the SV head beginning with 5.20.

6.46 Tue Jun 30 14:36:30 CEST 2015
	- restore portability to perls with windows fork emulation
          (patch by Petr Písař).

6.45 Tue Jun 30 01:40:08 CEST 2015
	- restore portability to perl 5.16 and below.

6.44 Tue Jun 30 00:41:54 CEST 2015
	- avoid segfaulting (or worse) when tracing a canceled thread.
	- the Event module silently broke it's public hook API, causing
          failures on perls compiled with -Duselongdouble. Requiring
          the latest version of Event because I don't know which release
          changed this (it's not mentioned in the ChangeLog).
        - allow xs level enterleave hooks via CoroAPI.

6.43 Thu Jun  4 15:38:14 CEST 2015
	- use stability canary.
	- port to stableperl-5.22.0-1.001.
        - update libecb.

6.42 Wed Feb 11 20:29:52 CET 2015
	- Coro::SemaphoreSet->try did not actually work (analyzed by
          SATO Kentaro).
        - upgrade libecb to be C11 compliant.

6.41 Sat Sep  6 22:08:46 CEST 2014
	- restore portability to perl 5.8.x.
        - give new Coro's a valid GvHV(PL_hintgv) - this is slow and takes
          up some memory, but fixes "use feature" and similar modules
          when used inside a Coro.
        - allow zero as argument to Coro::Channel to mean the same thing
          as no argument. this works with older versions as well,
          but wasn't legal until now.
        - slightly better c header file detection.

6.39 Mon Jun  2 00:00:08 CEST 2014
	- work around more incompatible changes in 5.20.

6.38 Sun Jun  1 21:54:23 CEST 2014
	- check that perl slots actually have enough space to hold
          interpreter variables.
	- untested port to perl 5.19 (64 bit tmps indices) (reported
          by Andreas König).
	- croak when cancel is called without a thread context.

6.37 Tue Mar  4 13:27:33 CET 2014
	- *sigh*, removed leftover debugging code from debugging a
          perl bug, of all things.

6.36 Tue Mar  4 07:11:59 CET 2014
	- semaphores would not clear the destroy hook when interrupted
          by ->throw, causing segfaults or worse.
        - ->throw on a thread waiting for a semaphore did not acquire
          the semaphore, but also didn't wake up other waiters,
          possibly causing a deadlock.
	- "FATAL: $Coro::IDLE blocked itself" will now use Carp::confess
          to report a full stacktrace, which should help find out
          where the actual call is.
        - "atomically" destroy data in slf_destroy, because it is
          the right thing to do, just in case.
        - disable ecb.h libm dependency, to compile on ancient systems
          or under adverse conditions.

6.33 Mon Nov 18 11:26:27 CET 2013
	- do not crash when freeing padlists with holes (in 5.18).
	- tentative SVt_BIND 5.19 port/fix.

6.32 Tue Nov  5 15:35:35 CET 2013
	- use a new algorithm to derive padlists for perl 5.18. The old
          one could lead to 0-pointer accesses inside perl (reported
          by Darin McBride).

6.31 Thu May  9 07:39:48 CEST 2013
	- Coro::AIO requests would crash if the thread was ready'd
          while the request was ongoing.

6.29 Wed May  8 02:55:18 CEST 2013
	- when an on_destroy handler destructs the coro currently being
          destructed a perl scalar could be accessed after being freed,
          likely causing a crash.

6.28 Wed Mar  6 06:58:02 CET 2013
	- clean remnants of existing __DIE__ and __WARN__ handlers so
          they lose their magic and will not cause segfaults later
          (testcase by Andrey Sagulin).
	- improved Coro::State documentation a bit.
        - Coro::Debug::command now flushes the output.
        - add hack detection code for x32 abi, because the braindead slugs
          who designed that made it look exactly like x86_64 without
          providing proper compile time symbols to test for it. as a result,
          this detection cannot work reliably.
        - valgrind stack registering was broken.
        - do not rely on Time::HiRes anymore in Coro::Debug.

6.23 Fri Dec  7 23:36:37 CET 2012
        - use experimental fiber implementation on native windows
          perls.
        - use sizeof (void *) as multiplication factor for stack sizes,
          to accomodate the totally braindamaged microsoft 64 bit "os".
        - changed verifier host from win2k-ap510-32 to win7-sp516-32/64.
          activeperl 5.16 crashes when PerlIO_define_layer is called due
          to some bug in the perl dll, strawberry perl at least passes
          the testsuite.
        - implement Coro::Handle->peeraddr/host/port, for slightly
          improved compatibility with LWP.
	- implement 5.17 compatibility by almost blindly applying a
          good-looking patch by Father Chrysostomos.
        - move stack management functions into libcoro 3.
        - libcoro version 3 "released".
	- support magic values as timed_io_once args.
	- recommend AnyEvent 7+ or EV 4+, also require EV
          version 4 or newer for Coro::EV.

6.10 Tue Oct  9 01:14:27 CEST 2012
	- updated ecb.h, it had a typo that caused it to not compile on many
          big endian systems (reported by many people).

Changes  view on Meta::CPAN

          compatible fork of openbsd ("world domination by releasing
          openbsd cvs before the openbsd folks do it" or so :).
        - free_padlist did destroy the names pad, not good, but didn't
          seem to bother perl - this could fix issues such as eval ""
          inside a function called from multiple coroutines.
        - use a different method to detect destruction time.
        - be more careful when freeing padlists just before global
          destruction.
        - fixed and expanded the call/cc example.
        - renamed _terminate to _coro_run.
        - new method Coro::Channel->shutdown.
        - try pthreads on openbsd <4.4 (broken sigaltstack, will
          pthreads fare better?).
        - be less picky about destroying "a" running coroutine.

5.11 Tue Nov 25 21:49:05 CET 2008
	- DEBUGGING in 5.10.0 is a mess: it constantly flags perfectly
          working code with failed assertions, introducing more bugs than
          it fixes, requiring elaborate workarounds :(

5.1  Mon Nov 24 08:54:59 CET 2008
	- wrote a small introductory tutorial - Coro::Intro.
	- convert Coro::Timer, Coro::Select and Coro::Util to rouse API.
        - Coro::Select did errornously dup the file descriptors
          and didn't work with all AnyEvent backends.
        - Coro::Select wasn't imported correctly form Coro::LWP, causing blocking
          LWP data transfers.
        - disassociate c contexts from coro objects - this is agruably more
          correct, but mostly allows sharing of cctxs between coro and state
          objects, for added memory savings and speed increases.
        - bumped $Coro::POOL_RSS up to 32kb by default.
        - no longer set the optype to OP_CUSTOM, as B::* understandably
          doesn't like this very much (and we *are* a type of entersub).
        - implement state cloning, just to prove that call/cc can be done.
        - automatically load Coro::AnyEvent in Coro::Handle.
        - wrap ->cancel calls in eval inside Coro::Handle as EV watchers
          do not have this method (and don't need it either).
        - speed up generic anyevent methods in Coro::Handle by using rouse
          callbacks.
        - allow coroutines in $Coro::IDLE, speeding up Coro::AnyEvent and
          others. It also makes the debugger happier, as you can trace
          through the idle threads now.
        - add comppad_name* and hints ($^H, %^H) to per-thread variables.
        - eg/event was pretty broken.
        - better 5.8.6 compatibility.

5.0  Thu Nov 20 10:35:05 CET 2008
	- NEW ARCHITECTURE: use the latest 4.x version if you experience
          stability issues.
        - bump API version to 7 - all dependents must be recompiled.
        - removed timed_* functions - they were not being used anyways
          and should be replaced by a more generic mechanism -
          and were annoying to support anyways :)
        - removed SemaphoreSet's waiter method - use sem method instead.
        - Coro::Semaphore->adjust didn't correctly wake up enough waiters.
        - async_pool did free a scalar value twice
          ("Attempt to unreference...").
        - fix a longstanding bug where calling terminate on a coro that
          was waiting for a semaphore that was just becoming available
          would cause a deadlock (semaphore would get into a state where
          it was available but waiters were still blocked).
        - calling throw on a coroutine that is waiting for a semaphore will
          no longer make it acquire the semaphore (and thus leak a count).
        - perl's process emulation is now not even theoretically supported
          anymore.
        - new functions Coro::rouse_cb and Coro::rouse_wait for easier
          conversion of callback-style to blocking-style.
        - new methods $coro->schedule_to and ->cede_to, to specifically
          schedule or cede to a specific coroutine.
        - new function Coro::Semaphore::wait.
        - use named constants in Coro::Channel (Richard Hundt).
        - directly patch the entersub opcode calling SLF functions (cede,
          transfer and so on). this does speed up context switching, but
          more importanly, it frees us from the hardcoded behaviour of
          entersub, so we might actually be able to return something from
          those functions and atcually create new ones.
        - take advantage of __builtin_frame_address on gcc.
        - expose THX in coroapi (not sure whether this was a wise decision,
          as "threaded" perls are running at half speed anyways).
        - implement execute_slf (schedule-like-function) interface that makes
          it possible to implement schedule-like-functions in XS.
        - use new SLF interface to massively speed up Coro::EV by roughly a
          factor of two.
        - used new SLF interface to massively speed up Coro::Semaphore by a
          factor of three.
        - used new SLF interface to speed up Coro::AIO by roughly a factor of
          four and reduce its memory usage considerably.
        - implement Coro::SemaphoreSet purely in terms of Coro::Semaphore,
          for a nice speedup and vastly more correct behaviour. Also implement
          a new method "sem" to get at the underlying semaphore object.
        - implement Coro::Channel in terms of Coro::Semaphore, for a moderate
          (in comparison) 20-40% speedup.
        - used new SLF interface to reimplement Coro::Signal gaining
          some unknown (because I was too lazy), but certain, speedup, and also
          making signals reliable for the first time.
        - used new SLF interface and other optimisations to speed up async_pool
          by a factor of two. It also doesn't rely on perl's exception mechanism
          to exit anymore. The overhead for terminating an async_pool, coro over
          a normal async is now very small.
        - sped up coroutine creation/destruction by 40%.
        - forgot to include Coro/libcoro/README in the dist for all these years.
        - work around a freebsd pthreads bug (manual testcancel is required as
          pthread_cond_wait isn't a cancellation point on freebsd).
        - use new rouse functions to speed up and simplify Coro::BDB.
        - make "prefer perl native functions" work with threaded perls.
        - condense Coro::Debug ps output, hint at v and w flags.
        - (libcoro) lots of minor cleanups and portability improvements.

4.914 Wed Nov 19 12:54:18 CET 2008
        - fix a disastrous bug in the readline optimisation
          introduced in 4.801.

4.913 Sat Nov 15 07:58:28 CET 2008
        - async_pool did free a scalar value twice
          ("Attempt to unreference...").

4.912 Thu Nov 13 18:31:23 CET 2008
	- minor cleanups.
        - use much larger stacks on linux and perl < 5.8.8.
        - Coro::Debug::new_unix_server did not unlink the socket
          when destroyed.

Changes  view on Meta::CPAN

          by the Coro module. It was a mistake to have it in the first place.
        - (experimental) support for activestate perl 5.10 (method "w").
        - (experimental) support for strawberry perl (method "a").
        - coro_sigelem_set did not return a value although it had to,
          actual impact unknown.

4.51 Mon Apr 14 13:28:27 CEST 2008
	- make it compile again on 5.8.

4.50 Thu Apr 10 09:43:17 CEST 2008
	- I did it twice! (see 4.49).

4.49 Sun Apr  6 21:23:31 CEST 2008
	- grr, instead of compiling the recent changes on 5.10 only they
          were compiled on 5.8 only.

4.48 Sun Apr  6 20:36:46 CEST 2008
	- allow coroutine switches during eval's under 5.10.x, as it seems
          the parser is a per-interpreter option now, so this is safe
          (this might fix the odd crashing bug).
        - drop support for 5.9.x versions: they are dead, jim.

4.47 Sun Apr  6 00:37:52 CEST 2008
	- force cctx allocation on API calls: we know we need to force one
          and gcc actually manages to confuse our heuristic nowadays,
          leading to crashes and worse.
        - document force_cctx.

4.46 Fri Apr  4 22:05:43 CEST 2008
        - upgrade libcoro, resulting in pthread-backend (which was only created
          to fulfill the rules of the programming languages shootout).

4.45 Thu Mar 13 11:55:36 CET 2008
	- fix a file leaking bug in eg/mhyttpd that would allow
          downloading of any file (reported by oesi).
	- fix deadlock bug in Coro::Channel (reported by Richard Hundt)
          (also add testcase).
        - support Broadcast option in Coro::Socket (patch by Richard Hundt,
          apparently having loads of fun with that).
        - implement $state->swap_defsv, ->swap_defav and document ->throw.

4.4  Wed Feb 13 16:44:29 CET 2008
	- only assume .cfi pseudo isns exist on GNU/Linux.
        - add get_timed method to Coro::Channels.
        - fixed Coro::Debug manpage.
        - perl 5.11 compatbility improvement based on patch by
          Andreas König.

4.37 Sun Jan 20 11:25:23 CET 2008
	- soften the check for an active parser for perl 5.10 (avoiding
          "Coro::State::transfer called while parsing" in many cases).

4.36 Sun Jan 13 10:53:56 CET 2008
	- reset diehook when terminating from an async_pool as to not
          trigger any __DIE__ handlers.

4.35 Sun Jan 13 04:14:13 CET 2008
	- "bt" debug command now displays any exceptions
          from longmess and also skips the innermost
          stackframes, giving more useufl output.
	- allow backtraces in coroutines blocked in Coro::EV,
          at a <1% speed hit.
        - handle localising of $SIG{__WARN__} and __DIE__
          properly (with a proper amount of dirty hacking).

4.34 Sat Dec 22 17:49:53 CET 2007
	- upgrade to EV version 2.0 API.

4.33 Mon Dec 17 08:36:12 CET 2007
	- make Coro::AIO etc. loadable in the absence of EV.

4.32 Mon Dec 17 07:46:02 CET 2007
	- majorly improved Coro::Handle's performance with Coro::EV.
        - implemented the until now mythical Coro::BDB module.
        - specialcase EV in Coro::AIO and Coro::BDB for extra speed.

4.31 Wed Dec  5 12:32:39 CET 2007
	- remove warn statement form Coro::Util.

4.3  Tue Dec  4 20:33:14 CET 2007
	- calls to the idle function could cause stack corruption
          when the stack changed.
	- do no longer rely on the presence of EV::DNS if EV is used
          (because it is gone), but instead take avdantage of EV::ADNS
          if available.
        - add ($) prototypes to all functions in Coro::Storable.
        - use a conventional (safer) idle callback in Coro::EV.
        - do accept quickly in Coro::Debug to avoid endless loops.

4.22 Fri Nov 30 16:04:04 CET 2007
	- really use optimised versions for Event and EV in Coro::Util
          and Coro::Handle.

4.21 Sun Nov 25 10:48:59 CET 2007
	- fix a spurious memory read.
        - Coro::EV no longer keeps the eventloop "alive".

4.2  Fri Nov  9 20:47:05 CET 2007
	- enable/disable tracing from a new coroutine, not a pooled one.
        - fix a memleak in Coro::Event.
        - removed killall call from fork_eval.
        - made sure store_fd is already loaded so that fork_eval
          does not have to parse autoload in each subprocess.
        - only use assembly method if -O switch is in $Config{optimize}.
        - add (optional) Coro::EV module, so far the best event loop module
          directly supported by Coro.
        - if the event model is EV, use EV::DNS to resolve
          stuff in Coro::Util.
        - don't get confused by multiple event notifications in Coro::Handle.
        - initial support for EV (libevent interface).
        - require Event and EV using configure_requires, to force their existance.

4.13 Wed Oct 24 07:26:45 CEST 2007
	- add Coro::Storable::blocking_thaw.
        - use a vastly more complicated technique to localise
          $SIG{__WARN/DIE__} that also works on perls <= 5.8.8.
        - use a coroutine for the idle callback Coro::Event,
          instead of running Event in the current coroutine context.
          This also catches recursive invocations.
        - actually report fork errors in gethostbyname and inet_aton.



( run in 2.588 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )