Kompact 0.10.0
Features
- Async/Await Support
- UDP networking support
- Network Buffers can now be configured using
BufferConfig
- Support for custom component recovery handlers
- Buffer chunks can now be chained, allowing essentially arbitrary sized messages to be serialised (limited by the buffer pool configuration and system memory, of course)
- Explicit and implicit routing for incoming messages on named paths has been implemented
- Type Erased Components (nightly-only, feature gated)
Breaking Changes
ProvidedPort
/RequiredPort
only has a single type parameter now- All event/message handlers must return a special
Handled
struct now. Normally that should simply beHandled::Ok
. - Within serialisers the
buf.bytes()
method does not necessarily return the complete slice anymore. This in accordance with the interface specification, but differs from previous behaviour. - Serialisers must now implement
TryClone
, as cloning the serialiser is sometimes necessary. Since most are stateless, they can fulfil this requirement by simply derivingClone
. - Named actor paths are now added correctly into the store, which may cause some runtime issues for users of path hierarchies. This is technically a bug fix, though, as paths were always meant to be added split by / and not as a single blob.
ActorLookup
/ActorStore
has a new API, but I don't expect any external issues with that.
Other Changes
Serialisable
may override thecloned
method to avoid the broadcast policy having to serialise an otherwise local and cloneable structure.- The same goes for
Serialiser::try_clone_data
. - To preserve my sanity while testing, I added a few convenience methods for constructing named actor paths to
SystemPath
andNamedPath
. In particular you can now use something likepath / "new-child" / '*'
to extend a named path. - Nagle's algorithm can now be configured in the
NetworkConfig
And many other changes...too many to list, really. This has become quite a large release.