Changelog

Generated from the commit history at release time. The narrative history through 5.x is in CHANGES.md.

6.0.0-rc.11 (2026-09-11)

⚠ BREAKING CHANGES

  • secmod: passwordToKeySHA() returns a different key for the same passphrase and engine ID. Callers who stored keys derived from it must re-derive them. The keys it returned before could not be used against any other implementation.

  • smi: pysnmp-pysmi is no longer installed with pysnmplib. Code that relied on pysnmp pulling pysmi in – importing pysmi directly, or calling addMibCompiler() – must install pysnmplib[compile] or depend on pysnmp-pysmi explicitly. addMibCompiler() already raised SmiError when pysmi was missing, so what changed is who reaches that path, not what they see on it.

  • smi: PYSNMP-USM-MIB’s pass-phrase columns report not-accessible where the 2017 rendering left them at MibTableColumn’s read-only default: pysnmpUsmSecretUserName, pysnmpUsmSecretAuthKey, pysnmpUsmSecretPrivKey, pysnmpUsmKeyAuthLocalized, pysnmpUsmKeyPrivLocalized, pysnmpUsmKeyAuth and pysnmpUsmKeyPriv. Every one is not-accessible in the module’s own MAX-ACCESS clause, so a manager could read stored authentication and privacy pass-phrases that the MIB never offered. pysnmp’s internal writes are unaffected: they go through the instrumentation controller with no access-control function, which is where max-access is enforced.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

  • smi: SNMP-TARGET-MIB::snmpTargetAddrName and snmpTargetParamsName report not-accessible where the 2017 copy said read-only. RFC 3413 declares both IMPLIED INDEX columns and RFC 2578 section 7.3 requires it; nothing becomes unobtainable, since an index column’s value travels in the OID suffix of every row.

  • smi: SnmpTagValue and SnmpTagList reject an ASCII CR in a tag. RFC 3413 section 4.1.1 defines the delimiters as space, tab, CR and LF; the 2017 copy listed tab twice and omitted CR, so “a\rb” was accepted as a single tag value. Nothing else about the validation changes.

  • smi: SNMP-FRAMEWORK-MIB::snmpEngineTime has syntax Integer32 rather than a class named SnmpEngineTime. RFC 3411 declares it SYNTAX INTEGER (0..2147483647) and defines no such textual convention – the module’s only TCs are SnmpEngineID, SnmpSecurityModel, SnmpMessageProcessingModel, SnmpSecurityLevel and SnmpAdminString.

Fixes an InetAddress index crash along the way: cloneAsName now clones from the octets rather than an ascii decode of them, so an InetAddress carrying raw address bytes no longer fails its DISPLAY-HINT with “Display format eval failure”.

Features

Bug Fixes

6.0.0-rc.10 (2026-09-08)

⚠ BREAKING CHANGES

  • entity: seven INDEX columns of SNMP-VIEW-BASED-ACM-MIB report not-accessible where the 2017 copy said read-only, per RFC 2578 section 7.3: vacmAccessContextPrefix, vacmAccessSecurityLevel, vacmAccessSecurityModel, vacmSecurityModel, vacmSecurityName, vacmViewTreeFamilySubtree and vacmViewTreeFamilyViewName. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in. The fabricated vacmContextStatus column is gone; nothing outside this repository could have addressed it by name, since it was never in the MIB.

  • smi: INDEX columns report not-accessible where the 2017 base layer reported read-only, which RFC 2578 section 7.3 requires; sixteen columns across six modules, SNMPv2-MIB::sysORIndex among them. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in, so a manager reading the column can read it out of the row identifier instead. RFC1213-MIB::TtcpInSegs (a misspelling of tcpInSegs), RFC1158-MIB::snmpInBadTypes and RFC1158-MIB::snmpOutReadOnlys are gone, none of them declared by any published ASN.1. SNMPv2-MIB::snmpBasicCompliance is now deprecated and snmpObsoleteGroup obsolete, per RFC 3418, and RFC1213-MIB::atNetAddress has syntax IpAddress rather than NetworkAddress, the single arm RFC 1155 defines that CHOICE to have.

Features

  • entity: create VACM context rows without a column RFC 3415 omits (e9563a6), closes #198 #205

  • smi: delete the 2017 base layer so pysmi’s modules are the ones that load (59e68ba), closes #205 #198 #205

  • smi: publish and version the MIB module loader contract (e044df2), closes #197

  • smi: resolve a module by best match, not by which source answers first (f380447), closes #198

Bug Fixes

  • carrier: report the family wildcard for an unbound datagram socket (ab23e50), closes #173

  • smi: do not reload a module a newer source appeared for (b954c75), closes #198

  • smi: name the archive a zip-imported MIB module came from (a9b19ba), closes #198

  • smi: read a zip archive’s directory under its 3.14 name (62237aa)

Performance Improvements

  • import the MIB compiler when it is used, not when rfc1902 is imported (102833b), closes #140

6.0.0-rc.9 (2026-09-06)

⚠ BREAKING CHANGES

  • deps: pysnmp-pyasn1 must now be >=2.0.0,<3.0.0.

Bug Fixes

  • debug: make the debug switch callable whether or not debugging is on (921b720)

  • deps: track pysmi and pyasn1 release candidates (c0a116d)

  • smi: make index iteration agree with keys() (ac4354d)

  • typing: declare the carrier, mpmod and secmod base attributes (37bbf9a)

  • typing: give abstract base attributes the type their subclasses use (6c28cbc)

  • typing: stop except: targets shadowing names the function still uses (8bec4fa)

  • typing: type-clean the package and enable the mypy pre-commit hook (bbe8983), closes pysnmp/pyasn1#165 #178

Miscellaneous Chores

  • deps: bump pysnmp-pyasn1 to 2.0.0 and pysnmp-pysmi to 2.1.0 (bd3a7e1)

6.0.0-rc.8 (2026-09-06)

Bug Fixes

  • ci: publish docs from a branch, not a detached HEAD (9002196)

6.0.0-rc.7 (2026-09-05)

Bug Fixes

  • smi: accept numeric input for integer TCs carrying a DISPLAY-HINT (7d98e83), closes #150

  • smi: let transport-address TCs use the TEXTUAL-CONVENTION machinery (33c91fa), closes #155