SnmpKit v1.3.21 Release Notes
Release Date: May 2026
Version: 1.3.21
Previous Version: 1.3.20
Overview
This is a compatibility-focused patch release for the multi-target SNMP APIs.
It keeps the public interface stable while fixing behavior in the legacy
strategy: :simple paths, improving multi-walk consistency, and cleaning up
tooling noise around optional YAML support.
Highlights
- Fixed legacy engine batch handling so simple multi-request paths return one ordered result per request instead of relying on per-request task wrappers.
- Changed the default concurrent multi internals to use the shared UDP socket
and response correlator directly, removing per-request
Taskfanout from the hot path without changing the API. walk_multiandwalk_table_multinow run through a bounded shared-socket coordinator in the default concurrent path instead of one task per walked target.- Added real
walk_timeouthandling for the default concurrent multi-walk path, with a bounded cap for safety. execute_mixed/2now preserves ordering while routing walk and non-walk subsets through the same shared-socket internal coordinators instead of falling back to task fanout when a walk is present.V2Walknow accumulates walk results by chunk instead of repeated list concatenation, reducing memory churn on large table walks.- Added opt-in adaptive bulk sizing for the concurrent walk path via
adaptive_max_repetitions: true, with optional min/max bounds. - Fixed legacy multi-walk and multi-table-walk behavior to use the shared single-target walk implementation consistently.
- Preserved per-request
timeout:behavior in multi-walk calls. - Added public delegates for:
SnmpKit.get_multi/1,2SnmpKit.walk_table_multi/1,2SnmpKit.SNMP.walk_table_multi/1,2
- Removed compile-time warning noise when
yaml_elixiris not installed by resolving the optional YAML module at runtime. - Repaired a manual debug test that was blocking formatting checks.
API Compatibility
This release is additive and backward compatible:
- No existing public function signatures were removed or changed.
- Existing
timeout:semantics remain intact. - Existing
strategy: :simpleand default concurrent multi APIs continue to exist with corrected internal behavior. - Existing walk APIs keep their current external behavior and result ordering.
- Mixed-operation execution keeps its public behavior and ordering in this release, with updated taskless internals.
User-Visible Fixes
Multi APIs
SnmpKit.get_multi/2now exists at the top-level module as documented.walk_table_multi/2is now exposed consistently through the public manager and top-level unified APIs.- Legacy simple multi batch operations now complete as true batches.
Multi Walks
walk_multi/2andwalk_table_multi/2now share the same single-target walk implementation in the legacy path.- Per-request
timeout:overrides are honored correctly for walk workers.
Optional YAML Support
- Users who do not install
yaml_elixirno longer get compiler warnings from optional YAML code paths.
Validation
Focused regression coverage was added and/or updated for:
- engine batch completion ordering
- documented top-level multi delegates
- legacy
strategy: :simplemulti behavior - legacy walk and table-walk multi behavior
- formatting and optional YAML code paths
Notes
This release does not attempt to change the external API shape for the concurrent multi interfaces. The goal is to make the existing interfaces more correct and more predictable for current users.