| 1 |
Revision history for AnyEvent::MP |
| 2 |
|
| 3 |
TODO: testsuite |
| 4 |
TODO: intro: maybe simple job pool example? |
| 5 |
TODO: intro: mention watchdog... |
| 6 |
TODO: maybe disbale warnings by default? |
| 7 |
TODO: listener-scopes (10.0.0.1:4040@vpn) and connect-scopes ("vpn,public") |
| 8 |
TODO: document env-variable usage |
| 9 |
TODO: make node objects responsible for keepalive? |
| 10 |
|
| 11 |
faq: can't se anything |
| 12 |
faq: all is asynch |
| 13 |
faq: how to interface to non-perl nodes? |
| 14 |
|
| 15 |
TODO: check gproto, nproto, on connect |
| 16 |
TODO: limiting reconnecting speed when unreachable? somehow use same interval timers as for seeding and keepalive? |
| 17 |
TODO: multiple profiles? also some default profiles? |
| 18 |
TODO: export keepalive? |
| 19 |
TODO: $guard = con $cb->($up) |
| 20 |
TODO: aemp readline support |
| 21 |
TODO: gleeco re: AE::MP::DataConn - |
| 22 |
TODO: version both in MP.pm and MP/Config.pm because of cpan indexer |
| 23 |
|
| 24 |
TODO: detect and error out on repeated calls to configure |
| 25 |
TODO: try some worse methods if Net::Interface doe snto work |
| 26 |
|
| 27 |
- minor improvements in documentation and trace output. |
| 28 |
|
| 29 |
2.02 Sun Jul 29 04:22:53 CEST 2018 |
| 30 |
- hardcode version in MP.pm to help the CPAN indexer. |
| 31 |
|
| 32 |
2.01 Tue Jul 24 09:02:34 CEST 2018 |
| 33 |
- try to work around a race condition that we can't identify |
| 34 |
(patch suggested by Sadrak). |
| 35 |
|
| 36 |
2.0 Tue Jul 24 08:52:26 CEST 2018 |
| 37 |
- INCOMPATIBLE CHANGE: the node protocol used by this version is not |
| 38 |
compatible to versions <2 - you have to upgrade all nodes. |
| 39 |
- INCOMPATIBLE CHANGE: many APIs have changed, see the section |
| 40 |
"PORTING FROM VERSION 1" in the AnyEvent::MP manpage for details. |
| 41 |
- AnyEvent::MP::Global is now optional - only seed nodes autoload it |
| 42 |
and create a fully-meshed network with each other, normal nodes only |
| 43 |
have to connect to seed nodes, other connections are on-demand. |
| 44 |
- remove md6 auth algorithms (and use algorithms based on SHA3 instead). |
| 45 |
- implement CBOR framing and make it the preferred format. |
| 46 |
- new "norc" and "force" options for MP::configure to ignore |
| 47 |
or override the rc file. |
| 48 |
- a shitload of minor and major fixes all reported and debugged |
| 49 |
by Felix Ostmann. |
| 50 |
- move seed code to Kernel. |
| 51 |
- non-json receive framing was probably broken. |
| 52 |
- fixed small typo in MP::Transport. |
| 53 |
- fix (unused) provider-kv (version sometimes missing). |
| 54 |
- reduce the default export list of MP::Kernel. |
| 55 |
- reduced various random delays to zero, as they |
| 56 |
are hopefully no longer needed with the new global |
| 57 |
protocol. |
| 58 |
- implement a secure mode that can suppress (some) code execution |
| 59 |
requests. |
| 60 |
- do not use GMP for generating alphanumeric strings even when |
| 61 |
available, use a more tricky algorithm instead. |
| 62 |
- anonymous node names and remote port names have been shortened |
| 63 |
considerably. |
| 64 |
- $AnyEvent::MP::Kernel::SRCNODE contains the node ID of the origin |
| 65 |
node during message receives. |
| 66 |
- aemp shell now supports "package" selection and offers an |
| 67 |
$ECHO port you can send messages to. |
| 68 |
- rely on perl rand() instead of using /dev/urandom when available, as |
| 69 |
hopefully it is random enough. |
| 70 |
- aemp shell no longer leaks one port per command. |
| 71 |
- nodenames can contain %-escapes such as %n or %u. |
| 72 |
- aemp now uses aemp/%n/%u as nodename. |
| 73 |
- configure supports "eval", a small perl snippet to initialsie a node, |
| 74 |
most useful in "aemp run eval ...". |
| 75 |
- known_nodes is gone, it has little value, use all_nodes as |
| 76 |
replacement. |
| 77 |
- lots of small change and improvements. |
| 78 |
- node_is_known has been removed. |
| 79 |
- TRACE now shows the portid on SND. |
| 80 |
- aggressively reduce number of external modules, to reduce |
| 81 |
memory usage for nodes. |
| 82 |
- rework most of the documentation. |
| 83 |
- clean up MP::Kernel exports. |
| 84 |
- include AnyEvent::MP in AnyEvent::MP::Kernel's @CARP_NOT to |
| 85 |
hopefully improve error messages. |
| 86 |
|
| 87 |
1.30 Thu Jun 30 11:30:39 CEST 2011 |
| 88 |
- connection errors at the right time would kill node |
| 89 |
connections in a bad way (patch by Malcolm Studd). |
| 90 |
|
| 91 |
1.29 Fri May 7 20:13:39 CEST 2010 |
| 92 |
- codename "Sadrak". |
| 93 |
- fix error in callback at AnyEvent/MP/Global.pm line 339 |
| 94 |
(found by Sadrak). |
| 95 |
- listener-less nodes had trouble sending keepalive |
| 96 |
messages on write timeouts (found by Sadrak). |
| 97 |
- the monitor guard could cause a memleak due |
| 98 |
to autovivification if a mon was cleared after |
| 99 |
the port was gone (analysed by Sadrak). |
| 100 |
- do not overwrite the config file if we couldn't read it |
| 101 |
for some reason (lesson demonstrated by Sadrak). |
| 102 |
|
| 103 |
1.28 Thu Apr 1 21:23:54 CEST 2010 |
| 104 |
- accepted connections didn't correctly set up the SRCNODE |
| 105 |
in some cases, leading to intra-node messages (such as monitoring) |
| 106 |
to fail silently (great testcase by Sadrak). |
| 107 |
|
| 108 |
1.27 Sat Mar 20 21:11:16 CET 2010 |
| 109 |
- avoid exceptions in the transport code if the connection |
| 110 |
fails during TLS negotiation. |
| 111 |
- delay new address broadcasts in seednodes, to reduce the |
| 112 |
likelyhood of nodes connecting at the same time, leading to |
| 113 |
message loss. |
| 114 |
- improve general message passing efficiency by 8%, and special |
| 115 |
case json framing for a 50% speed increase. |
| 116 |
- add hints how to interface to aemp nodes from other programming |
| 117 |
languages using the aemp protocol in AnyEvent::MP::Transport |
| 118 |
(it can really be quite simple). |
| 119 |
- handle unsupported remote framings more gracefully. |
| 120 |
|
| 121 |
1.26 Wed Dec 30 16:48:37 CET 2009 |
| 122 |
- INCOMPATIBLE CHANGE: the high-level node protocol changed, |
| 123 |
all nodes need to upgrade. |
| 124 |
- remote kil's did not work (reported by Eugene Grigoriev). |
| 125 |
- documented monitor_timeout, connect_interval, auth_offer, |
| 126 |
auth_accept, framing_format, autocork and nodelay options |
| 127 |
and make them configurable via bin/aemp. |
| 128 |
- some doc updates. |
| 129 |
- remote kil's were not synchronous to message sends which affected |
| 130 |
nobody, as remote kils were broken. |
| 131 |
- remote mon/unmonitor requests were not synchronous to message |
| 132 |
sends either sometimes, although it likely didnt matter. |
| 133 |
|
| 134 |
1.24 Wed Dec 9 14:59:52 CET 2009 |
| 135 |
- codename "the foul egg". |
| 136 |
- increased "unmonitored local port died" message level to 2, so |
| 137 |
it is displayed by default now. |
| 138 |
- generate random seed at configure time, not module loading time, |
| 139 |
so fork&configure works as expected. |
| 140 |
- decreased "seed"-related message priority in Global from 0 (d'oh) |
| 141 |
to 9, as they are not signifcant. |
| 142 |
- new experimental module AnyEvent::MP::DataConn to establish |
| 143 |
additional data connections between nodes. |
| 144 |
- bin/aemp now loads AnyEvent::Watchdog::Util before trying |
| 145 |
to call restart. |
| 146 |
- bin/aemp setcert didn't properly handle the filename argument. |
| 147 |
- removed empty and unused timeout= parameter from protocol greeting. |
| 148 |
|
| 149 |
1.23 Fri Nov 6 18:46:26 CET 2009 |
| 150 |
- listener-less nodes were misinformed by their masters about |
| 151 |
the location of new nodes, and therefore didn't connect |
| 152 |
properly in all cases. |
| 153 |
- messages send during node-up processing could sometimes get lost, |
| 154 |
which would hamper global's ability to mesh the network. |
| 155 |
- fixed AnyEvent::MP::Global::grp_reg to return a guard also |
| 156 |
in scalar context. |
| 157 |
- fixed AnyEvent::MP::Kernel::mon_nodes to return a guard also |
| 158 |
in scalar context. |
| 159 |
- try to improve error reporting when automatically loading |
| 160 |
a function - being unable to load a module will now |
| 161 |
stop the process and report the error. |
| 162 |
|
| 163 |
1.22 Sat Oct 17 03:41:47 CEST 2009 |
| 164 |
- fix two rcv-bugs: after adding a tagged rcv, the default |
| 165 |
callback would not be used or changed anymore (reported |
| 166 |
by Felix Antonius Wilhelm Ostmann, with apologies for |
| 167 |
taking so long to releae the fix). |
| 168 |
- added Coro::MP introduction to AnyEvent::MP::Intro. |
| 169 |
- add peval function. |
| 170 |
|
| 171 |
1.21 Mon Oct 5 21:58:36 CEST 2009 |
| 172 |
- always delay kil messages. |
| 173 |
- remote monitor requests were never cleaned up (found by |
| 174 |
Sadrak and analysed by elmex). |
| 175 |
- move $VERSION to AnyEvent::MP and AnyEvent::MP only. |
| 176 |
|
| 177 |
1.2 Thu Oct 1 22:59:35 CEST 2009 |
| 178 |
- fix a rather big bug where message processing could be |
| 179 |
inhibited completely. |
| 180 |
- grp_mon could not return a guard due to a typo. |
| 181 |
- implement primitive aemp shell. |
| 182 |
- do not use bound address as listen length (reported by |
| 183 |
Felix Antonius Wilhelm Ostman). |
| 184 |
- no longer export an undefined "reg" function from AE::MP. |
| 185 |
- the mon_guard return value no longer keeps an additional |
| 186 |
reference to the passed refs. |
| 187 |
|
| 188 |
1.1 Fri Sep 11 04:34:03 CEST 2009 |
| 189 |
- bumped the transport protocol to version 1 - sorry, but there |
| 190 |
were too many bugfixes/changes. |
| 191 |
- new function AnyEvent::MP::cal for simple rpc. |
| 192 |
- renamed AnyEvent::MP::Global functions to grp_reg|get|mon. |
| 193 |
- implemented monitoring for Global groups. |
| 194 |
- removed all userspace time-outs from the transport, instead |
| 195 |
rely on tcp retransmit timeouts and tcp keepalive. |
| 196 |
- spawn now delays spawns on the local node artificially, so |
| 197 |
it can return before invoking the init function. |
| 198 |
- break endless recursion between ping-pong ports on the local |
| 199 |
node after ~50 iterations. |
| 200 |
- support JSON-encoded aemp arguments. |
| 201 |
- added aemp restart. |
| 202 |
- support for starting init functions with parameters added. |
| 203 |
- data_format, auth_offer and auth_accept are now configurable, albeit |
| 204 |
not documented. |
| 205 |
- new service: AnyEvent::MP::LogCatcher. |
| 206 |
- rely on perl srand'ing better than we could. |
| 207 |
- try to backport to 5.8.2, unfortunately, recursive dependencies |
| 208 |
rely on Module::Build, which fails at 5.8.7, so YMMV. |
| 209 |
- use a vastly different reseeding strategy. |
| 210 |
- use seed nodes to notify nodes about new nodes. |
| 211 |
- in the case where a ndoe learns new addresses after it tried |
| 212 |
connecting, prefer the new addrseses over the old ones. |
| 213 |
|
| 214 |
1.0 Wed Sep 2 20:40:43 CEST 2009 |
| 215 |
- randomise more connection times, but reduce delay to 0.2s (seeds) |
| 216 |
and 0.05s (normal connects). |
| 217 |
- upgrade to and require AnyEvent::Watchdog 1.0. |
| 218 |
|
| 219 |
0.95 Mon Aug 31 22:03:55 CEST 2009 |
| 220 |
- tutorial finally covers all the basics, maybe not optimally, but it |
| 221 |
is covered. |
| 222 |
- rename initialise_node to configure and accepts key => value |
| 223 |
pairs for configuration. |
| 224 |
- give aemp a full manpage. |
| 225 |
- bin/aemp now expects comma-separated lists and supports multiple |
| 226 |
subcommands. |
| 227 |
- new aemp eval subcommand. |
| 228 |
- new aemp parent subcommand. |
| 229 |
- nodes get freed when no longer needed. |
| 230 |
- support "*" hostname to specify all local interface addresses |
| 231 |
(without localhost etc.). |
| 232 |
- support "*" port to specify a dynamically-assigned port (which |
| 233 |
is the default now). |
| 234 |
- fix per-transport memory leak. |
| 235 |
|
| 236 |
0.9 Sat Aug 29 18:47:45 CEST 2009 |
| 237 |
- tutorial was updated to reflect the current API, but |
| 238 |
does not touch monitoring yet. |
| 239 |
- got rid of noderefs and slave nodes entirely, introduce |
| 240 |
free-text node identifiers and anonymous nodes. |
| 241 |
- document security issues with tls_anon method and introduce |
| 242 |
optional tls_md6_64_256 method. |
| 243 |
|
| 244 |
0.8 Wed Aug 19 07:54:50 CEST 2009 |
| 245 |
- added AnyEvent::MP::Global service. |
| 246 |
- support "package::" names as service names. |
| 247 |
- many, many, many bugfixes and tweaks. |
| 248 |
|
| 249 |
0.7 Sat Aug 15 01:18:51 CEST 2009 |
| 250 |
- sorry, another major API simplification. |
| 251 |
- greatly improved aemp configuration abilities. |
| 252 |
- introduced profile management. |
| 253 |
- updated exmaples in eg/. |
| 254 |
- added Kernel::snd_to_func. |
| 255 |
|
| 256 |
0.6 Thu Aug 13 03:15:05 CEST 2009 |
| 257 |
- do away with .aemp-secret and use .perl-anyevent-mp as json config |
| 258 |
file. |
| 259 |
- introduce bin/aemp to configure nodes. |
| 260 |
- too many changes to describe. |
| 261 |
|
| 262 |
0.4 Sun Aug 9 18:05:49 CEST 2009 |
| 263 |
- API should now be really stable :) |
| 264 |
- distinguish between resolved and unresolved noderefs. |
| 265 |
- certificates in .aemp-secret are now supported. |
| 266 |
- change port creation semantics. |
| 267 |
- replace become_xxx by initialise_node. |
| 268 |
- implement AE::MP::spawn. |
| 269 |
- implement transport timeouts, monitoring, reconnecting. |
| 270 |
- simplify and partially document the transport protocol. |
| 271 |
|
| 272 |
0.1 Tue Aug 4 23:07:11 CEST 2009 |
| 273 |
- AnyEvent::MP API should be mostly stable by now. |
| 274 |
|
| 275 |
0.02 Sun Aug 2 17:46:43 CEST 2009 |
| 276 |
- design has stabilised a bit, sitll unusable. |
| 277 |
|
| 278 |
0.01 Sat Aug 1 11:43:31 CEST 2009 |
| 279 |
- dummy upload to reserve namespace on CPAN. |
| 280 |
|
| 281 |
0.0 Thu Jul 30 06:10:15 CEST 2009 |
| 282 |
- original version, an AnyEvent::AIO clone. |