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 Task fanout from the hot path without changing the API.
  • walk_multi and walk_table_multi now run through a bounded shared-socket coordinator in the default concurrent path instead of one task per walked target.
  • Added real walk_timeout handling for the default concurrent multi-walk path, with a bounded cap for safety.
  • execute_mixed/2 now 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.
  • V2Walk now 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,2
    • SnmpKit.walk_table_multi/1,2
    • SnmpKit.SNMP.walk_table_multi/1,2
  • Removed compile-time warning noise when yaml_elixir is 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: :simple and 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/2 now exists at the top-level module as documented.
  • walk_table_multi/2 is 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/2 and walk_table_multi/2 now 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_elixir no 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: :simple multi 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.