Skip to content

0.5.0

Latest

Choose a tag to compare

@attermann attermann released this 27 Jun 14:57

microReticulum v0.5.0

microReticulum 0.5.0 is a substantial transport and provisioning update focused on improving network resilience, remote management capabilities, storage efficiency, and closer alignment with the Python Reticulum reference implementation. This release also introduces passive neighbor health monitoring and numerous improvements for constrained embedded systems.

Added

Passive Neighbor Health Detection and Recovery

  • Added passive neighbor-liveness inference with targeted probe confirmation.
  • Nodes can now identify potentially degraded neighbors by observing forwarding and proof-return behavior.
  • Introduced configurable probing thresholds and timing controls.
  • Added automatic path responsiveness tracking:
    • UNKNOWN
    • RESPONSIVE
    • UNRESPONSIVE
  • Added runtime controls for neighbor probing behavior.
  • Added metrics and extensive logging for probe activity and path state changes.

Expanded Remote Provisioning and Management

  • Added first-class remote provisioning and management support.
  • Added remote /provision request handling.
  • Added namespace commit callbacks to support grouped configuration updates.
  • Added remote reboot support.
  • Expanded built-in provisioning namespaces and available metrics.

Provisioning Transfer Optimizations

  • Added schema hashing for client-side schema caching.
  • Added compression support for provisioning transfers.
  • Embedded Heatshrink compression directly into the library to remove external dependency requirements.
  • Reduced management traffic requirements for low-bandwidth links such as LoRa.

Blackhole Identity Management

  • Added blackhole identity management with persistence support.
  • Added path filtering for blackholed identities.
  • Added optional publication of blackhole lists.
  • Added expiration and automatic cleanup handling.

Transport Metrics and Observability

  • Added transport-level traffic counters and bandwidth-rate tracking.
  • Added per-interface throughput statistics.
  • Added per-packet signal metrics:
    • RSSI
    • SNR
    • Link quality (Q)
  • Added signal-quality reporting in remote status payloads.
  • Expanded remote management metrics substantially.

Network Identity Support

  • Activated network identity destination registration.
  • Added public network identity accessors.

Interface Enhancements

  • Added interface prioritization by bitrate.
  • Added interface lifecycle hooks:
    • detach()
    • sent_announce()
    • sent_path_request()
  • Added clean interface shutdown handling.

Improved

Storage and Persistence

  • Migrated known-destination storage to microStore.
  • Migrated packet hashlist storage to microStore.
  • Updated destination persistence to MsgPack-based serialization for easier schema evolution.
  • Improved path and storage culling efficiency.
  • Reduced memory pressure across embedded targets.

Memory Usage

  • Moved Bytes allocations to container allocator pools.
  • Improved memory behavior for constrained targets such as nRF52 systems.

Routing and Path Handling

  • Added path responsiveness awareness.
  • Unresponsive paths are no longer advertised in path responses.
  • Added throttled queued discovery path requests.
  • Added interface-aware rediscovery behavior.
  • Added replay and out-of-order announce rejection.
  • Added MTU clamping for inbound link requests.
  • Improved routing behavior for roaming interfaces.
  • Added interface prioritization based on link speed.

Python Reference Alignment

Numerous transport behaviors were aligned with the Python Reticulum implementation, including:

  • Path request timing and expiration behavior
  • Interface routing logic
  • Discovery throttling
  • Transport traffic statistics
  • Announce handling behavior
  • Packet signal-stat propagation
  • Link handling behavior
  • Remote management payload formats

Fixed

  • Fixed Transport::expire_path() behavior.
  • Fixed path request gate timeout handling.
  • Fixed crash conditions when identities were missing from known destinations.
  • Fixed identity recovery from cached announces.
  • Fixed timeout callback dispatch for PacketReceipt.
  • Fixed packet deduplication edge cases during interface mismatch scenarios.
  • Fixed provisioning draft/working/effective value handling.
  • Fixed persistence test failures after schema changes.
  • Corrected multiple feature-gating behaviors.
  • Optimized path-state culling performance.

Changed

  • Added std::function callback support to PacketReceipt.
  • Legacy function-pointer callback APIs remain for compatibility but are now deprecated.
  • Increased default neighbor probe timing values.
  • Added compile-time controls for logging verbosity through RNS_LOG_LEVEL.

Notes

Persistence Migration

Path and destination persistence formats changed in this release.

Existing persisted path data may be discarded after upgrading and rebuilt automatically from network announces. This behavior is expected and should self-heal during normal operation.

Compatibility

Existing applications should continue to function without modification in most cases. Applications using internal persistence formats or callback implementations should review the updated APIs and deprecation notices.

Contributors

Thanks to all contributors to this release: