ABI Compliance Checker: History
Description: Changelog for ABI Compliance Checker

# ABI Compliance
Checker: History

Version 2.3 (May 15, 2018)
Improvements

- Support for GCC 8
- Use -fdump-lang-class instead of -fdump-class-hierarchy
- Enable internal mangling of C++ funcs for all future GCC versions
- Added -keep-reserved option to report changes in reserved fields
- Fixed license to LGPL 2.1

Bug Fixes

- Fix detection of GCC 7 compiled with --with-gcc-major-version-only
- Redirect stderr of ‘objdump -f’ to null
- Escape braces in regex for compatibility with future Perl 5 versions
- Fixed internal mangling

Version 2.2 (August 30, 2017)
Improvements

- Improved support for Fortran

Bug Fixes

- Fixed analysis of inline functions
- Fixed analysis of calling conventions
- Fixed handling of C++ keywords in C code
- Fixed -lang option
- Fixed handling of errors when compressing ABI dumps
- Fixed style of the report

Version 2.1 (June 17, 2017)
Improvements

- Show added v-table symbols for public classes

Bug Fixes

- Fixed analysis of static methods
- Fixed analysis of typedefs
- Fixed analysis of zero-size structs
- Fixed logs
- Fixed analysis of static libraries on Windows
- Fixed search for files on Windows

Other

- Documented -skip-internal-types option in -help
- Add noindex meta tag to report if no changes detected

Version 2.0 (January 28, 2017)
Improvements

- Code refactoring
- Works faster on big libraries
- Added a module to create ABI dump from AST tree
- Added a module to create AST dump
- Added a module to parse GCC AST
- Added a module to find system files and automatically generate include paths
- Added a module to mangle C++ symbols
- Added a module to read ELF binaries
- Added a module to handle type attributes
- Added a module to handle XML descriptors
- Added a module to filter symbols
- Added a module to handle input data
- Added a module for logging
- Extended test suite
- Partial support for GCC 6
- Improved support for Solaris
- Compare versioned data types

New Options

- Added -filter option: a path to XML descriptor with skip_* rules to filter analyzed symbols in the report
- Added -keep-cxx option to check _ZS*, _ZNS* and _ZNKS* symbols

Bug Fixes

- Fixed automatic generation of include paths
- Fixed report for removed virtual symbols
- Fixed XML-format ABI dumps
- Fixed source-compatibility reports
- Fixed counter of checked data types
- Fixed lists of affected symbols
- Fixed analysis of standard C++ libraries
- Fixed analysis of added and removed virtual methods
- Fixed style of the report
- Fixed analysis of alias symbols
- Uncover changed typedefs properly
- Fixed Parameter_From_Register and Parameter_To_Register rules
- Fixed analysis of data types derived from template instances
- Enable -headers-only option automatically if header file is used as input library descriptor
- Fixed analysis of template instances
- Fixed analysis of static data
- Fixed error message if modules are not installed
- Fixed analysis of versioned symbols
- Fixed -ext option
- Fixed -use-dumps option
- Fixed -debug option
- Fixed console output

Other

- Removed support for too old ABI dumps

Version 1.99.25 (October 07, 2016)
New Options

- -test-abi-dumper: compare ABI dumps created by the ABI Dumper tool

Bug Fixes

- Do not list a symbol as removed in the source-compatibility report if it is presented in the dynsym table

Version 1.99.24 (October 04, 2016)
Improvements

- Support for Clang
- Improved a module to compare operating systems
- Improved support for C++ keywords in C code
- Improved support for Windows
- Improved support for MinGW

New Options

- -skip-typedef-uncover: do not report a problem if type is covered or uncovered by typedef (useful for broken debug info)
- -mingw-compatible: if input header files are compatible with the MinGW GCC compiler, then you can tell the tool about this and speedup the analysis
- -skip-unidentified: skip header files in 'headers' and 'include_preamble' sections of the XML descriptor that cannot be found
- -disable-constants-check: do not check for changes in constants
- -skip-added-constants: do not detect added constants
- -skip-removed-constants: do not detect removed constants

Bug Fixes

- Do not show GCC version in the source compatibility report
- Renamed CPU Type column to Arch in the report
- Support for ABI dumps v3.3
- The -cpp-compatible option is now enabled by default

Version 1.99.23 (August 15, 2016)
Improvements

- Improved generation of quick empty reports
- Improved SysCheck.pm module for analysis of operating systems
- Improved support for Windows 10

New Options

- -disable-quick-empty-report: do not generate quick empty report if input ABI dumps are equal

Bug Fixes

- Fixed lists of affected symbols in the XML-format report.

Version 1.99.22 (July 04, 2016)
Improvements

- New style of the report

New Options

- -old-style: generate old-style report

Bug Fixes

- Fixed handling of patterns in -skip-* options
- Fixed rounding of the BC rate in the report

Version 1.99.21 (May 26, 2016)
Improvements

- Up to 4 times faster on big libraries
- Show compatibility rate instead of verdict in the report
- Highlight the numbers of high/medium/low severity problems in the report
- Show percentage of affected methods in the problem description

New Options

- -count-symbols: count public symbols in the ABI dump

Bug Fixes

- Fixed quick comparison of equal ABI dumps

Version 1.99.20 (May 14, 2016)
Improvements

- Use regular expressions instead of wildcards in -skip-* options

Version 1.99.19 (April 18, 2016)
Improvements

- Support for GCC 5.1

Misc

- Separated LICENSE file
- Removed obsolete descriptors from the package
- Updated docs

Version 1.99.18 (April 03, 2016)
Bug Fixes

- Fixed comparison of qualifiers in parameter data types
- Fixed problem descriptions in the report
- Reduced size of the report
- Fixed console output

Version 1.99.17 (March 12, 2016)
Improvements

- Added a check for changes in parameters of function pointers

Bug Fixes

- Fixed comparison of virtual table entries
- Do not show time stamp in the report
- Fixed -skip-symbols option
- Fixed detection of the GCC version number

Version 1.99.16 (January 28, 2016)
Improvements

- Do not check private part of the ABI when comparing ABI dumps created by the ABI Dumper tool with use of the -public-headers option

New Options

- -check-private-abi: enable check of the private ABI

Bug Fixes

- Fixed counting of checked data types

Version 1.99.15 (December 11, 2015)
Bug Fixes

- Fixed hang on some template instances
- Fixed support for old ABI dumps (formatting of data types)
- Fixed false positives in the report if input ABI dumps contain __unknown__ types

Version 1.99.14 (November 01, 2015)
New Options

- -skip-types: set list of types that should not be checked

Bug Fixes

- Fixed formatting of symbol signatures
- Fixed checks of template types

Version 1.99.13 (October 18, 2015)
Improvements

- Check public symbols only if comparing public ABI dumps generated by the ABI dumper (with -public-headers option)
- Added more metadata to the report

New Options

- -skip-internal-types: do not check data types matched by the pattern

Bug Fixes

- Fixed Type_Became_Opaque, Parameter_Changed_Register, Parameter_From_Register and Parameter_To_Register rules
- Fixed method signatures in the report (C++)
- Fixed -headers-list option
- Option -skip-internal renamed to -skip-internal-symbols
- Fixed false positives if vtable-dumper generates incomplete data
- Fixed Makefile

Version 1.99.12 (September 20, 2015)
Bug Fixes

- Fixed title of the report
- Print warning if version number is not set in the ABI dump

Version 1.99.11 (September 12, 2015)
Bug Fixes

- Fixed Removed_Field_And_Layout rule
- Fixed -skip-symbols option

Version 1.99.10 (September 08, 2015)
Improvements

- Improved style of the report
- New documentation
- Added more test cases

New Options

- -types-list: specify a list of types that should be checked
- -gcc-options: specify additional compiler options

Bug Fixes

- Limited number of affected symbols shown for each BC problem in the report
- Fixed check of the DataType_Size_And_Stack rule
- Fixed checks of base classes
- Carefully substitute parameters in rules
- Allow to check for source-compatibility in the -cmp-systems mode by specifying both -bin and -src options
- Fixed sorting of problems listed in the report
- Limit number of checked types if -headers-list option is specified
- Fixed -headers-list and -skip-symbols options
- Fixed cross-platform issues
- Set LANG=C.UTF-8 for objdump
- Fixed list of headers in the report
- Fixed number of checked headers in the report summary. Removed support for old dumps < 1.18
- Renamed -lib-full option to -title
- Carefully detect architecture of input objects and word size
- Corrected detection of the GCC target architecture
- More accurate checking of ABI dump names
- Fixed regressions with SysCheck.pm module
- Removed obsolete code and options
- Fixed the objdump command line when the path contains spaces
- Simplified Makefile
- Do not install system descriptors to PREFIX/share
- Take -relpath option into account in the SysCheck.pm module
- Fixed CSS styles of the CmpSystems module

Version 1.99.9 (January 23, 2014)
New Options

- -skip-internal: do not check internal interfaces matched by the pattern

Bug Fixes

- Fixed duplicated entries in the XML report
- Reduced size of the XML report
- Fixed duplicated problems related to changed size of a global data
- Options -v1 and -v2 can now be used when comparing ABI dumps to change library versions shown in the report
- Fixed false positives with the size change of a template instance type
- Fixed false positives with the change of a parameter/field type name

Version 1.99.8.5 (October 03, 2013)
Improvements

- Optimized performance and memory usage (up to 90%) on input objects with a huge number of changes and deep data type trees (e.g. Linux kernel)
- Partial support for GCC 4.8.{0-1}, waiting for a fix for the bug 57850 in the next GCC versions
- Support for incomplete ABI dumps

New Options

- -affected-limit
- -cpp-incompatible

Bug Fixes

- Fixed identification of template constructors and destructors
- Do not show "this" first argument of methods in the report
- Corrected descriptions of affected symbols in the report
- Fixed false alarms on changed offset of parameters
- Do not hang on class A<N>:public A<N-1>
- Corrected identification of header files in the include_preamble
- Corrected comparison of function pointer types
- Corrected rule Global_Data_Size

Other

- Code refactoring

Version 1.99.7 (July 01, 2013)
Improvements

- Added missed fields of template instance types to the ABI dump
- Improved support for old ABI dumps
- Added Struct_Field_Size_Increased rule
- Support for vector types (GCC extension)
- Removed duplicates from the ABI dump
- Corrected visualization of v-table content in the report
- Corrected identification of target headers
- Corrected source-compatibility check
- Performance optimization (5%)

New Options

- -check - to check completeness of the ABI dump

Bug Fixes

- Fixed default arguments of methods (broken in 1.99.1 due to added "this" parameter)

Other

- Extended test suite

Version 1.99.1 (June 07, 2013)
Improvements

- Support for ABI Dumper 0.97
- Show added/removed inline virtual functions in the binary compatibility report
- Added "this" hidden parameter to non-static class methods in the ABI dump

Bug Fixes

- Fixed XmlDump module
- Fixed CallConv module

Other

- Support for old ABI dumps

Version 1.99 (May 24, 2013)
Improvements

- Support for ABI Dumper 0.95
- Added 14 binary-compatibility rules
- Added 10 source-compatibility rules
- Improved model of type alignment
- Changed version of ABI dump format to 3.0
- Added _vptr member to virtual classes
- Added constants defined by GCC to ABI dump
- Improved analysis of constants

New Options

- -skip-symbols

Bug Fixes

- Increased severity of Field_Became_Non_Mutable rule

Other

- Support for old ABI dumps
- Extended test suite (+11 test cases)
- Code cleaning

Version 1.98.8 (February 07, 2013)
Improvements

- Show added and removed constants (#defines) in the report
- Show changes in unnamed enumerations
- Avoid false alarm about renamed field if old name of this field is defined to new (SC)
- Recursive comparing of structured data types in *_Format rules
- Added Typedef_BaseType_Format rule to check format changes in the typedef base type

New Options

- -tolerant
- -tolerance

Bug Fixes

- Increased severity of Parameter_BaseType_And_Size BC rule (Low to Medium)
- Increased severity of Added_Field SC rule (Safe to Low)
- Corrected handling of the tool error codes in the test suite
- Corrected handling of relative paths in the descriptor options
- Skipping linker-related options in gcc_options option of the descriptor
- Corrected internal mangler for C++ functions
- Corrected conditions for enabling of C++ compatibility mode
- Corrected handling of C++ keywords in C-code
- Corrected -extended option
- Corrected Typedef_BaseType rule
- Corrected parsing of default function arguments
- Do not check presence of archive utilities if not used
- Other fixes

Other

- Extended test suite
- Code cleaning

Version 1.98.7 (December 14, 2012)
Improvements

- Extended extra info dumped by -extra-info option
- Extended additional info dumped by -extra-dump option
- Added specifiers for structs, unions and enums in the report and ABI dump
- Improved support for old ABI dumps

Bug Fixes

- Corrected -debug option
- Corrected creating of archives with ABI dumps
- Corrected parsing of includes in header files
- Corrected processing of undefined symbols
- Corrected -app option
- Corrected processing of default paths to system libraries
- Corrected Makefile
- Other fixes

Other

- Code cleaning and refactoring

Version 1.98.6 (December 04, 2012)
Improvements

- Extended -extra-info and -extra-dump options

Bug Fixes

- Corrected processing of input XML descriptor
- Corrected "Parameter_Default_Value_Removed" rule
- Other fixes

Other

- Code cleaning

Version 1.98.5 (November 30, 2012)
Improvements

- Support for Mac OS X 10.8
- Support for OpenBSD
- Support for old GCC versions <= 4.2
- Added "throw" and "weak" attributes of methods to ABI dump

New Options

- -extra-info
- -extra-dump
- -force

Bug Fixes

- Corrected order of user-defined include paths
- Corrected internal C++ mangler
- Removed false positives of the "Parameter_Type_Format" rule
- Other fixes

Other

- Extended test suite
- Code cleaning
- Docs cleaning

Version 1.98.4 (October 18, 2012)
Improvements

- Optimization of memory usage (5%-10%) and performance (5%-10%)
- Added "Used Reserved Field" rule of binary compatibility analysis
- Improved design of the operating system compatibility report
- Added meta descriptors for 334 libraries

Bug Fixes

- Fixed an issue with diagnostics of added virtual functions
- Corrected the list of functions affected by the compatibility problem
- Avoid false alarm about removed function if this function became macro (SC)
- Corrected parser of C header files
- Other fixes

Other

- Extended test suite
- Code cleaning

Version 1.98.3 (July 19, 2012)
Improvements

- Implemented a model of calling conventions on x86 and x86_64
- Improved diagnostics of changes in function parameters and return value (distribution on registers and stack)

Bug Fixes

- Corrected parser of C++ header files to detect non-member functions inside namespaces

Other

- Added requirement for Ctags (5.8 or newer)
- Code cleaning

Version 1.98.2 (June 26, 2012)
Improvements

- Support for reading ABI dumps in XML format
- Automatic enabling of c++0x support if needed to compile headers

Bug Fixes

- Corrected XML and Perl (default) formats of ABI dumps
- Improved support for old ABI dumps
- Improved -dump-system option

Other

- Improved documentation

Version 1.98.1 (June 18, 2012)
Bug Fixes

- Removed symbols marked as LOCAL in a shared library from lists of added/removed symbols in source-compatibility report
- Fixed a false positive with some removed extern "C" symbols in source-compatibility report
- Fixed a bug with removed debug/ directory when using -use-dumps and -debug options together
- Added support for "skip_including" section of target system XML descriptors (modules/Targets) used by -dump-system option
- Extended XML ABI dumps by size attribute of library symbols

Version 1.98.0 (June 14, 2012)
New Features

- Implemented XML format of ABI dumps

New Options

- -dump-format

Bug Fixes

- Improved support for old ABI dumps
- Other fixes

Version 1.97.8 (June 08, 2012)
Improvements

- Redesigned format of ABI dump
- Optimization of memory usage (5%-10%) and performance (5%-10%)
- Improved support for GCC 4.0-4.5
- Added "add_namespaces" section of the XML descriptor

New Options

- -open
- -sort

Bug Fixes

- Improved support for old ABI dumps
- Fixed a bug with auto-detection of include paths when comparing two XML descriptors
- Corrected output of -debug option
- Corrected -dump-system and -cmp-systems options
- Other fixes

Other

- Code cleaning

Version 1.97.5 (May 14, 2012)
Improvements

- Extended ABI dumps by source-level type declarations
- Improved support for old ABI dumps
- Optimization of memory usage (20%-30%) and performance (10%-20%)

Bug Fixes

- Corrected auto-detection of a set of target headers to check/dump in -headers-only mode
- Other fixes

Other

- Extended regression test suite
- Code cleaning

Version 1.97.4 (April 16, 2012)
New Features

- Added 16 new binary-compatibility rules
- Added 17 new source-compatibility rules

Bug Fixes

- Added some missed typedef types to function signatures

Other

- Improved support for old ABI dumps
- Support for GCC 4.7
- Extended regression test suite
- Code cleaning

Version 1.97.3 (April 03, 2012)
Completed Tasks

- Implement source-level compatibility checks
- Implement 2.0 architecture

New Features

- Added -browse=PROG option
- Added -xml alias option for --report-format=xml
- Added -binary option to generate binary-compatibility report only
- Added -source option to generate source-compatibility report only
- Added -bin-report-path option: path to binary-compatibility report
- Added -src-report-path option: path to source-compatibility report

Other Features

- Improved debug mode (-debug)
- Improved mark-up of the HTML report
- Improved mark-up of the HTML report
- Improved support for old ABI dumps

Bug Fixes

- Corrected ABI dumps

Version 1.96.8 (February 17, 2012)
Completed Tasks

- Implement XML format of compatibility report
- Testing on MeeGo 1.2 Harmattan Beta2

New Features

- Added hidden statistics line to compatibility report for operating systems
- Added -headers-list option
- Added -lang option
- Support for symbolic links in /usr/include and /usr/lib
- Added "skip_include_paths" section of the XML-descriptor
- Added "skip_including" section of the XML-descriptor
- Added -list-affected option to create plain list of incompatible symbols
- Added -quiet option to print all errors and warnings to the log file instead of stderr and stdout
- Added -stdout option to print results to stdout
- Added an option to check binary compatibility in the extended sense
- Improve diagnostic messages for added base classes with virtual functions
- Added -update option to installer
- Added a relative default directory to locate modules after installation
- Compatibility rate = (high+1/2*medium+1/4*low) / number of symbols

Bug Fixes

- Some symbols with extern "C" linkage are missed in -headers-only mode
- Changes in global data are not detected under Windows
- False negative: change global data to be "const"
- Removed middle enumeration value is reported as renamed
- False positive: change parameter type from "const int" to "int"
- Support for old ABI dump format of ACC 1.21.6
- The tool doesn't search for included headers in /usr/lib/qt4/include/
- False Negative: Header is incompatible with itself
- Check libstdc++ in -headers-only mode
- Restrict checked header files in the -headers-only mode
- Problem with mangled C++ functions using old ABI dump formats in -headers-only mode
- Incorrect size of method pointer in ABI dumps
- False negative: add/remove "register" modifier of the parameter
- Incorrect WORD size when using old ABI dump format
- Conflict of a static method with a function of the same name in the ABI dump
- Missed right bracket of "func-ptr" type in HTML report
- Incorrect report for overridden methods
- False negative: override a virtual that doesn't come from a primary base
- False negative: change a function parameter to be "restrict"
- False negative: change a field to be "volatile"
- False negative: change "const"-ness of a return value
- False negative: change "volatile" attribute of a method
- False positive: removed symbols with inline virtual prototype in the leaf class with default constructor

Version 1.94 (September 09, 2011)
Completed Tasks

- Separated regression tests into the module

New Features

- Added Makefile.pl installer

Version 1.93.8 (September 08, 2011)
Completed Tasks

- Separated rules DB
- Testing on Symbian SDK
- Testing on Windows SDK
- Support for OS3000

New Features

- SONAME change in the OS comparison table
- Added a compatibility percentage to the OS comparison table
- Added -debug option
- Added listing of symbols in OS comparison table
- Use zip format of dumps in Windows
- Added -dump-system descriptor.xml option
- Analysis of static libraries
- Added -sysinfo option
- Added -component option
- Added -nostdinc option
- Added "weakly"- and "almost"-compatible verdicts
- Added "skip_namespaces" section of the library XML-descriptor
- Search for modules/ directory in the system

Bug Fixes

- Missed typedefs in the ABI dump using GCC 4.4.1
- False negative: change enum member value from zero to non-zero
- False negative: interchange the positions of two fields in a structure
- False positive: add a field instead of padding fields
- Problems with "copied" classes
- Changes in "private" fields
- Illegal modulus zero at abi-compliance-checker.pl
- Incorrect order of include paths
- Change constness of a class method
- False negative: change "struct Type" to "union Type"
- Change parameter type from "..." to "int"
- Remove/add "const"-qualifier of a method
- False negative: renamed parameters

Other

- Improved debug mode

Version 1.23.5 (July 01, 2011)
Bug Fixes

- Corrected exit codes: 0 - compatible, 1 - incompatible, 2 - error, ...
- Corrected diagnostic messages for C++ functions with changed signature
- Fixed regression with C++ non-member functions
- Removed false positive with overridden private methods
- Corrected functionality for checking binary compatibility of operating systems
- Removed false positive for removed default version of a symbol
- Adapted -dump-system option for MeeGo 1.2 Harmattan
- Fixed hanging execution on "#include "../../file.h"
- Fixed incorrect automatic include paths

Version 1.23 (June 07, 2011)
New Features

- Added 42 compatibility checks (total: 83)
- Improved diagnostics of compatibility problems
- Opened an issue tracker
- Support for cross-compilers
- Ported to Mac OS X (10.5) and MS Windows (Xp, Vista, 7)
- Added a viewer of "real" v-table layouts for changed C++ classes
- Added functionality to check OS backward compatibility
- Supports for old-version dump formats (>=1.18)
- Separated versioning of dump formats
- Improved design of the compatibility report
- Improved performance
- Support for old GCC 3.4.4

New Options

- -cross-gcc: support for cross-compilers
- -sysroot: specify the alternative system root directory
- -dump-system, -cmp-systems: checking OS backward compatibility
- -use-dumps: check for compatibility using the intermediate dumping
- -show-retval: show symbol's return value type in the report
- -old-dumps: support for old-version dumps
- -test-dump: test for dumping functionality
- -report-path: change the location of output compatibility report
- -dump-path: change the location of output ABI dump
- -log1-path, -log2-path: change the location of output logs

Bug Fixes

- Reduced false positives
- Support for C-headers containing C++ keywords
- Corrected automatic include paths for headers

Version 1.21.12 (April 29, 2011)
Bug Fixes

- Corrected automatic detection of include paths for header files
- Removed false positives with overridden virtual functions
- Corrected processing of typedef type names, fixed potential program hangup
- Added some missed problems relating to the return type changes of a function
- Corrected processing of a translation unit dump generated by modern GCC versions
- Corrected identifying of inline functions (using the -fkeep-inline-functions GCC option)
- Corrected parser for C++: analysis of const global data and functions inside a namespace
- Corrected names and v-table checks for template types
- Corrected checks for changes in enumerations
- Corrected ABI dumping and sorting of dumps
- Corrected analysis of added/removed virtual functions
- Corrected help message and documentation
- Documentation has been moved to "doc/" subdirectory
- Using File::Temp for storing temporary files
- Support for latest GCC 4.6.0 and old GCC v3.x series
- Fixed infinite loop finding the path for "which" command in the system
- Corrected distinction of descriptor kinds (headers, libraries, directories and XML-descriptors)
- Corrected processing of "include_paths" section of the XML-descriptor

Version 1.21 (August 19, 2010)
New Features

- Added -check-implementation option: compare disassembled binary code to detect changes in the interface implementation
- Added -objects-only option: compare shared objects without header files
- Added -v1 and -v2 options: specify version number outside the descriptor
- Improved help message
- Improved performance of the tool
- Removed template instances and stdc++ interfaces from the report (C++)
- Added README.html and CHANGES.html to the package

Bug Fixes

- Corrected ABI compatibility report
- Corrected interface names and versions in the report
- Corrected number of problems in report summary
- Corrected ABI dump

Version 1.20 (August 30, 2010)
New Features

- Added "defines" section of the library descriptor: this section allows to add defines at the headers compiling stage

Bug Fixes

- Corrected reports about added/withdrawn members in the structure types and added/withdrawn parameters
- Corrected report about added/withdrawn virtual functions if -headers_only option specified
- Corrected processing of header paths containing special characters

Version 1.19 (July 22, 2010)
New Features

- Added -library_full_name option to display full library name in title of the report
- Added -relpath option to replace the {RELPATH} in the descriptor for ABI dumping
- Added "skip_libs" section of the library descriptor: this section contains a list of shared objects and/or directories with shared objects that should not be processed
- Improved performance on big libraries

Bug Fixes

- Removed duplicated problems from the report
- Corrected names of the template instances
- Corrected checking of reference type changes
- Corrected titles in the report
- Corrected size of some array types
- Corrected checking of added/withdrawn members in the structure types with reserved members
- Corrected checking of added/withdrawn parameters

Version 1.18 (June 25, 2010)
New Features

- Added -relpath1 and -relpath2 options to replace the {RELPATH} in the descriptors; old option -relpath was removed
- Added "add_include_paths" section of the library descriptor: this section contains a list of include paths that should be added to the automatically detected include paths

Bug Fixes

- Added some previously missed compatibility problems in the report
- Corrected techniques for auto-detection of header file dependencies (include paths)
- Removed problems relating to the changes in the temporary header files
- Corrected interface signatures in the report
- Corrected checking of added/withdrawn parameters
- Corrected changes in the virtual tables of the libraries with symbol versioning
- Corrected checking of complex namespaces changes (C++)
- Added namespaces information to the ABI dump

Version 1.17.2 (June 16, 2010)
Bug Fixes

- Fixed -separately option
- Corrected permissions of LICENSE file
- Corrected tool description

Version 1.17.1 (June 09, 2010)
New Features

- Added -relpath option for adding prefixes to the paths in the library descriptor

Bug Fixes

- Corrected checking of added/withdrawn parameters
- Corrected processing of mixed C/C++ header sets
- Corrected checking of parameter type changes

Version 1.17 (June 08, 2010)
New Features

- Visualizing of the serious changes (added/withdrawn parameters) in the interface signature
- Recursive analysis of constant changes
- Separated stderr and stdout streams of the tool
- Added "skip_constants" section of the library descriptor to skip checking of some constants
- Added -params option to add function parameter names to the report

Bug Fixes

- Corrected analysis of virtual table layout changes
- Corrected analysis of parameter type changes
- Corrected complex array type names
- Corrected typedef names
- Corrected analysis of structure layout changes
- Fixed tool hanging on some C++ headers (with many namespaces)
- Corrected analysis of Glibc headers
- Corrected analysis of library language changes (if added some C++ headers)
- Corrected descriptions of some compatibility problems
- Corrected analysis of added/withdrawn parameters in C headers

Version 1.16 (May 05, 2010)
New Features

- Added -strict option for treating all compatibility warnings as problems
- Added -dumpversion option for printing tool version and don't do anything else
- Ignoring hidden .svn, .git, .bzr, .hg, and CVS directories
- Improved header files sorting for protecting from compilation errors on the intermediate phase of temporary header file compilation
- Improved techniques for auto-detection of header file dependencies (include paths)
- Ignoring problems related to changes of constants (defines) describing library version (*_VERSION_*, *_COPYRIGHT_* and other)
- New internal test cases

Bug Fixes

- Checking of some previously missed C++ namespaces
- Removed hidden "void const** __vtt_parm" parameters from signatures of some constructors
- Corrected dumping of C++ classes ABI
- Corrected checking of pure virtual destructors
- Removed unnecessary built-in constants from the ABI dump

Version 1.15 (March 26, 2010)
New Features

- The license was changed to dual GNU GPL and LGPL
- Added "skip_headers" section of the library descriptor

Bug Fixes

- Corrected processing of "include_paths" section of the library descriptor
- Corrected processing of relative paths in the "headers" and "include_paths" sections of the descriptor
- Directory with temporary files renamed from "temp" to hidden ".tmp_dir"
- Corrected processing of shared object dependencies
- Corrected processing of some previously missed functions and conversion operators in C++
- Corrected internal test suite
- Corrected some error messages

Version 1.14 (March 03, 2010)
New Features

- Added techniques to auto-detect dependencies of a header file (include paths); providing of "include_paths" section of the descriptor is not necessary for now
- Ported to FreeBSD and Haiku
- Added check for gcc/g++ version (>=3.0.0)
- Added sorting of interface problems by namespace in the report (C++)
- Improved internal test suite
- Added log for describing tool actions and occurred errors
- Added exit error code (high/medium risk for ABI break)

Bug Fixes

- Corrected ABI dumping
- Corrected styles of the report

Version 1.13 (February 16, 2010)
New Features

- Added -version option

Bug Fixes

- Corrected processing of tab characters in the descriptor
- Corrected help message
- Corrected descriptor template structure
- Corrected error and warning messages
- Corrected processing of shared object dependencies

Version 1.12 (December 04, 2009)
New Features

- New help message
- Highlighting of [in-charge], [not-in-charge] constructors and destructors in the report was improved
- New option -time for enabling time measurements
- New internal test cases

Bug Fixes

- Corrected classification of compatibility problems in the report
- Reduced priority of problems related to changes in a method's object
- Corrected complex template type names

Version 1.11 (November 10, 2009)
New Features

- Added -app option to check portability of applications to the new library version
- Memory usage decreased twice

Bug Fixes

- Corrected checking of added middle structure members
- Corrected names of template types (with intrinsic, bool and string parameters)
- Corrected highlighting of function signatures in the report

Version 1.10 (November 02, 2009)
New Features

- Checking added/dropped function parameters (C language only)
- Improved design of the report
- New internal test cases

Bug Fixes

- Incorrect checking of redefined virtual functions and differences in parameter types
- More careful checking of withdrawn interfaces using shared library dependencies

Version 1.9 (October 12, 2009)
Improvements

- Improved design of ABI compliance report
- Improved algorithms of checking parameter/field type change
- New internal test cases

Bug Fixes

- Fixed incorrect names of typedefs and function pointer types
- Checking of some previously missed C++ functions
- Removed some false positives from the report (for anon-types)

Version 1.8 (September 29, 2009)
New Features

- Added ability to specify a file with a list of interfaces that should be checked

Bug Fixes

- Size of ABI info dumps have been reduced through removing of unnecessary information
- Incorrect names of template instances and function pointer types
- Incorrect positions of function parameters in the "Interface Problems" section of the report
- Removed some false positives from the report
- Incorrect handling of special symbols in the paths to header files and shared objects

Version 1.7 (September 11, 2009)
New Features

- Checking of incorrect symbols versioning
- Checking the values of defines (constants)
- Ability to check header files without shared objects; It is easy to run, but may provide a low quality report with a lot of false positives and without detecting of added/withdrawn interfaces
- Number of checked interfaces and data types in the report
- Added tests for checking new features

Bug Fixes

- Incorrect processing of duplicated headers in the input set (headers with the same name but different paths)
- Incorrect header files include order
- Sorting in the ABI dumps
- Incorrect processing of redefined virtual methods
- Incorrect processing of anon types
- Absence of some necessary information about C++ functions in the ABI dumps

Version 1.6 (August 31, 2009)
Bug Fixes

- Corrected processing of relative paths in the library descriptor
- Display machine hardware name instead of processor type in the report
- Fixed grammar/spelling errors
- Renamed "internal_interfaces" section of the library descriptor to "skip_interfaces"
- Cosmetic changes in the code

Version 1.5 (August 25, 2009)
Bug Fixes

- Absent information about opaque types and internal interfaces has been added to the ABI dump
- Fixed style of the report
- Fixed grammar/spelling
- Renamed "internal_functions" section of the library descriptor to "internal_interfaces"
- Renamed outptu ABI dump to "*.abi.tar.gz" (previously it was "*.info.tar.gz")
- Corrected interface names in the report (for -separately option)

Version 1.4 (August 18, 2009)
Improvements

- Added ability to check ABI compliance of library versions located on different machines
- Header files checking mode by default has been changed: checking all header files together instead of separate checking

Bug Fixes

- Incorrect description for affected interfaces
- Incorrect virtual table checking

Version 1.3 (August 14, 2009)
Bug Fixes

- Incorrect number of binary compatibility problems in the report summary
- Incorrect design of problem descriptions in the report

Version 1.1 (August 06, 2009)
Improvements

- Design of the report has been greatly improved

Version 1.0 (July 31, 2009)
Initial version of the tool.