v0.11.0
Core / API
- Range-based receive
Peer::incoming()— drain the receive queue with a range-for; each iteration yields a freshPacketPtrfreed at end of scope, andpkt.id()returns theID_TIMESTAMP-aware message identifier. - Startup builders
Peer::server()/Peer::client()— a fluent chain foldingSocketDescriptor+Startup+ result check +SetMaximumIncomingConnections/Connectinto one call.start()returns a move-onlyResult<Peer>whose error preserves the underlyingStartupResult/ConnectionAttemptResult(tagged byPeerStage). Security stays opt-in (secure()/public_key()). - Serialization archives (
mafianet/Archive.h) — oneserialize(Ar&)member template describes a type's wire format for both directions;WriteArchive/ReadArchiveadapt aBitStream, recursing into nestedserialize()types and falling through tooperator<</operator>>for everything else. - Typed message dispatcher (
mafianet/Dispatcher.h) —on<T>(handler)auto-assigns identifiers fromID_USER_PACKET_ENUMin registration order (documented wire contract;on<T>(id, handler)pins explicit ids),on(id, handler)covers system messages, anddispatch()skipsID_TIMESTAMPprefixes and hands handlers a deserializedTplus aSender.encode()is the symmetric write path. Opt-in — the rawswitchstays fully usable. - Typed
Peer::send/Peer::broadcast— serialize-and-send a registered message in one call via the dispatcher registry, with overridable defaults (Priority::High,Reliability::ReliableOrdered, channel 0). Destination acceptsSystemAddressorRakNetGUID; rawSend()untouched.
Build
- RakVoice is built into the core library — header now
mafianet/RakVoice.h; Opus and RNNoise are fetched and linked into the core automatically, no separate extension build.
Testing / CI
- Full GoogleTest migration — all 29 legacy tests ported and the
Samples/TestsTestInterfaceharness deleted. HermeticUnitTestsand loopbackIntegrationTestsunderTests/, one process per test via CTest;MAFIANET_BUILD_TESTSbuilds everything test-related (requiresMAFIANET_BUILD_STATIC). CI runs ctest with JUnit artifacts on all platforms.
Full changelog: v0.10.0...v0.11.0