Files
contract/doc/release_notes.qbk
Lorenzo Caminiti 5260e15e98 resolving todos
2017-03-09 21:28:26 -08:00

152 lines
6.6 KiB
Plaintext

[/ Copyright (C) 2008-2016 Lorenzo Caminiti]
[/ Distributed under the Boost Software License, Version 1.0 (see accompanying]
[/ file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).]
[/ See: http://www.boost.org/doc/libs/release/libs/contract/doc/html/index.html]
[section Release Notes]
This section contains notes on all releases of this library (from the latest to the oldest).
[section Release 0.5.0]
August 1, 2017
Notes:
TODO
Released TODO.
[endsect]
[section Release 0.4.1]
August 20, 2012
Notes:
# Using non-fix-spaced font in Full Table of Contents section.
# Added a couple of notes to the documentation.
# Changed `CONTRACT_MEMBER_BODY(class_type, function_name)` to `class_type::CONTRACT_MEMBER_BODY(function_name)` so the macro can also be used to declare derived classes avoiding using the library syntax even when the base class has contracts.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_4_1 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_4_1/doc/html/index.html documentation].
[endsect]
[section Release 0.4.0]
June 4, 2012
Notes:
# Simplified syntax by reducing extra parenthesis to the bare necessary minimum (using some of the preprocessor parsing techniques originally introduced by Boost.LocalFunction).
# Postcondition old values only copy the old-of expression (e.g., copy just vector size instead of entire vector).
This improves performance and introduces the `ConstantCopyConstructible` requirement just for the old value expression type (e.g., a vector might not be copyable while its size always is because it is an integral type).
Removed the `copyable` tag.
# Body defined outside the macros (so compiler-errors for definitions retain their usual meaning).
# Added `CONTRACT_CLASS` macro and removed the need to duplicate declaration elements (do not repeat function declaration, do not repeat class name in function declaration, etc).
# Using `_TPL` macros so to reduce compile-time (instead of internally making all templates contract functions so to use `typename` freely).
# Overloading no longer requires unique parameter names.
# Added C++11-like virtual specifiers.
# Added constant assertions plus constant-expressions for select assertion if-conditions and for loop variants.
# Added named and deduced parameters.
# Added concept checking.
# Removed the interface to use the library without the macro (programmers were required to write too much boiler-plate code for the non-macro interface to be actually usable, plus supporting both the macro and non-macro interfaces limited what the macros could do).
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_4_0 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_4_0/doc/html/index.html documentation].
[endsect]
[section Release 0.3.490]
March 7, 2010
Notes:
# Added support and examples for `volatile`, `auto`, `explicit`, `export`, `extern`, `friend`, `inline`, `struct`, and `throw` (for exception specifications).
# Documented that `union` cannot be contracted.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_3_490 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_3_490/doc/html/index.html documentation].
[endsect]
[section Release 0.3.469]
February 21, 2010
Notes:
# Removed use of `self`, `variable.now`, and `variable.old` in writing contracts.
Object `this` and variables are now accessed as usual in member functions.
`CONTRACT_OLDOF(variable)` is used to access old values in postconditions.
# Added `(precondition)`, `(postcondition)`, and `(body)` to specify contracts within the function signature sequence.
If no preconditions then `(precondition) ({...})` is simply omitted from the sequence (same for postconditions, body is mandatory instead).
For non-void functions, users can name the result argument with `(postcondition) (result-name) ({...})`.
# Changed contract class template to use same syntax as Boost.Function (i.e., `F` function type).
# Added support for free functions and static member functions.
# Added support for subcontracting with multiple inheritance.
# Added static class invariants which are always checked (also at constructors entry, destructor exit, and by static member functions).
# Added block invariants and Eiffel-like loop variants.
# Added handlers to customize action on contract failure (default to `std::terminate()`).
# Removed feature for automatic contract documentation using Doxygen (this is not compatible with added `(precondition)`, `(postcondition)`, and `(body)` because Doxygen preprocessor is not capable to handle Boost.Preprocessor sequences).
# Rewritten entire documentation (now using Boost.QuickBook instead of Doxygen).
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_3_469 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_3_469/doc/html/index.html documentation].
[endsect]
[section Release 0.2.190]
November 21, 2009
Notes:
# Compiled using both GCC (Linux and Cygwin) and MSVC (Windows XP).
# Required to use void to specify empty function argument list.
This is to comply with C++03 standard that does not allow to pass empty macro parameters so it does not support empty preprocessor sequences `()`.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_2_190 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_2_190/doc/html/index.html documentation].
[endsect]
[section Release 0.1.126]
June 17, 2009
Notes:
# Completed first documentation draft.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_126 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_126/doc/html/index.html documentation].
[endsect]
[section Release 0.1.55]
April 19, 2009
Notes:
# Reorganized files to cleanup root directory.
# Added installation program.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_55 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_55/doc/DBC_Documentation.txt documentation].
[endsect]
[section Release 0.1.50]
April 19, 2009
Notes:
# First public release.
Released [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_50 files] and [@http://contractpp.svn.sourceforge.net/viewvc/contractpp/releases/contractpp_0_1_50/README.txt documentation].
[endsect]
[endsect]