MIBBLE VERSION INFORMATION
==========================

Version 2.10.1 (2017-02-20):
----------------------------

    o Added AES encryption to MibbleBrowser
      The MibbleBrowser application now supports AES encryption of 
      messages. Thanks to Richard Thompson for suggesting this. 
      [Issue #24]

    o Changed bundled SNMP API to Westhawk SNMP 6.1
      The bundled Westhawk SNMP library has been updated to version 
      6.1 to enable AES privacy. This library is only used by the 
      example MibbleBrowser application and isn't required for MIB 
      parsing.

    o Fixed NPE when imported MIB not found
      The MibImport class unfortunately threw a NullPointerException 
      when an imported MIB wasn't found. Thanks to Yonghao Yu for 
      fixing and reporting this. [Issue #23]


Version 2.10 (2017-01-26):
--------------------------

    o Added multiple UI improvements to MibbleBrowser
      The MibbleBrowser application has been improved by adding a set 
      of patches and suggestions made by Dartware LLC. It now reloads 
      the set of open MIB files more reliably and allows simple 
      loading of the built-in IETF and IANA MIBs. Many thanks to 
      Richard E. Brown and Dartware LLC for these improvements

    o Added MIB import tree printout to MibblePrinter
      A new --mibtree option has been added to the MibblePrinter 
      application to simplify viewing of all the imported MIBs 
      (dependency tree).

    o Added methods for input MIB and symbol text
      The Mib.getText() and MibSymbol.getText() methods have been 
      added to retrieve the input (unparsed) MIB file text. Thanks to 
      Herbie Porter for suggesting this. [Issue #18]

    o Added OID search methods to MibLoader & other classes
      The MibLoader, MibValueSymbol and ObjectIdentifierValue classes 
      have been improved with new getOid(), find() and other methods 
      to simplify search and access to the loaded OID tree. [Issue 
      #11]

    o Added new access methods to MibLoader class
      The MibLoader class has been improved with new getMibs() 
      methods for accessing a maps of loaded MIB files (optionally 
      filtered). Thanks to Anshul Gupta for suggesting this. [Issue 
      #9]

    o Added MibLocator & MibSource classes
      The MibLocator and MibSource classes have been added to enable 
      easy search of MIB modules in a directory or on a resource 
      path. Variants of these classes have previously been used 
      internally by the MibLoader.

    o Added MibTree & MibTreeNode classes
      The MibTree and MibTreeNode classes have been added to provide 
      a simple JTree implementation of a MIB tree (used in 
      MibbleBrowser).

    o Added SMIv1 and SMIv2 incompatibility warning
      Warnings are now issued when importing SMIv1 symbols into a 
      SMIv2 context (or vice versa). A number of bundled IETF MIBs 
      have also been corrected to avoid triggering this warning. 
      [Issue #4]

    o Added warning for duplicate definitions of symbols
      A warning is now issued when two or more MIB symbols have the 
      same value or when an OID is redefined across MIBs. The bundled 
      ISDN-MIB has also been corrected to avoid triggering this 
      warning. Thanks to Aleksandar Pesic for finding this issue. 
      [Issue #22]

    o Changed to Java 7 & Generics
      The whole library has been updated to Java 7, with added Java 
      Generics for all methods returning lists or collections. This 
      change should be fully backwards-compatible, but now requires a 
      Java 7 environment to run. [Issue #10]

    o Changed missing import errors to warnings
      Failure to locate an imported MIB or symbol is now a warning 
      instead of an error. This makes it possible to load some 
      additional MIBs, as the missing symbols may be found in other 
      MIBs imported or in the default SMI MIB. Errors will still be 
      issued if the symbol is used (and couldn't be located). [Issue 
      #2]

    o Fixed compareTo in ObjectIdentifierValue
      The ObjectIdentifierValue class didn't use proper numerical 
      comparison of the numerical parts. This caused some two-digit 
      OID parts to appear previous to some single-digit ones. [Issue 
      #13]

    o Fixed MibLoader to allow multi-instance usage
      The MibLoader class improperly used a global ASN.1 parser, 
      instead of an instance-specific one. This made it impossible to 
      use multiple instances of MibLoader to provide parallelism. 
      [Issue #21]


Version 2.9.4 (2016-09-27):
---------------------------

    o Clarified source code licensing for commercial use
      Updated to Grammatica to version 1.6 (BSD licensed) and 
      simplified source code headers and similar for clarity. The 
      commercially licensed package no longer contains any references 
      to GNU GPL.

    o Updated bundled IANA and IETF MIB files
      The IANA and IETF MIB files bundled with Mibble have been 
      updated to match those available in the libsmi project source 
      tree (as of 2016-09-27).


Version 2.9.3 (2011-12-08):
---------------------------

    o Fixed NPE issue for empty directories
      The MibLoader class didn't properly handle empty or invalid 
      directories. This caused an NPE when attempting to load MIB 
      files in some cases. [Issue #1]


Version 2.9.2 (2009-04-11):
---------------------------

    o Changed missing SMI import from error to warning
      Some MIB files lacks a proper SMI MIB import, previously 
      causing a parse error due to unresolved symbols. This has now 
      been fixed by silently importing RFC1155-SMI when no other SNMP 
      SMI module has been imported, causing each of these errors to 
      be reported as a warning instead. [Bug #7113]

    o Fixed NPE issue when checking for null directories
      The MibLoader class didn't properly handle null directories in 
      the hasDir method. This caused an NPE when attempting to load 
      MIB files from the current directory without using a directory 
      prefix on the file name. [Bug #26146]

    o Fixed omitted character in extract from error MIBs
      The first character in each MIB line extracted and printed in 
      error messages was previously omitted, causing the error 
      location to be off by one character. This error was introduced 
      when correcting [Bug #16252] in version 2.7. [Bug #26150]


Version 2.9.1 (2009-04-04):
---------------------------

    o Fixed issue with input streams not closed on error
      The MibLoader class didn't properly close the input file 
      streams if a parse exception was encountered. Thanks to 
      Masanori Sekido for reporting this. [Bug #26082]


Version 2.9 (2009-03-19):
-------------------------

    o Added complete comment extraction and printing
      The comments from all MIB constructs are now extracted and 
      stored in the respective objects. No comments are ever lost, 
      but may be assigned to a parent object in the parsed data 
      structure. The MibWriter pretty-printer has also been extended 
      to print all available comments. Thanks to Cisco for requesting 
      and financing this work. [Bug #18844]

    o Added new convenience methods in MibLoader class
      The MibLoader class has been improved with a number of new 
      convenience methods to enable improved access to the MIB search 
      path and easier unloading of all MIBs (freeing the memory used).

    o Improved parsing speed significantly
      The MibLoader class is now much faster when parsing MIB files, 
      mostly due to speedups in Grammatica 1.5 but also thanks to a 
      number of speed optimizations in Mibble proper. Make sure to 
      reuse the same MibLoader instance when parsing multiple MIB 
      files for optimum effect of these improvements.

    o Improved the Mibble Browser user interface
      The Mibble Browser test application has been improved in 
      various ways to make it easier to work with. It is now also 
      packaged into a separate jar file for easy startup by 
      double-click on most platforms. Thanks to Richard E. Brown for 
      a long list of suggested UI improvements.

    o Changed some bundled IANA and IETF MIB files
      A number of IANA and IETF MIB files bundled with Mibble have 
      been added or updated to match those distributed in libsmi 
      0.4.8 (2008-04-18). Thanks to Elyes Lehtihet for the reminder. 
      [Bug #19905] & [Bug #24435]

    o Changed bundled SNMP API to Westhawk SNMP 6.0
      The MibbleBrowser SNMP support has been updated to use the 
      newer version 6.0 of the Westhawk SNMP stack. This fixes a few 
      issue with SNMP context ID. Thanks to Vincent Lane for 
      reporting this. [Bug #24385]

    o Changed startup scripts for better auto-detection
      The various shell startup scripts for Linux, Mac and Windows 
      have been updated to have better auto-detection of the location 
      of Java and the application itself. Thanks to Richard E. Brown 
      for commenting on this.

    o Fixed syntax error for inline ASN.1 comments
      When an inline ASN.1 comment was ended on the same line and 
      followed by another construct, a syntax error would result. The 
      ASN.1 parser in Mibble has now been fixed to handled inline 
      comments properly. Thanks to Karl Weber for reporting this. 
      [Bug #22841]

    o Fixed NPE when parsing unresolved referenced types
      When a textual convention or similar contained an unresolved 
      type reference, a NullPointerException could occur when using 
      the defined type elsewhere (like in a SEQUENCE type). This has 
      now been corrected and a new reference error is shown instead. 
      Thanks to Markus Barchfeld for reporting this. [Bug #18843]

    o Fixed missing padding for some hex and binary constants
      After [Bug #17834] there were still some cases where padding 
      would be removed from specified hexadecimal and binary values 
      in MIB files. A fix has now been implemented that takes all 
      size constraint values into consideration, not just the lower 
      bound. Thanks to M. S. Thiraviyakumar for reporting this and 
      providing a fix. [Bug #22854]


Version 2.8 (2007-01-10):
-------------------------

    o Added default ccitt and joint-iso-ccitt symbols
      The ccitt and joint-iso-ccitt OID symbols have been added to 
      the default context. The zeroDotZero and similar symbols are 
      now also automatically connected to the correct root symbol. 
      Thanks to Bernd Sorgenfrei for reporting this. [Bug #16827]

    o Added enumeration comment extraction and printing
      The MIB comments around enumeration or bit set value are now 
      extracted and stored in the respective symbols. The MibWriter 
      pretty-printer has also been extended to print these comments. 
      Thanks to Eshwar Yedavalli and Cisco for requesting and 
      financing this feature. [Bug #17879]

    o Added symbolic bit set value printing
      The bit set values are now printed with symbolic names instead 
      of numbers by the MibWriter pretty-printer. [Bug #17835]

    o Changed some bundled IANA MIB files
      A number of IANA MIB files bundled with Mibble have been added 
      or updated. These are IANAifType-MIB, IANA-PRINTER-MIB, 
      IANA-ITU-ALARM-TC-MIB and IANA-IPPM-METRICS-REGISTRY-MIB. 
      Thanks to Bernd Sorgenfrei for reporting this and providing a 
      pointer to the new versions. [Bug #16826]

    o Changed some bundled IETF MIB files
      A number of IETF MIB files bundled with Mibble have been added 
      or updated. These are INET-ADDRESS-MIB, IP-FORWARD-MIB, 
      SNMP-USM-AES-MIB, TCP-MIB and UDP-MIB. [Bug #16826]

    o Fixed incorrect Mib.getRootSymbol method
      The Mib.getRootSymbol() method returned an invalid root symbol 
      in some cases and was unreliable. Thanks to Bernd Sorgenfrei 
      for reporting and fixing this. [Bug #16824]

    o Fixed duplicate loading of implicitly loaded MIBs
      Due to a bug in MibLoader that was introduced in version 2.7, 
      some MIBs could be loaded several times. This caused higher 
      loading times, more memory usage and duplicate MIBs being 
      returned by MibLoader.getAllMibs(). Thanks to Bernd Sorgenfrei 
      for reporting and fixing this. [Bug #16825]

    o Fixed parse error on references in AGENT-CAPABILITIES
      A parse error was thrown when using symbolic references in the 
      DEFVAL, SYNTAX or CREATION-REQUIRES clauses inside an 
      AGENT-CAPABILITIES macro. This has now been corrected so that 
      the correct symbol name references are available. Thanks to 
      Eshwar Yedavalli and Cisco for reporting this and financing the 
      bug fix. [Bug #17705] & [Bug #17943]

    o Fixed incorrect printing of binary and hexadecimal values
      The MibWriter class printed binary and hexadecimal values with 
      their shortest possible length, omitting any required zero (0) 
      padding. The code now considers the defining type to determine 
      the required amount of padding. Thanks to Eshwar Yedavalli and 
      Cisco for reporting this and financing the bug fix.[Bug #17834]

    o Fixed bad value error for some SNMP operations
      When attempting a SET operation on a counter or a gauge value, 
      the MibbleBrowser would return a "bad value error". This has 
      now been corrected by using the proper WestHawk SNMP calls. 
      Thanks to Paul Faid for finding and fixing this. [Bug #18591]

    o Fixed incorrect value validation for size constraints
      The SizeConstraint.isCompatible(MibValue) method always 
      returned false, regardless of the value provided. This has now 
      been corrected, so that the actual length of an octet string 
      value is checked. Thanks to Paul Faid for reporting this. [Bug 
      #18741]


Version 2.7 (2006-05-28):
-------------------------

    o Added MIB loader support for loading from a single file
      The MibLoader class now properly supports loading MIB modules 
      from a single file even if the modules have references to each 
      other. Previously it was only possible to load multiple MIBs in 
      a single file if the referenced MIB modules were placed at the 
      top of the file. Thanks to Ted Kaczmarek for suggesting this. 
      [Bug #16417]

    o Added detection of explicitly vs implicitly loaded MIBs
      The Mib class now contains a new isLoaded() method to enable 
      easy separation between explicitly and implicitly loaded MIBs. 
      The latter are MIB modules that have been loaded due to an 
      import declaration. The MibblePrinter application has also been 
      updated to print all explicitly loaded MIBs instead of just the 
      first MIB module in each file. [Bug #16419]

    o Added numeric OID value cache for improved performance
      The ObjectIdentifierValue class now caches the result of the 
      toString() method in order to improve performance. Thanks to 
      Mohamed Ben-Hedi Sghaier for providing a fix for this. [Bug 
      #16418]

    o Added simple method for finding MIB importers
      The Mib.getImportingMibs() method has been added to provide a 
      simple API for finding MIB importers. If the returned list is 
      empty, the MIB is safe for unloading. [Bug #16543]

    o Added easy access to the root object identifier
      The MibLoader.getRootOid() method has been added to make it 
      easier to access the root object identifier value (i.e. the 
      predefined iso value. [Bug #16544]

    o Added easy lookup of referenced textual conventions
      The SnmpTextualConvention.findReference() method has been added 
      to enable easy lookup of referenced textual conventions. [Bug 
      #16643]

    o Changed toString() to print enumeration names
      The BitSetType and IntegerType classes have been modified to 
      print both enumeration names and values in the toString() 
      method. Both the MibbleBrowser and MibblePrinter applications 
      are affected by this, making it easier to interpret SNMP 
      results returned. [Bug #16420]

    o Fixed issue with MIB unloading not removing references
      The MibLoader.unload() method didn't properly remove all 
      references to the MIB as the object identifier tree remained 
      linked. This has now been corrected so that an unloaded MIB 
      will be completely removed and eligible for garbage collection. 
      Thanks to Eshwar Yedavalli for reporting this. [Bug #16285]

    o Fixed IndexOutOfBoundsException for some error logs
      When loading MIB files with invalid line termination sequences 
      the MibLoaderLog couldn't properly locate and load the context 
      line for any errors. This has been fixed so that only linefeed 
      (LF, 0x0A) is counted in line numbers when reading context 
      lines. Thanks to Ted Kaczmarek for reporting this. [Bug #16252]

    o Fixed parse error for some ASCII control characters
      When loading MIB files with some unsupported ASCII control 
      characters, the parser failed with a parse exception. The 
      parser has now been modified to ignore a number of common 
      control codes in ASCII, such as form-feed, vertical tab, 
      substitute and others. Thanks to Gary Pientka for reporting 
      this. [Bug #16681]


Version 2.6 (2005-12-10):
-------------------------

    o Added a MIB pretty printer
      A SMIv2 pretty printer has been added to Mibble. It can be 
      accessed either with the MibblePrinter utility application, or 
      directly with the new MibWriter class. Thanks to Cisco for 
      financing this work. [Bug #14638]

    o Added new Mib convenience method
      The Mib class in the Mibble API has been improved by the 
      addition of a new getRootSymbol() method for retrieving the 
      root value symbol. [Bug #14831]

    o Added new MibValueSymbol convenience methods
      The MibValueSymbol class in the Mibble API has been improved by 
      the addition of new methods for retrieving child symbols. This 
      will facilitate some accesses that could previously be a bit 
      cumbersome to write. [Bug #13151]

    o Added MIB import information retrieval
      The Mib class now contains a method getAllImports() that allows 
      retrieval of the import declarations for a MIB. The class 
      MibImport has also been added to the public API. [Bug #14637]

    o Added module and symbol comment retrieval
      The Mib and MibSymbol classes in the Mibble API have been 
      improved by allowing the retrieval of MIB file comments. This 
      will enable full access to any ASN.1 comment text that were 
      previously ignored. [Bug #14636]

    o Added macro symbol retrieval
      The MibMacroSymbol class has been added to the Mibble API, so 
      that there is now three types of symbols. This will enable full 
      access to all imported symbols. [Bug #14727]

    o Added SnmpCompliance type separation API
      The SnmpCompliance class didn't allow an application to 
      distinguish between GROUP and OBJECT compliances easily. A new 
      method isGroup() has been added to the API so that this is now 
      possible. [Bug #14765]

    o Added SMI version number retrieval
      The Mib class now has a new method getSmiVersion that returns 
      the SMI version that was used for defining the MIB. This makes 
      it easier to perform different validations for different MIB:s. 
      [Bug #15078]

    o Added hashCode() and compareTo() implementations
      The hashCode() method has been added to all classes 
      implementing equals(). Also, the MibValue class is now 
      Comparable making it easier to compare values. [Bug #13222]

    o Changed to support IMPLIED in index lists
      A new class SnmpIndex has been added to encapsulate an index 
      type or value. The method SnmpObjectType.getIndex() has been 
      modified to return a list of these new index objects, which 
      will break existing code using this method. [Bug #10870]

    o Changed several SNMP text returning methods
      The getDescription() and similar methods in several SNMP type 
      classes have been modified to remove a cleaner version of the 
      text (with indentation removed). This was introduced in 2.5 for 
      one field, but has now been expanded to more fields. Use the 
      corresponding getUnformattedXXX() methods for the original 
      behaviour. [Bug #14728]

    o Changed enumeration symbol ordering
      The getAllSymbols() method in the BitSetType and IntegerType 
      classes has been modified to return the symbol list in the same 
      order as the symbols appears in the MIB file. The internal list 
      representation was changed to LinkedHashMap, so JDK 1.4 is now 
      required. [Bug #13221]

    o Changed OID validation for mismatched names
      When two OID:s used different names for the same component, 
      this was previously considered a MIB loading error. The error 
      message for this has been clarified and it is now just a 
      warning instead of an error. [Bug #13309]

    o Changed binary and hexadecimal value classes
      Two new MibValue classes have been introduced to store binary 
      and hexadecimal numbers. Both inherit the old NumberValue 
      class, but modify the implementation of toString() to print the 
      value in the correct ASN.1 representation. This might break old 
      code, but the old behaviour is available by using 
      value.toObject().toString() instead. Thanks to Andreas 
      Schönbach for suggesting this. [Bug #15139]

    o Fixed NullPointerException on some invalid OID:s
      When two OID:s used different names for the same component, a 
      NullPointerException was thrown when defining value symbols 
      using the second OID. This has been fixed so that type or value 
      validation errors should no longer be able to cause NPE:s in 
      later stages. [Bug #13309]

    o Fixed parse error for hex values in enumerations
      When using binary or hexadecimal values as integer enumerated 
      values, the parser displayed a syntax error. This has now been 
      fixed, so that both binary and hexadecimal values are allowed. 
      Thanks to Andreas Schönbach for reporting this. [Bug #15027]

    o Fixed issue with MIB file not being set in loader log
      The MIB file was sometime set to null in the MibLoaderLog 
      entries. This could cause NullPointerExceptions when attepting 
      to print an error or a warning message. This has been fixed so 
      that NPE:s will no longer occur in these cases and the MIB 
      loader should now properly set the MIB file in all log entries. 
      [Bug #10824]

    o Fixed size constraint type validity checking
      The SizeConstraint didn't accept the StringType as compatible, 
      which has now been fixed. All constraints are now also checked 
      for validity upon type initialization. [Bug #10823]

    o Fixed MibbleBrowser file chooser directory
      The file chooser dialog in the MibbleBrowser always started in 
      the user home directory instead of the current directory. This 
      has now been fixed and the application also remembers where the 
      directory where the last MIB was loaded. [Bug #11767]


Version 2.5 (2004-10-26):
-------------------------

    o Added SNMPv2c & SNMPv3 to the MIB browser
      The MIB browser application has been updated in a variety of 
      ways, adding support for SNMPv2c & SNMPv3, command-line MIB 
      loading and improved tree walking. The graphical interface has 
      also been totally reworked so it should now both look better 
      and provide more visual feedback. The browser is now also 
      available in the commercial version. [Bug #10732] & [Bug #10748]

    o Added support for multiple MIB modules in a single file
      The library now supports loading multiple MIB modules from a 
      single file, as required per the ASN.1 standard. It is still 
      strongly recommended to place each MIB module in its own file 
      however. Thanks to Frank Fock for reporting this. [Bug #10261]

    o Added new base class for SNMP macro types
      Added a new SnmpType class as a new base class for all the SNMP 
      macro types. So far the API it provides is rather minimal, but 
      it makes it easier to distinguish between ASN.1 types and SNMP 
      macro types. Thanks to Thomas Åhlén for suggesting this. [Bug 
      #10731]

    o Added new convenience methods to some classes
      The MibValueSymbol, ObjectIdentifierValue and SnmpAccess 
      classes in the Mibble API have been improved by the addition of 
      new methods. This will facilitate some searches or tests that 
      could previously be a bit cumbersome to write. [Bug #10634]

    o Added OID tree printing to MibblePrinter
      The MibblePrinter test application has been extended to allow 
      several input files and now also contains an option to print 
      the complete OID tree. Thanks to Thomas Åhlén for the original 
      idea. [Bug #10651]

    o Changed semantics of getDescription() method
      The getDescription() method has been changed to return a 
      cleaner version of the description text. All unneeded 
      indentation is removed and tab characters are now replaced with 
      spaces. The old semantics is available from the new 
      getUnformattedDescription() method. [Bug #10790]

    o Changed the location of the bundled MIB files
      The MIB files bundled with Mibble have been moved to a separate 
      JAR-file. This makes it easier to replace, update or remove 
      them without modifying other parts of Mibble. As a result of 
      this, the parser JAR-file has also been renamed. [Bug #10648]

    o Changed the bundled MIB file content
      The MIB files bundled with Mibble have been updated. Many new 
      IANA and IETF MIB files have been added and quite a few 
      existing MIBs have been modified to the corresponding latest 
      version. Thanks to Thomas Åhlén for pointing this out. [Bug 
      #10647]

    o Fixed issue with OIDs not being merged properly
      The OID tree was previously missing child components (symbols) 
      in some cases. This could occur when the same OID was defined 
      in two MIB files, something commonly used to avoid circular 
      imports. Now all the OIDs are properly merged to any depth, 
      making sure that none are ignored. Thanks to Thomas Åhlén for 
      finding this. [Bug #9962]

    o Fixed issue with MIBs being loaded as often as imported
      Previously it was possible that some base MIBs, that were used 
      in several places, got loaded several times by the MibLoader. 
      This didn't affect the correctness of the results, but wasted 
      time and memory. The MibLoader has now been corrected to avoid 
      this and therefore loads many MIB files faster. [Bug #10673]

    o Fixed OID searching in Mib.getSymbolByOid()
      The Mib.getSymbolByOid() method handled OIDs with table indices 
      erroneously due to a conceptual error. This has now been 
      corrected, but has unfortunately led to a slight API change, 
      removing the exactMatch parameter in the method call. [Bug 
      #10765]

    o Fixed documentation terminology and feature list
      Various pieces of documentation previously used the wrong 
      terminology for SMIv1 and SMIv2, which has now been corrected. 
      Also, the feature list has been updated to be a bit more 
      informative, although documentation will primarily be added to 
      the website from now on. Thanks to David T. Perkins and Frank 
      Fock for pointing out these shortcomings. [Bug #10170] & [Bug 
      #10262]


Version 2.4 (2004-05-27):
-------------------------

    o Relicensed to GNU GPL
      Most of the source code has been relicensed to GNU GPL, 
      removing the previous linking exception. As an alternative to 
      using the GNU GPL license, a non-exclusive commercial license 
      for Mibble can be purchased. A FAQ explaining the implications 
      of this is available on the Mibble web site.

    o Added simpler OID to symbol lookup
      A new method getSymbolByOid has been added to the Mib class to 
      simplify the lookup of symbols from OIDs. This method handles 
      table row number inside OIDs, that the getSymbolByValue method 
      couldn't handle. [Bug #9117]

    o Changed MIB loader to search inside files
      If the MibLoader fails to locate a MIB file based on its name, 
      it will now resort to read the first few lines from all files 
      in the search path until a matching MIB name is found. Opening 
      many files may be a potential performance bottleneck, so it is 
      still recommended best practice to name MIB files according to 
      the MIB module name. [Bug #8862]

    o Changed some symbol import errors to warnings
      Missing imports for symbols where the other symbols are 
      imported from the right MIB is no longer an error. A recovery 
      mechanism has been added searching for an undefined symbol in 
      all imported MIB files, issuing a warning instead of an error 
      if the symbol was found. [Bug #8863]

    o Changed to a simpler Ant build file
      The build.xml file for Apache Ant distributed with Mibble has 
      been simplified. It now also contains some documentation to 
      make it easier to use. [Bug #9097]


Version 2.3 (2004-03-10):
-------------------------

    o Added graphical MIB browser
      A graphical MIB browser has been added that allows for easy 
      viewing of a MIB contents, while also sending SNMP requests for 
      objects. Many thanks to Watsh Rajneesh and HP India for 
      contributing the code. Thanks also to Charles F. Schatz for 
      providing an alternate implementation. [Bug #4366]

    o Added shell scripts for launching utilities
      Shell scripts for Unix and Windows have been added for 
      launching the Mibble utility programs. The original scripts 
      were contributed by Watsh Rajneesh. [Bug #6961]

    o Added API for loading MIBs from more sources
      Added new addResourceDir() method to the MibLoader class, 
      allowing usage of the Java ClassLoader for locating and loading 
      MIB files. Also, new load(URL) and load(Reader) methods has 
      been added to simplify loading MIBs from other sources. The 
      MibblePrinter and MibbleValidator programs have also been 
      extended to also support URLs. Thanks to Yun Freund for 
      suggesting this. [Bug #7746]

    o Added support for unloading MIBs
      Added new unload() methods to the MibLoader class. It is now 
      possible to remove references to a single MIB without losing 
      the references to all MIBs. [Bug #7616]

    o Added method for retrieving all OID children
      Added new getAllChildren() method to the ObjectIdentifierValue 
      class. This makes it easier to retrieve all OID children at 
      once. [Bug #8046]

    o Modified the API for MibLoader.load() slightly
      The various load() methods in the MibLoader class have had 
      their API slightly modified. They are now declared to throw 
      IOException instead of the previous FileNotFoundException in 
      order to accomodate the new load(URL) and load(Reader) methods. 
      [Bug #7746]

    o Modified OID child ordering
      The ObjectIdentifierValue child ordering has been changed from 
      undefined to numerical order. The new implementation is 
      actually faster than the previous one, due to more clever 
      object comparison than previously used. [Bug #8090]

    o Fixed issue with not always finding loaded MIBs
      Previously when loading named MIBs, the search path was first 
      used to locate the MIB file. If the MIB file couldn't be found 
      in the path, an exception is thrown. The MibLoader has now been 
      extended to first check the loaded MIB names, thereby making it 
      possible to manually load MIB files not adhering to the MIB 
      file naming standard. Thanks to Zemian Deng for pointing this 
      out. [Bug #6959]

    o Fixed problem loading MIBs from current directory
      When loading MIB files from the current directory with the 
      MibblePrinter or MibbleValidator application, the directory 
      wasn't correctly added to the MibLoader path. This has now been 
      fixed, so MIB imports now works correctly even for file names 
      without a directory portion. [Bug #6528]


Version 2.2 (2003-11-03):
-------------------------

    o Added support for ASN1.1 type tags
      All primitive type now have default ASN.1 type tags and these 
      may also be overridden by tags in the MIB files. New methods 
      isPrimitive() and getTag() has been added to MibType. Thanks to 
      Sudhir Khurana for pointing this out. [Bug #5001] & [Bug #5003]

    o Added validation of sequence elements
      Sequence element names previously weren't validated against the 
      containing MIB. This has now been changed so that sequence 
      elements inside an OBJECT TYPE will be looked up in the MIB. If 
      no symbol with that name could be found, a new default symbol 
      is created. Thanks to Charles F. Schatz for finding and 
      reporting this. [Bug #5904]

    o Added access to referenced type and value symbols
      When resolving type and value references, the referenced symbol 
      name was previously lost and only the type or value information 
      was extracted. This has been fixed and new convenience methods 
      isReferenceTo() in the MibType and MibValue classes have been 
      added. Thanks to Charles F. Schatz for suggesting this. [Bug 
      #6112]

    o Added a number of missing accessor methods
      Several primitive types lacked accessor methods for retrieving 
      the constraints, defined values and similar. The MIB symbols 
      lacked a getMib() method. These accessor methods have now been 
      added. [Bug #5007]

    o Changed the logging API
      The logging API was simplified by removal of the log printing 
      classes. The same functionality is now present directly in the 
      MibLoaderLog class. A new method entries() allows direct 
      retrieval of all log entries from the log, providing a more 
      generic approach than the previous one. [Bug #6116]

    o Improved Javadoc API documentation
      The Javadoc API documentation has been generally improved in 
      various places. References to appropriate RFC documents have 
      been added along with initial package overviews. [Bug #6155]

    o Updated to version 1.4 of Grammatica
      The Grammatica library distributed with Mibble has been updated 
      to version 1.4 (from 1.3). The build file has been simplified 
      as a result of this. [Bug #5000]

    o Removed some previously public methods
      A number of internal methods were previously public although 
      there was no need for them to be. This has been fixed by making 
      them private or package protected. Code that called these 
      methods should be modified to use the correct public 
      counterparts.


Version 2.1 (2003-08-22):
-------------------------

    o Corrected MIB symbol value search
      Searching for MIB symbols by value never returned any results 
      in the previous version. Thanks to Nigel Mellor for finding and 
      fixing this. [Bug #4893]

    o Updated to version 1.3 of Grammatica
      The Grammatica library distributed with Mibble has been updated 
      to version 1.3 (from 1.2). Minor changes have been made to the 
      parser to accomodate this. [Bug #4903]


Version 2.0 (2003-07-19):
-------------------------

    o Complete rewrite with API and name change
      The project has been renamed to Mibble, and the library has 
      been completely rewritten from scratch. The API:s have also 
      been replaced to correct a number of serious flaws in the 
      previous design.

    o Added complete support for SNMPv2 and SNMPv3
      All types and constructs in SNMPv2 and SNMPv3 are now supported.

    o Added a real MIB import mechanism
      Symbol imports are now handled by reading and parsing the MIB 
      file. Standard IANA and IETF MIB files have been added to the 
      JAR library, in order to always have these imports available.

    o Added full access to all type information
      All of the type information can now be easily accessed through 
      methods in the type classes.

    o Added syntactical and semantical error recovery
      The MIB parser now attempts to recover from errors in the MIB 
      file. All encountered errors are available after the parsing is 
      complete. This change was made available by using Grammatica 
      instead of JavaCC to generate the parser.

    o Added warnings for wrong identifier case
      A warning is now issued if the first character in a type 
      identifier is lower-case, or if the first character in a value 
      identifier is upper-case.

    o Added HTML release notes
      The release notes are now generated to both text and HTML 
      format from an XML representation.

    o Changed parser generator to Grammatica
      The JavaCC parser generator has been replaced with Grammatica. 
      This was done as JavaCC isn't free software, and Grammatica was 
      chosen as it provides a simple grammar syntax, a decent parsing 
      and analysis framework, and very high quality error handling.

    o Removed the old symbol tree model
      The symbol tree model has been removed as it was not compatible 
      with the new API:s.


Version 1.2 (2003-03-27):
-------------------------

    o Relicensing to GPL + linking exception
      Relicensed all the source code to GPL plus a linking exception. 
      See the new LICENSE.txt file for details.

    o Removed JavaCC requirement from Ant build file
      Removed the strict dependency of JavaCC from Ant build file 
      (build.xml). The JavaCC parser generator will be replaced in a 
      future version of the library.


Version 1.1 (2003-01-06):
-------------------------

    o Updated MIB syntax to SNMPv2
      The MIB file parser can now handle several new macros, such as 
      MODULE-IDENTITY, OBJECT-IDENTITY, NOTIFICATION-TYPE, 
      OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE and the 
      improved OBJECT-TYPE macro (as of SNMPv2).

    o Updated MIB syntax with textual conventions
      The MIB file parser can now handle the TEXTUAL-CONVENTION macro 
      type.

    o API changes breaking backwards compability
      The MIB class was renamed to Mib and several new methods were 
      added to allow easy access to the information in the MIB file. 
      Some old methods were also renamed to better match the new 
      methods.

    o Improved code style
      All the source code has been reindented to use four (4) spaces, 
      and various minor code style improvements have been made in the 
      source tree.

    o Improved API documentation
      The API documentation has been somewhat improved by adding 
      package descriptions and improving the class comments.

    o Added MIB example code
      An example class has been added to demonstrate how the library 
      can be used.

    o Added initial test cases
      Some initial test cases have been added, making regression 
      testing easier. Much work is still missing on the test cases, 
      though.


Version 1.0 (2002-08-14):
-------------------------

    o First public release
      The first public release of this library.


_____________________________________________________________________

Mibble 2.10.1 (2017-02-20). See https://www.mibble.org/ for more
information.

Copyright (c) 2002-2017 Per Cederberg. Permission is granted to copy
this document verbatim in any medium, provided that this copyright
notice is left intact.
