Releases: attermann/microReticulum
Releases · attermann/microReticulum
0.3.0
- 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
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
0.2.7
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
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)