The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for AnyEvent::MP

TODO: testsuite
TODO: intro: maybe simple job pool example?
TODO: intro: mention watchdog...

faq: can't se anything
faq: all is asynch
faq: how to interface to non-perl nodes?

1.27 Sat Mar 20 21:11:16 CET 2010
	- avoid exceptions in the transport code if the connection
          fails during TLS negotiation.
        - delay new address broadcasts in seednodes, to reduce the
          likelyhood of nodes connecting at the same time, leading to
          message loss.
        - improve general message passing efficiency by 8%, and special
          case json framing for a 50% speed increase.
	- add hints how to interface to aemp nodes from other programming
          languages using the aemp protocol in AnyEvent::MP::Transport
          (it can really be quite simple).
        - handle unsupported remote framings more gracefully.

1.26 Wed Dec 30 16:48:37 CET 2009
	- INCOMPATIBLE CHANGE: the high-level node protocol changed,
          all nodes need to upgrade.
	- remote kil's did not work (reported by Eugene Grigoriev).
        - documented monitor_timeout, connect_interval, auth_offer,
          auth_accept, framing_format, autocork and nodelay options
          and make them configurable via bin/aemp.
        - some doc updates.
        - remote kil's were not synchronous to message sends which affected
          nobody, as remote kils were broken.
        - remote mon/unmonitor requests were not synchronous to message
          sends either sometimes, although it likely didnt matter.

1.24 Wed Dec  9 14:59:52 CET 2009
	- codename "the foul egg".
	- increased "unmonitored local port died" message level to 2, so
          it is displayed by default now.
        - generate random seed at configure time, not module loading time,
          so fork&configure works as expected.
        - decreased "seed"-related message priority in Global from 0 (d'oh)
          to 9, as they are not signifcant.
	- new experimental module AnyEvent::MP::DataConn to establish
          additional data connections between nodes.
        - bin/aemp now loads AnyEvent::Watchdog::Util before trying
          to call restart.
        - bin/aemp setcert didn't properly handle the filename argument.
        - removed empty and unused timeout= parameter from protocol greeting.

1.23 Fri Nov  6 18:46:26 CET 2009
        - listener-less nodes were misinformed by their masters about
          the location of new nodes, and therefore didn't connect
          properly in all cases.
        - messages send during node-up processing could sometimes get lost,
          which would hamper global's ability to mesh the network.
        - fixed AnyEvent::MP::Global::grp_reg to return a guard also
          in scalar context.
        - fixed AnyEvent::MP::Kernel::mon_nodes to return a guard also
          in scalar context.
        - try to improve error reporting when automatically loading
          a function - being unable to load a module will now
          stop the process and report the error.

1.22 Sat Oct 17 03:41:47 CEST 2009
	- fix two rcv-bugs: after adding a tagged rcv, the default
          callback would not be used or changed anymore (reported
          by Felix Antonius Wilhelm Ostmann, with apologies for
          taking so long to releae the fix).
	- added Coro::MP introduction to AnyEvent::MP::Intro.
	- add peval function.

1.21 Mon Oct  5 21:58:36 CEST 2009
	- always delay kil messages.
        - remote monitor requests were never cleaned up (found by
          Sadrak and analysed by elmex).
        - move $VERSION to AnyEvent::MP and AnyEvent::MP only.

1.2  Thu Oct  1 22:59:35 CEST 2009
        - fix a rather big bug where message processing could be
          inhibited completely.
	- grp_mon could not return a guard due to a typo.
	- implement primitive aemp shell.
        - do not use bound address as listen length (reported by
          Felix Antonius Wilhelm Ostman).
        - no longer export an undefined "reg" function from AE::MP.
        - the mon_guard return value no longer keeps an additional
          reference to the passed refs.

1.1  Fri Sep 11 04:34:03 CEST 2009
	- bumped the transport protocol to version 1 - sorry, but there
          were too many bugfixes/changes.
	- new function AnyEvent::MP::cal for simple rpc.
	- renamed AnyEvent::MP::Global functions to grp_reg|get|mon.
        - implemented monitoring for Global groups.
	- removed all userspace time-outs from the transport, instead
          rely on tcp retransmit timeouts and tcp keepalive.
	- spawn now delays spawns on the local node artificially, so
          it can return before invoking the init function.
        - break endless recursion between ping-pong ports on the local
          node after ~50 iterations.
        - support JSON-encoded aemp arguments.
        - added aemp restart.
        - support for starting init functions with parameters added.
        - data_format, auth_offer and auth_accept are now configurable, albeit
          not documented.
        - new service: AnyEvent::MP::LogCatcher.
        - rely on perl srand'ing better than we could.
        - try to backport to 5.8.2, unfortunately, recursive dependencies
          rely on Module::Build, which fails at 5.8.7, so YMMV.
        - use a vastly different reseeding strategy.
        - use seed nodes to notify nodes about new nodes.
        - in the case where a ndoe learns new addresses after it tried
          connecting, prefer the new addrseses over the old ones.

1.0  Wed Sep  2 20:40:43 CEST 2009
	- randomise more connection times, but reduce delay to 0.2s (seeds)
          and 0.05s (normal connects).
        - upgrade to and require AnyEvent::Watchdog 1.0.

0.95 Mon Aug 31 22:03:55 CEST 2009
	- tutorial finally covers all the basics, maybe not optimally, but it
          is covered.
	- rename initialise_node to configure and accepts key => value
          pairs for configuration.
	- give aemp a full manpage.
	- bin/aemp now expects comma-separated lists and supports multiple
          subcommands.
        - new aemp eval subcommand.
        - new aemp parent subcommand.
        - nodes get freed when no longer needed.
        - support "*" hostname to specify all local interface addresses
          (without localhost etc.).
        - support "*" port to specify a dynamically-assigned port (which
          is the default now).
        - fix per-transport memory leak.

0.9  Sat Aug 29 18:47:45 CEST 2009
	- tutorial was updated to reflect the current API, but
          does not touch monitoring yet.
	- got rid of noderefs and slave nodes entirely, introduce
          free-text node identifiers and anonymous nodes.
        - document security issues with tls_anon method and introduce
          optional tls_md6_64_256 method.

0.8  Wed Aug 19 07:54:50 CEST 2009
	- added AnyEvent::MP::Global service.
	- support "package::" names as service names.
        - many, many, many bugfixes and tweaks.

0.7  Sat Aug 15 01:18:51 CEST 2009
	- sorry, another major API simplification.
	- greatly improved aemp configuration abilities.
        - introduced profile management.
        - updated exmaples in eg/.
        - added Kernel::snd_to_func.

0.6  Thu Aug 13 03:15:05 CEST 2009
	- do away with .aemp-secret and use .perl-anyevent-mp as json config
          file.
        - introduce bin/aemp to configure nodes.
        - too many changes to describe.

0.4  Sun Aug  9 18:05:49 CEST 2009
	- API should now be really stable :)
	- distinguish between resolved and unresolved noderefs.
	- certificates in .aemp-secret are now supported.
        - change port creation semantics.
        - replace become_xxx by initialise_node.
        - implement AE::MP::spawn.
        - implement transport timeouts, monitoring, reconnecting.
        - simplify and partially document the transport protocol.

0.1  Tue Aug  4 23:07:11 CEST 2009
	- AnyEvent::MP API should be mostly stable by now.

0.02 Sun Aug  2 17:46:43 CEST 2009
	- design has stabilised a bit, sitll unusable.

0.01 Sat Aug  1 11:43:31 CEST 2009
	- dummy upload to reserve namespace on CPAN.

0.0  Thu Jul 30 06:10:15 CEST 2009
	- original version, an AnyEvent::AIO clone.