Version 1.53.0
February 4th, 2013 18:29 GMT
Documentation
New Libraries
- Atomic:
-
C++11-style atomic<>,
from Helge Bahmann, maintained by Tim Blechmann.
- Coroutine:
-
library,
from Oliver Kowalke.
- Lockfree:
-
data structures,
from Tim Blechmann.
- Multiprecision:
-
Extended
precision arithmetic types for floating point, integer and rational arithmetic
from John Maddock and Christopher Kormanyos.
- Odeint:
-
Solving ordinary
differential equations, from Karsten Ahnert and Mario Mulansky.
News
This release contains a fix for ticket #7743, in Boost.Locale. For more
details, see the security
notice.
Updated Libraries
-
Algorithm:
-
Fixed non-ASCII char in comment (#7781).
-
Updated the Knuth-Morris-Pratt docs (#7656).
-
Array:
-
Added support for boost::get and std::get (#7652)
-
Asio:
-
Fixed some 64-to-32-bit conversion warnings (#7459).
-
Fixed some small errors in documentation and comments (#7761).
-
Fixed an error in the example embedded in
basic_socket::get_option's
documentation (#7562).
-
Changed to use
long
rather than int for
SSL_CTX options, to match OpenSSL (#7209).
-
Changed to use
_snwprintf
to address a compile error due to the changed swprintf
signature in recent versions of MinGW (#7373).
-
Fixed a deadlock that can occur on Windows when shutting down a pool
of
io_service threads
due to running out of work (#7552).
-
Enabled the
noexcept
qualifier for error categories (#7797).
-
Changed UNIX domain socket example to treat errors from
accept as non-fatal (#7488).
-
Added a small block recycling optimisation to improve default memory
allocation behaviour.
-
Bimap:
-
Refactor map_view_iterator to improve error messages.
-
Fixed replace_(left/right/key/data) bug when using relations with
info.
-
Fixed vector_of and list_of views
assign(size_type,value_type) bug.
-
Fixed vector_of views
operator[](size_type) and at(size_type) functions return value.
-
Chrono:
-
Deprecated:
-
The chrono i/o version included in Boost.Chrono 1.2.x has been
completly refactored in version 2.0.0
-
chrono I/O: The manipulators __duration_short, __duration_long
are depreceated. You should use the parameterized form __duration_fmt
or the renamed manipulators __duration_symbol and __duration_prefix
instead.
-
chrono I/O: The __duration_punct<> facet is depreceated.
You should use the __get_duration_style free function to get
the informations and use the __duration_units facet for localization
purposes.
-
When BOOST_CHRONO_VERSION==2 the preceding deprecated functions
are not available.
-
Fixes:
-
#7546
time_point<system_clock> output version 2 fails to compile
-
#7547
time_point<system_clock> input version 2 fails to compile
-
#7868
chrono_io parses time incorrectly (1.53 and 1.52)
-
Container:
-
Fixed bug #7650.
-
Improved
vector's
insertion performance.
-
Changed again experimental multiallocation interface for better performance
(still experimental).
-
Added no exception support for those willing to disable exceptions
in their compilers.
-
Fixed GCC -Wshadow warnings.
-
Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
-
Context:
-
Support for iOS on ARM and MacOS X on x86 (32bit) added.
-
Support for SEH Overwrite Protection on Win32.
-
Geometry:
-
Bugfixes
-
avoid generating output polygons with interior rings below
minimum size (e.g. one or two points)
-
geometry::disjoint for degenerate segments
(patched by Karsten Ahnert)
-
problem in
geometry::difference
for missing handling tangency, reported by H2
-
fixed
geometry::for_each
for use with Lambda's
-
fixed
geometry::comparable_distance
point-linestring (and -range, -polygon)
-
Additional functionality
-
combinations for
geometry::disjoint:
point/ring, point/polygon, point/multi_polygon
-
combinations for
geometry::intersects:
point/ring, point/polygon, point/multi_polygon
-
Internal changes
-
updates in specializations/not_implemented for various algorithms
(as in an earlier version, these changes are still going on;
they take care for simplified structs, better error reporting,
and automatized documentation)
-
fixes in unit tests
-
GIL:
-
Fixed self-assignment warnings (#4919).
-
Graph:
-
Fixed the following bugs from Trac: #3468, #4386, #5269,
#7428, #7457, #7467, #7600, #7648, #7684,
#7728, #7741, #7766, #7771, #7773, #7780,
#7787, #7801
plus other bugs not in Trac.
-
Added support for reading from GraphML files containing multiple
graphs.
-
Added versions of A* search specifically for trees, removing the
need for a color map when it is acceptable to visit the same vertex
multiple times.
-
Added VF2 subgraph isomorphism algorithm (contributed by Flavio De
Lorenzi).
-
Hash:
-
Add support for
boost::int128_type
and boost::uint128_type where available.
-
On platforms that are known to have standard floating point functions,
don't use the automatic detection (#7221, #7470).
-
Interprocess:
-
Fixed GCC -Wshadow warnings.
-
Experimental multiple allocation interface improved and changed again.
Still unstable.
-
Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
-
ABI breaking: changed node pool allocators internals
for improved efficiency.
-
Fixed bug #7795.
-
Intrusive:
-
Fixed bugs #7174,
#7529,
#7815.
-
Fixed GCC -Wshadow warnings.
-
Added missing
explicit
keyword in several intrusive container constructors.
-
Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
-
Small documentation fixes.
-
Lexical cast:
-
New character type detection algorithm for user defined types #6786.
-
Documentation updates (#7582, #7831).
-
Fixed bugs with std::array #7799.
-
Fixed compilation with -ftrapv and numeric to numeric conversions
#7814.
-
Locale:
-
Security related bug fix, some invalid UTF-8 sequences where accepted
as valid #7743
-
Invalid Windows codepage names used #7386
-
Fixed missing documentation, caused by a error in Doxygen formatting
#7734
-
Fixed missing std:: in some places #7701
-
Spelling, grammar, typos fixes #7368, #7762
-
Math:
-
Fixed issues #7325,
#7415,
#7416,
#7183,
#7649,
#7694,
#4445
and #7492.
-
Fixed mistake in calculating pooled standard deviation in two-sample
students t example #7402.
-
Improve complex acos/asin/atan, see #7290,
#7291.
-
Improve accuracy in some corner cases of cyl_bessel_j and gamma_p/gamma_q
thanks to suggestions from Rocco Romeo.
-
Improve accuracy in Bessel J and Y with integer orders thanks to
suggestions from Rocco Romeo.
-
MinMax:
-
Fixed a misuse of the comma operator (#7752).
-
Updated the docs to fix broken link (#7751).
-
Move:
-
Better header segregation (bug #6524).
-
Small documentation fixes
-
Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
-
Fixed #7830,
#7832.
-
Polygon:
-
Fixes:
-
#6366 Bug in
boost::polygon::contains
for polygon_90 type.
-
#7678 multiple definitions of
bool
boost::polygon::belongs(...)
by multiple #include.
-
Internal changes:
-
refactored point/segment/interval data/concept/traits.
-
added unit tests for point and interval data/concept/traits.
-
simplified
transform.hpp
to operate only in 2D.
-
removed point_3d data/concept/traits.
-
Random:
-
Now compiles with exceptions disabled (#5399).
-
Range:
-
Bug fixes:
-
#5603 the "range/any_range.hpp" header is not
self-sufficient
-
#6103 boost::range_detail vs. boost::range::range_detail
compiler error
-
Documentation fixes:
-
Ratio:
-
Fixes:
-
#7616
br_mul::nan - warning C4293: '<<' : shift count negative
or too big, undefined behavior`.
-
Regex:
Fixed Issues: #7744,
#7644.
-
Smart Pointers:
-
New Features:
-
Glen Fernandes provided implementations of make_shared and
allocate_shared for arrays. They achieve a single allocation
for an array that can be initialized with constructor arguments
or initializer lists as well as overloads for default initialization
and no value initialization. See the 'make_shared
and allocate_shared for arrays' page for more information.
-
shared_ptr
can now be used to hold a pointer to a dynamically allocated
array. This is accomplished by using an array type (T[]
or T[N])
as the template parameter.
-
Smart pointers now use
explicit
operator bool
on C++11 compilers. This can break code that passes a smart
pointer to a function taking a bool,
or that returns a smart pointer from a function with a bool return type. Please use
p !=
0 or !!p in such cases.
-
StringAlgo:
-
Fixed a bug where it wouldn't find overlapping patterns (#7784).
-
Disambiguated some calls to insert (#7346).
-
Thread:
-
Deprecated features:
-
Deprecated features since boost 1.53 will be available only
until boost 1.58.
-
C++11 compliance: packaged_task<R> is deprecated, use
instead packaged_task<R()>.
-
#7537
deprecate Mutex::scoped_lock and scoped_try_lock and boost::condition
-
New Features:
-
#6270
C++11 compliance: Add thread constructor from movable callable
and movable arguments
-
#7279
C++11 compliance: Add noexcept in system related functions
-
#7280
C++11 compliance: Add promise::...at_thread_exit functions
-
#7281
C++11 compliance: Add ArgTypes to packaged_task template.
-
#7282
C++11 compliance: Add packaged_task::make_ready_at_thread_exit
function
-
#7412
C++11 compliance: Add async from movable callable and movable
arguments
-
#7413
C++11 compliance: Add async when the launch policy is deferred.
-
#7414
C++11 compliance: future::get post-condition should be valid()==false.
-
#7422
Provide a condition variable with zero-overhead performance
penality.
-
#7444
Async: Add make_future/make_shared_future.
-
#7540
Threads: Add a helper class that join a thread on destruction.
-
#7541
Threads: Add a thread wrapper class that joins on destruction.
-
#7575
C++11 compliance: A future created by async should "join"
in the destructor.
-
#7587
Synchro: Add strict_lock and nested_strict_lock.
-
#7588
Synchro: Split the locks.hpp in several files to limit dependencies.
-
#7590
Synchro: Add lockable concept checkers based on Boost.ConceptCheck.
-
#7591
Add lockable traits that can be used with enable_if.
-
#7592
Synchro: Add a null_mutex that is a no-op and that is a model
of UpgardeLockable.
-
#7593
Synchro: Add a externally_locked class.
-
#7594
Threads: Allow to disable thread interruptions.
-
Fixed Bugs:
-
#7464
BOOST_TEST(n_alive == 1); fails due to race condition in a
regression test tool.
-
#7657
Serious performance and memory consumption hit if condition_variable
methods condition notify_one or notify_all is used repeatedly.
-
#7665
this_thread::sleep_for no longer uses steady_clock in thread.
-
#7668
thread_group::join_all() should check whether its threads are
joinable.
-
#7669
thread_group::join_all() should catch resource_deadlock_would_occur.
-
#7671
Error including boost/thread.hpp header on iOS.
-
#7672
lockable_traits.hpp syntax error: "defined" token
misspelled.
-
#7798
boost::future set_wait_callback thread safety issues.
-
#7808
Incorrect description of effects for this_thread::sleep_for
and this_thread::sleep_until.
-
#7812
Returns: cv_status::no_timeout if the call is returning because
the time period specified by rel_time has elapsed, cv_status::timeout
otherwise.
-
#7874
compile warning: thread.hpp:342: warning: type attributes are
honored only at type definition.
-
#7875
BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED should not
be enabled by default.
-
#7882
wrong exception text from condition_variable::wait(unique_lock<mutex>&).
-
#7890
thread::do_try_join_until() is missing a return type.
-
Unordered:
-
Remove support for the old pre-standard variadic pair constructors,
and equality implementation. Both have been deprecated since Boost
1.48.
-
More internal implementation changes, including a much simpler implementation
of
erase, and removed
more deprecated config macros.
-
Utility:
-
Added string_ref,
a non-owning reference to a contiguous sequence of characters.
-
Variant:
-
Added rvalue constructors and rvalue assignment operators (for C++11
compatible compilers only). Library now can be used with move-only
types (#7620, #7718).
-
Wave:
-
xpressive:
-
Accomodate recent smart pointer changes (#7809).
Updated Tools
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
GCC: 4.1.2, 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.2
-
GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.2
-
Intel: 11.1, 12.1
-
LLVM Clang: 2.8
-
LLVM Clang, with libc++: 3.2
-
OS X:
-
GCC: 4.4.7
-
GCC, C++11 mode: 4.4.4
-
Intel: 11.1, 12.0
-
Windows:
-
FreeBSD:
-
GCC: 4.2.1, 32 and 64 bit
Boost's additional test compilers include:
-
Linux:
-
Cray: 4.6.1
-
Clang: from subversion
-
LLVM Clang, with libc++: 3.2
-
GCC: 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
-
GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.1, 4.7.2
-
pgCC: 11.9
-
Intel: 10.1, 11.1, 12.1
-
Intel, C++11 mode: 13.0.1
-
Visual Age:
-
OS X:
-
Clang: from subversion
-
Clang, C++11 mode: from subversion
-
Intel: 11.1, 12.0
-
GCC: 4.4.7
-
GCC, C++11 mode: 4.4.4
-
Windows:
-
Visual C++: 10.0, 11.0
-
Visual C++ with STLport: 9.0
-
Visual C++, Windows Mobile 5, with STLport: 9.0
-
AIX:
-
IBM XL C/C++ Enterprise Edition: V12.1.0.1
Acknowledgements
Beman Dawes, Eric Niebler,
Rene Rivera, Daniel James,
Vladimir Prus and Marshall Clow managed this release.