# Mibble Version Information

Mibble version 2.10.1 (2017-02-20)

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

- Added AES encryption to MibbleBrowser
  The MibbleBrowser application now supports AES encryption of messages. Thanks to Richard Thompson for suggesting this. Issue #24
- 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.
- 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):

- 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
- 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).
- 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
- 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
- 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
- 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`.
- 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).
- 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
- 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
- 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
- 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
- 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
- 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):

- 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.
- 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):

- 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):

- 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
- 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
- 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):

- 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):

- 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
- 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).
- 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.
- 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.
- 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
- 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
- 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.
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- Added easy lookup of referenced textual conventions
  The `SnmpTextualConvention.findReference()` method has been added to enable easy lookup of referenced textual conventions. Bug #16643
- 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
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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):

- 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.
- 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
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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):

- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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):

- 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
- 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):

- 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.
- Added complete support for SNMPv2 and SNMPv3
  All types and constructs in SNMPv2 and SNMPv3 are now supported.
- 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.
- Added full access to all type information
  All of the type information can now be easily accessed through methods in the type classes.
- 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.
- 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.
- Added HTML release notes
  The release notes are now generated to both text and HTML format from an XML representation.
- 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.
- 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):

- Relicensing to GPL + linking exception
  Relicensed all the source code to GPL plus a linking exception. See the new LICENSE.txt file for details.
- 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):

- 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).
- Updated MIB syntax with textual conventions
  The MIB file parser can now handle the TEXTUAL-CONVENTION macro type.
- 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.
- 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.
- Improved API documentation
  The API documentation has been somewhat improved by adding package descriptions and improving the class comments.
- Added MIB example code
  An example class has been added to demonstrate how the library can be used.
- 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):

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

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

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