API Sanity Checker: Changelog
Description: Changelog for API Sanity Checker

# API Sanity
Checker: History

Version 1.98.7 (September 08, 2015)
Improvements

- Ability to run or build old test-suite on a new library version for compatibility analysis
- Improved style of the report

Bug Fixes

- Fixed tests for abstract methods
- Fixed self-tests
- Disabled tests for C3/C4 c-tors and D3/D4 d-tors
- Fixed test result handling
- Fixed sorting of selected interfaces
- Fixed handling of relative paths in the descriptor
- Added -all option
- Corrected usage of typedefs in tests
- Updated documentation

Version 1.98.6 (September 17, 2013)
Bug Fixes

- Support for ABI Compliance Checker 1.99.8.3
- Corrected generated test cases code and Makefiles
- Support for SUSE 11.2

Other

- Code cleaning

Version 1.98.3 (February 07, 2013)
New Options

- -target

Bug Fixes

- Corrected formatting of generated HTML-pages
- Corrected generated makefiles
- Corrected -vnum option
- Other fixes

Other

- Code cleaning

Version 1.98.2 (January 10, 2013)
Bug Fixes

- Fixed a problem with resolving of undefined symbols
- Moved linker options to LIBS variable in generated makefiles

Version 1.98 (December 14, 2012)
New Options

- -optimize-includes
- -no-inline
- -keep-internal
- -lang
- -cache

Improvements

- Added tests for inline functions
- Added test_include_preamble section of the XML-descriptor
- Added test_defines section of the XML-descriptor
- Improved design of test cases viewer
- Support for OpenBSD

Bug Fixes

- More accurate list of includes in test cases
- Corrected auto-generated sub-class declarations
- Corrected Makefile to install modules
- Other fixes

Other

- Code cleaning and refactoring

Version 1.12.11 (December 14, 2012)
Improvements

- Support for Mac OS X 10.8

Bug Fixes

- Corrected generating of tests for protected methods
- Disabled tests for WEAK symbols
- Corrected Makefile
- Other fixes

Other

- Code cleaning

Version 1.12.5 (June 03, 2011)
New Features

- Support for the latest GCC 4.6.0

Bug Fixes

- Corrected automatic include paths for headers
- Corrected template type names
- Corrected automatic preamble and finalization
- Corrected links in the problem summary
- Corrected help message and documentation
- Support for C-headers containing C++ keywords
- Corrected design of test viewer

Other

- Code cleaning

Version 1.12 (March 03, 2011)
New Features

- Ported to Mac OS X (10.5) and MS Windows (Xp, Vista, 7)
- Improved performance
- Using File::Temp for storing temporary files
- Implemented universal library descriptor: you can specify a directory with headers and shared objects or comma separated list of headers and shared objects instead of a standard XML-descriptor
- Extended help message
- Added -info option to show full information about the tool
- Added -strict-* options family
- Added -debug option for debugging
- Added "param_name" associating section to specialized types
- Added -vnum option to specify library version number outside the descriptor
- Added "defines" section of the XML-descriptor to add defines at the headers parsing stage
- Added documentation: Options.html, Descriptor.html

Bug Fixes

- Corrected automatic detection of include paths for headers (-I options to GCC)
- Option -without-shared-objects has been renamed to -headers-only
- Corrected parsing of header files, identifying of some previously missed classes
- Documentation has been moved to "doc/" subdirectory

Version 1.11.1 (March 03, 2011)
New Features

- Added documentation: README.html, CHANGES.html, SPECTYPE.html

Bug Fixes

- Corrected processing of typedef type names, fixed potential program hangup
- Corrected processing of special symbols in file paths specified by XML-descriptor ("+" and others)

Version 1.11 (July 22, 2010)
New Features

- 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
- Added -library-full-name option to display full library name in title of the report
- Improved performance on big libraries
- Improved unit tests code

Version 1.10 (June 25, 2010)
New Features

- Added -relpath option: replace {RELPATH} in the library descriptor to some relative path
- Added "add_include_paths" section of the library descriptor: this section contains a list of include paths that should be added to the list of automatically detected include paths
- Improved initializing sequences in the test scenarios

Bug Fixes

- Corrected techniques for auto-detection of header file dependencies (include paths)
- Corrected checking of complex namespaces changes (C++)
- Corrected reuse of previously created variables in tests

Version 1.9 (June 08, 2010)
New Features

- Added -params option for improving tests by adding parameter names separately from header files
- Added -header option for restricting a list of functions that should be tested by providing a header file name in which they are declared
- Added "skip_warnings" section to the library descriptor for skipping some test messages
- Separated stderr and stdout streams of the tool
- Improved tests generating rate
- Treating SEGV|FPE|BUS|ILL|PIPE|SYS|XCPU|XFSZ signals as errors in the report, other as warnings
- Improved test data generation

Bug Fixes

- Corrected complex array type names
- Corrected techniques for auto-detection of undefined symbols in the shared objects
- Corrected techniques for auto-detection of out parameters
- Corrected list of included headers
- Fixed tool hanging on some C++ headers (with many namespaces)
- Corrected order of preamble/finalization in the code
- Corrected initialization of agc/argv parameters
- Corrected initialization of big arrays
- Removed recursive calls from the tests code
- Corrected initialization of structure members
- Corrected initialization of struct/union types
- Corrected global_code/init_code/final_code/value parsing techniques
- Corrected tests cleaning

Version 1.8 (May 05, 2010)
New Features

- Ignoring hidden .svn, .git, .bzr, .hg, and CVS directories
- Added -dumpversion option for printing tool version and don't do anything else
- Added "out_params" section to the library descriptor
- Added "lib_version" section to the specialized type and to the collection of specialized types. It allows to specify library version(s) the specialized type or collection will be applied to
- Improved techniques for auto-detection of out parameters
- 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)
- Extended set of tested interfaces
- Improved techniques for auto-detection of undefined symbols in the specified shared objects
- Calling of library malloc function instead of standard malloc()
- Improved techniques for initializing intrinsic types
- Added sentinel to function call (if needed)
- Treating receiving of ABRT signals and exit codes as warnings
- Added prefixes to header file includes in the test cases

Bug Fixes

- Test cases for some previously missed C++ namespaces
- Removed hidden "void const** __vtt_parm" parameters from the signature of some constructors
- Corrected redefinition of pure virtual destructors
- Corrected processing of several environment specialized types
- Corrected selection of functions to call for initializing parameters of other functions
- Corrected code parsing techniques (for "value" section of the specialized type)
- Preventing hanged execution of the tool on big arrays (>1024 elements)
- Corrected processing of "final_code" of specialized type for return value
- Corrected list of header file includes in the test cases
- Corrected processing of command line options

Version 1.7 (March 26, 2010)
New Features

- The license was changed to dual GNU GPL and LGPL
- Added "pre_condition" and "post_condition" properties in the specialized types. Obsolete "constraint" property will be supported, but should be replaced by "post_condition" in the new code
- Added -splint-specs option for using splint annotations in the headers (@returned@, @out@, @notnull@, @requires@ and @ensures@)
- Using of throw() in the tests for C++ methods with the exceptions handling
- Changed meaning of the "skip_interfaces" section in the descriptor. Now it defines interfaces that should not be called in the tests
- Added "skip_headers" section in the descriptor

Bug Fixes

- Corrected processing of "libs_depend" section in the descriptor
- Directory with temporary files renamed from "temp" to hidden ".tmp_dir"
- Corrected processing of shared object dependencies
- Corrected processing of relative paths in the "headers", "include_paths", "libs" and "libs_depend" sections of the descriptor
- Added tests for some previously missed functions and conversion operators in C++
- Improved internal test suite
- Corrected usage of the out-parameters
- Corrected code alignment
- Corrected LIBS variable in the makefiles
- Corrected enumeration members selecting
- Corrected some error messages

Version 1.6 (March 03, 2010)
New Features

- Ported to FreeBSD and Haiku
- Added namespaces usage in the tests
- More accurate distinguishing pointer arguments *x and arrays x[]
- Added log for describing tool actions and occurred errors
- Improved techniques for auto-detection of header file dependencies (include paths)
- Added "libs" attribute to the specialized type for describing external libraries used by this type
- Added check for gcc/g++ version (>=3.0.0)
- Added -view-only option
- Added arguments to the tests
- More accurate detection of default gcc include paths
- Improved internal test suite
- Added error code on return

Bug Fixes

- Corrected signal handling
- Corrected header include lists
- Corrected makefiles
- Corrected usage of the out-parameters
- Corrected styles in the report design
- Corrected error messages
- Corrected code highlighting

Version 1.5 (February 15, 2010)
New Features

- Added "libs_depend" section of the descriptor for shared objects that should be provided to GCC for resolving undefined symbols (if NEEDED elf section in the library shared objects doesn't include it)
- Added techniques for auto-detection of undefined symbols in the specified shared objects

Bug Fixes

- Corrected processing of header files in the /usr/include directory
- Corrected header include lists
- Corrected makefiles
- Corrected template for the collection of specialized types
- Corrected processing of tab characters in the descriptor
- Corrected usage of the out-parameters and return values
- Corrected alignment and highlighting of specialized type code
- Corrected parameters provided to X virtual frame buffer (xvfb)

Version 1.4 (February 04, 2010)
New Features

- Automated detecting of header file dependencies. Now providing of "include_paths" section in the descriptor is not necessary
- Added template for the collection of specialized types (-specialized-type-template option)
- Optimized execution time

Bug Fixes

- Corrected makefiles
- Corrected descriptor template
- More appropriate usage of the out-parameters
- Corrected header include lists
- Corrected classes hierarchy in C

Version 1.3 (January 29, 2010)
New Features

- Added -t2c option for generating tests in the Template2Code format
- Improved overall tests structure. Removed unnecessary code. More appropriate usage of the out-parameters. Improved makefiles code
- Added -without-shared-objects option for running the tool without providing of shared objects. It is necessary if the library contains in-line functions only and has no shared objects
- Added "libgroup" section in the descriptor for dividing the library into groups
- Added -isolated option to restrict functions usage in the tests by the lists specified by the -functions-list option or by the group division in the descriptor
- Tool has been ported to the Cygwin
- Using of constants (defines) for initializing parameters
- Added printing of incorrect return/parameter values to the report (intrinsic types only)
- Added -clean option for cleaning the tests

Bug Fixes

- Corrected help message
- Corrected highlighting of the code defines in the reports
- Corrected type conversion algorithms
- Corrected variables reusing for initializing parameters
- Corrected variables naming in the code of specialized types
- Corrected reusing of specialized type attributes for the out-parameters
- Corrected statements (REQ, REQva) for checking requirements in the generated code
- Corrected selection of functions to call for initializing parameters
- Corrected headers include list at the beginning of tests

Version 1.2 (December 22, 2009)
New Features

- New sections "Warnings" and "Unexpected Output" in the report
- Random test generation mode improved (random selecting of enumeration members and values for intrinsic types)
- More accurate selecting of functions to call for initializing parameters of other functions
- Added names to unnamed parameters by analyzing type names
- Initialization of subclasses in C (if there are no other ways to initialize structure type)
- More accurate initializing of array types
- More accurate selecting of enumeration members
- More accurate type conversion algorithms
- Test data improved (added *.xml and *.dtd files)
- Values set for intrinsic types extended

Bug Fixes

- Corrected highlighting of variables in the report
- Corrected parsing of "interfaces" sub-section (in the "associating" section) in the collection of specialized types

Version 1.1 (December 04, 2009)
New Features

- Inserting elements in the lists (C++ only)
- More accurate selecting of functions to call for initializing parameters
- More information about detected errors in the report
- New help message
- Additional warnings

Bug Fixes

- Corrected initialization of typedefs to intrinsic types
- Corrected headers include list at the beginning of tests
- Corrected sorting of detected problems in the report

Version 1.0 (November 30, 2009)
Initial version of the tool.