Skip to content

Releases: attermann/microReticulum

0.3.0

06 Apr 10:00

Choose a tag to compare

  • Removed File/FileSystem abstraction and replaced with extended microStore File/FileSystem abstraction.
  • Refactored path table storage to use microStore log-append flash storage in place of in-memory path table serialized to flash.
  • Introduced new preprocessor directives to tune path table storage
    -DRNS_PATH_TABLE_SEGMENT_SIZE: Size in bytes of each segment file
    -DRNS_PATH_TABLE_SEGMENT_COUNT: Maximum number of segment files to rotate (minimum of 3)
  • Updated LoRa example apps to use RadioLib
  • Various link and other fixes courtesy of @jrl290
  • Interface rxb/txb accessor courtesy of @0xSeren

0.2.9

04 Mar 01:00

Choose a tag to compare

Major bug fixes and performance enhancements

  • Fixed bug in path table loading from flash storage wherein the raw
    (packed) announce packet associated with each path entry was not being
    unpacked prior to use.
  • Fixed bug in path table entry announce packet loading where critical
    changes to the announce packet (like hops increment) was being
    overwriteen each time packet was re-loaded from cache.
  • Optimized path table entries to lazy-load both announce packet and
    receive interface so that memory is consumed by these structures until
    if/when the path is actually used.
  • Updated several global timers and sizes to match new RNS 1.x values.
  • Bumped version to 0.2.9

0.2.8

02 Mar 01:32

Choose a tag to compare

  • Added RNS 1.x Link MTU handling to Transport
  • Fixed crash caused by deserializing null values

0.2.7

01 Mar 19:49

Choose a tag to compare

Add announce table culling, fix use-after-free, and refactor build/log

  • Add cull_announce_table() with OOM-safe min_element fallback, matching pattern from cull_path_table() and cull_known_destinations()
  • Call cull immediately after every announce/path/known-destination insert
  • Fix use-after-free: guard announce_entry access with announce_erased flag
  • remove_path() now also deletes cached packet files
  • Path table insert now removes existing entry first to prevent duplicates
  • Rename env:mcu -> env:embedded; add env:native_debug and heltec_wifi_lora_32_V4
  • Make TLSF buffer size configurable via RNS_TLSF_BUFFER_SIZE macro
  • Refactor log macros to unified RNS::log() path; add doHeadLog with callback support
  • Prefix all bad_alloc error messages with "bad_alloc -" for easier grepping

Replace string-concatenation logging with printf-style F-variants
Converted log calls across src/, examples/, and test/ to use DEBUGF/TRACEF/ERRORF/etc. macros instead of std::string + operator+. This eliminates temporary heap allocations on every log call, which matters on memory-constrained MCUs.

Fixed link compatibility with Reticulum python implementation courtesy of @O11v3r .

0.2.6

27 Feb 20:28

Choose a tag to compare

OOM hardening and memory tuning.

  • Transport::inbound(): pre-emptive cull before destination-table insert;
    try/catch around insert for explicit OOM diagnostics
  • Transport::jobs(): split stale-entry culling into 5 independent
    per-phase try/catch blocks so a failure in one phase doesn't abort
    the others; reserve() before push_back loops in each phase
  • cull_path_table()/cull_known_destinations(): std::min_element fallback
    when sort-index allocation fails, breaking the cull-OOM-still-full loop
  • Identity::remember(): wrapped _known_destinations.insert in try/catch
    for explicit OOM diagnostic logging
  • Destination::announce(): outer try/catch covers all OOM-prone ops
    (Bytes concat, sign, Packet ctor, send); inner _path_responses.insert
    catch preserved for degraded-mode behavior
  • Packet::unpack(): dedicated std::bad_alloc catch returns false cleanly
  • Type.h: MAX_RECEIPTS and MAX_QUEUED_ANNOUNCES now overridable at
    compile time via RNS_RECEIPTS_MAX / RNS_QUEUED_ANNOUNCES_MAX
  • Transport.h: hashlist_maxsize and max_pr_tags exposed as runtime
    accessors for dynamic capacity tuning
  • Added more defines for setting storage and persistence limits (RNS_RATE_TIMESTAMPS_MAX, RNS_RANDOM_BLOBS_PERSIST_MAX, RNS_RANDOM_BLOBS_MAX)

0.2.5

26 Feb 18:43

Choose a tag to compare

Fix receipt cull logic and bytes edge case courtesy of @DanBeard.

0.2.4

15 Feb 17:04

Choose a tag to compare

Fix for link validation failure when poackets contain new MTU in payload from RNS 1.0 (courtesy of @jlpoolen).
Optimization of announce re-broadcasts from RNS 1.0.

0.2.3

14 Feb 05:44

Choose a tag to compare

Added support for new context_flag in RNS packet headers.

0.2.2

14 Feb 05:43

Choose a tag to compare

First release to public registries.