Revision 4.1.7a
---------------

- UNSTABLE ALPHA RELEASE.
- Low-level debugging facility implemented.
- Support UdpTransportTarget timeout and retries parameters in oneliner API.
- Fix to snmpTrapOID construction at ...proxy.rfc2576.v1ToV2() 
  function.
- Fix to MibViewController.getNodeName() to take MIB module name
  into account (SF bug #1505847).
- Do explicit check for Counter32,Unsigned32,TimeTicks,Counter64 value types
  in MibTableRow index convertion and in TextualConvention.prettyPrint()
  methods (SF bug #1506341). Handle Bits in indices as RFC2578 suggests.
- Apply read-create column status to libsmi2pysnmp-generated code
  whenever MIB text specifies that (SF bug #1508955).
- Honor and apply DISPLAY-HINT specification when building TextualConvention
  class at libsmi2pysnmp.
- Managed Objects Instances files (smi/mibs/instances/) are now 
  double-underscore prefixed to make them imported explicitly by these
  prefixed names. They used to be imported as a side-effect of
  Managed Objects files import what is way too hackerish.
- The libsmi2pysnmp now supports future libsmi bugfix that would generate 
  "ranges" subtree along with the legacy and ambiguous "range" one.
- SMI support for fixed-length string indices implemented (SF bug #1584799,
  #1653908).
- Managed Object Instances may now have smiRead, smiWrite, smiCreate methods
  to support specific value mangling. These methods, if present, would be 
  invoked from SNMP [Agent] core instead of conventional clone() method.
  The reason is to separate trivial value duplication from specific
  Instance value mangling that may have Agent-specific side effects
  (such as RowStatus).
- MIB table row destruction now works (SF bug #1555010).
- LCD unconfiguration functions for oneliners implemented (SF bug #1635270).
- unloadModules() and unexportSymbols() implemented at MibBuilder
- Notification type PDU proxy code fixed to produce symmetrical
  convertion.
- Various SNMP engine-internal caches expiration implemented.
- SMI-level access control now takes effect only if AC object is
  passed to MIB instrumentation API.
- LCD management code now uses generic MIB instrumentation features.
- Fix to oneliner manager code to have individual UdpSocketTransport
  instance per each SnmpEngine. Multithreaded apps might fail otherwise.
  (SF bug ID #1586420).
- Exclude the PYSNMP_MODULE_ID symbol from MIB view index, as it may get
  resolved into OID label instead of actual MIB object name.
- Memory leak fixed in indices.OidOrderedDict implementation.
- Fix to VACM shortcuts to let notifications and requests to co-exist 
  for the same user otherwise.
- Fix to ...oneliner.cmdgen.UsmUserData to support non-default cyphers.
- USM now uses local notion of snmpEngineBoots/Time when authoritative
  and cached estimate otherwise. Also, a security fix applied to to USM 
  time-window verification (SF bug #1649032).
- Fix to notification objects resolution code at
  NotificationOriginator.sendNotification()
- Do not raise securityLevel for USM error reports that lacks user
  information, as these reports could never be cyphered (SF bug #1624720).
- Non-default BULK PDU params now actually applied.
- SnmpEngineID default value generation algorithmic function changed
  to allow multiple SNMP engines running on the same host.
- Documentation updated.
- A handful of minor fixes applied (SourceForge tracker IDs #1537592,
  #1537600, #1537659, #1548208, #1560939, #1563715, #1575697, #1599220,
  #1615077, #1615365, #1616579).

Revision 4.1.6a
---------------

- UNSTABLE ALPHA RELEASE.
- pysnmpUsmSecretAuthKey and pysnmpUsmSecretPrivKey length increased
  up to 256 octets. There seems no limit on this in RFC, though.
- A workaround for probably broken Agents: SNMPv3 Manager code defaults
  ContextEngineId to SecurityEngineId whenever ContextEngineId is not 
  reported by authoritative SNMP engine on discovery.
- Use empty PDU in engine-discovery report at mpmod/rfc3412.py.
- MibBuilder.loadModules() now fails on missing MIB files.
- MibBuilder.exportSymbols() now accepts unnamed objects (likely Managed
  Objects Instances)
- SNMPv2-SMI.MibScalarInstance objects now support create*/destroy*
  Management Instrumentation methods to pass Columnar Object creation and
  removal events. MibTableColumn class invoke these methods accordingly.
- Fix to AsynNotificationOriginator.asyncSendNotification() callback
  formal parameters
- Initial VACM configuration implemented according to rfc3415 Appendix 1
- tools/buildmibs.sh split-up and re-implemented as tools/build-pysnmp-mib
  and pysnmp-mibs/tools/rebuild-pysnmp-mibs for better usability. These
  and libsmi2pysnmp scripts made installable.
- Types/Notifications/Groups exportSymbols() call chunking implemented
  in tools/libsmi2pysnmp
- Initial values specified to pyasn1 types to comply with latest pyasn1 API.
- Documentation improved
- Minor fixes towards Python 1.5 compatibility

Revision 4.1.5a
---------------

- UNSTABLE ALPHA RELEASE.
- Multi-lingual SNMP Trap/Inform Applications completed; examples added
- SMI model re-designed to make a clear separation between
  Managed Objects and their specification (AKA Agent and Manager side)
- SNMP SET Application support completed
- Minor, though backward incompatible, changes to one-liner API
- Many bugfixes

Revision 4.1.4a
---------------

- UNSTABLE ALPHA RELEASE.
- SHA-based authentication fixed and privacy implemented
- ...oneliner.cmdgen.UsmUserData constructor now takes 
  authProtocol and privProtocol parameters in a backward incompatible
  manner.

Revision 4.1.3a
---------------

- UNSTABLE ALPHA RELEASE.
- rfc3413 applications API changes (related to callback function
  behaviour).
- TransportDispatcher now provides "jobs" interface to clients
  for better control of dispatcher's execution.
- Many minor fixes.

Revision 4.1.2a
---------------

- UNSTABLE ALPHA RELEASE.
- Top-level application classes renamed into longer, self descripting names
  for clarity.
- CommandResponder & NotificationOriginator applications now uses 
  stand-alone SnmpContext for application registration.
- Many minor fixes (inspired by testing on WinXP)

Revision 4.1.1a
---------------

- UNSTABLE ALPHA RELEASE.
- SNMPv3 code first published
- SNMP engine and applications implemented on library level
- Major re-design towards SNMPv3-style API.

Release 4.0.2a
--------------

- Adopted to slightly changed asyncore API (as shipped with python 2,4)

Release 4.0.1a
--------------

- Minor bug/typo fixes, mostly in example/ scripts.

Release 4.0.0a
--------------

- UNSTABLE EARLY ALPHA RELEASE.
- Major re-design and re-implementation.
- Rudimental API versioning implemented to let incompatible package
  branches to co-exist within the same Python installation.
- SMI framework designed and implemented. This framework provides 
  1) various access to MIB data 2) a way to implement custom MIB
  instrumentation objects. There's also a tool for building SMI classes
  from libsmi(3) output (smidump -f python).
- ASN.1 subtyping machinery implemented. Now dynamic ASN.1 instances
  subtyping and quering becomes available. Previously, this has been done
  through Python classes inheritance what proved to be a wrong concept.
- ASN.1 codecs framework re-designed and re-implemented aimed at a more
  consistent design and better performance. Highlights include abstract
  codec interface and serialized data caching (at encoder).
- Asn1Item constraints machinery re-implemented based on Mike C. Fletcher's
  design and code. Now various constrains are implemented as stand-alone
  objects serving interested Asn1Object derivatives through some abstract
  protocol (that's probably the Decorator design pattern).
- ASN.1 tagging facility re-implemented along the client-server design
  pattern. Besides this seems to be a more appropriate design, it allows
  an easier way for dynamic subtyping.
