This is an older version of Boost and was released in 2013.
The current version is 1.88.0.
Version 1.52.0
November 5th, 2012 16:05 GMT
Documentation
Patches
-
Locale
Patch - Fixes a bug which causes
boost::locale::utf::utf_traits
to accept some invalid UTF-8 sequences, which is a possible security flaw.
Updated Libraries
-
Accumulators:
-
Fix long-standing dependency tracking bug, #7409
-
Config:
-
Define
BOOST_NO_SFINAE_EXPR
for gcc-4.4, since the support was found to be too buggy.
-
Chrono:
-
New Features:
-
#5980 Enhance chrono I/O with H. Hinnant proposal proposal
which has the advantage to provide I/O for system clocks using
the Gregorian Calendar.
-
#5981 Add i/o state savers for duration and time_point formatting
state.
-
#7059 Add low level i/o facilities.
-
Deprecated features:
-
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 deprecated.
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:
-
#7381 C++11 compliance: unresolved symbol when assigning
a constexpr duration to a non-const local variable.
-
#7479
Compile fails with compilers supporting constexpr fails if
the standard library doesn't provides the constexpr interface
-
Would not fix:
-
#6871 chrono_io.hpp:
operator<<(ostream& os, ...)
modifies the state of os. The neww io interface provided in
version 2 solves this issue. You should move to the new version.
-
Container:
-
Improved
stable_vector
's
template code bloat and type safety.
-
Changed typedefs and reordered functions of sequence containers to
improve doxygen documentation.
-
Fixed bugs #6615,
#7139,
#7215,
#7232,
#7269,
#7439.
-
Implemented LWG Issue #149 (range insertion now returns an iterator)
& cleaned up insertion code in most containers
-
Corrected aliasing errors.
-
DateTime:
-
Document
BOOST_DATE_TIME_NO_LIB
(#6077).
-
Fix
nth_as_str
(#7022).
-
Fix some warnings (#7234).
-
Foreach:
-
Fix alignment warning on gcc.
-
Function:
-
Move constructors and move assignment operators added (only for compilers
with C++11 rvalue references support) #7330.
-
Graph:
-
Fixed bugs #6950, #7226,#7308, #7327, #7338,
#7341, #7378, #7380, #7398, and #7428, plus others
not in Trac.
-
Hash:
-
Restore
enum
support,
which was accidentally removed in the last version (#7437).
-
New floating point hasher - will hash the binary representation on
more platforms, which should be faster.
-
Interprocess:
-
Added
shrink_by
and
advise
functions
in mapped_region
.
-
ABI breaking: Reimplemented
message_queue
with a circular buffer index (the old behavior used an ordered array,
leading to excessive copies). This should greatly increase performance
but breaks ABI. Old behaviour/ABI can be used undefining macro BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX
in boost/interprocess/detail/workaround.hpp
-
Improved
message_queue
insertion time avoiding priority search for common cases (both array
and circular buffer configurations).
-
Implemented
interproces_sharable_mutex
and interproces_condition_any
.
-
Improved
offset_ptr
performance.
-
Added integer overflow checks.
-
Iterator:
-
Fixed:
-
#5825 constructing function_input_iterator without consuming
an item
-
#7194 Error in documentation of make_function_input_iterator
-
Breaking changes:
-
Due to the fix for #5825, a function_input_iterator will
no longer make unnecessary invokations to the wrapped nullary
function. For example, constructing an end iterator will now
not trigger an invokation; and dereferencing-and-incrementing
an iterator N times will trigger N invokations, not N+1 as
before. User code that relied on the old behavior will need
to be adjusted.
-
Lexical cast:
-
Restored compilation on MSVC-2003 (was broken in 1.51.0) #7255.
-
Added
lexical_cast(const CharType*
chars,
std::size_t count)
function overload. #6663.
-
Fixed bug #7228.
-
Math:
-
Added Airy functions and Jacobi Elliptic functions.
-
In several distributions (particulary the Students T) corrected moments
for small degrees of freedom #7177
(reported by Thomas Mang).
-
Corrected failure to detect bad parameters in many distributions
#6934
(reported by Florian Schoppmann) by adding a function
check_out_of_range
to test many
possible bad parameters. This test revealed several distributions
where the checks for bad parameters were ineffective, and these have
been rectified.
-
Fixed issue in Hankel functions that causes incorrect values to be
returned for x < 0 and ν
odd, see #7135.
-
In non-central T permitted infinite degrees of freedom #7259
implemented using the normal distribution (requested by Thomas Mang).
Also much enhanced accuracy for large degrees of freedom and/or large
non-centrality parameters by switching to use the Students t distribution
(or Normal distribution for infinite degrees of freedom) centered
at delta, when delta / (4 * v) < epsilon for the floating-point
type in use. See #7259.
It was also found that the incomplete beta was suffering from serious
cancellation errors when degrees of freedom was very large. (That
has now been fixed in our code, but any code based on Didonato and
Morris's original papers (probably every implementation out there
actually) will have the same issue).
-
Fixed minor issues #6517,
#6362,
#7053,
#2693,
#6937,
#7099.
-
Phoenix:
-
Make Phoenix work with
decltype
-based
boost::result_of
.
-
Polygon:
-
Included Voronoi diagram extensions.
-
Introduced new Segment concept.
-
Fixed compilation issues.
-
Proto:
-
The data parameter to primitive transforms can now optionally have
slots indexed by key.
-
Primitive transforms can now operatate on temporary expressions that
are non-const qualified.
-
Add callable function object types for the free functions in
<iterator>
and also for some Boost.Range
functions.
-
Boost.MPL algorithms work on Proto expression nodes.
-
proto::pass_through
primitive transform
now accepts an optional Domain
template parameter for specifying the target domain of the resulting
expression.
-
Ratio:
-
Features:
-
Replace the
short_name
and long_name
functions by symbol and prefix functions respectively.
-
Deprecated:
-
The
ratio_string<>::short_name
and ratio_string<>::long_name
are deprecated. Use ratio_string<>::symbol
and ratio_string<>::prefix
respectively. These functions be removed in 1.55.
-
Fixes:
-
#7478
Compiles fails with compilers supporting char16_t and char32_t
fails if the library doesn't provides std::u16string and std::u32string.
-
Result_of:
-
Switch
boost::result_of
to use decltype
on compilers for which support
is deemed "good enough". That means if the compiler implements
n3276.
(For now, that only includes very recent versions of clang.)
-
boost::result_of
is now "sfinae-friendly"
when it uses decltype
.
See n3436.
-
Thread:
-
Deprecated Features: Deprecated features since
boost 1.50 available only until boost 1.55. These deprecated features
will be provided by default up to boost 1.52. If you don't want to
include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0.
Since 1.53 these features will not be included any more by default.
Since this version, if you want to include the deprecated features
yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0.
These deprecated features will be only available until boost 1.55,
that is you have yet 1 year to move to the new features.
-
Time related functions don't using the Boost.Chrono library,
use the chrono overloads instead.
-
Breaking changes when
BOOST_THREAD_VERSION==3
(Default value since Boost 1.53): There are some new features which
share the same interface but with different behavior. These breaking
features are provided by default when BOOST_THREAD_VERSION is 3,
but the user can however choose the version 2 behavior by defining
the corresponding macro. As for the deprecated features, these broken
features will be only available until boost 1.55.
-
#6229 C++11 compliance & Breaking change: Rename the
unique_future to future following the c++11.
-
#6266 C++11 compliance & Breaking change: thread destructor
should call terminate if joinable.
-
#6269 C++11 compliance & Breaking change: thread move
assignment should call terminate if joinable.
-
New Features:
-
#4710 C++11 compliance: Missing
async()
.
-
#7283 C++11 compliance: Add
notify_all_at_thread_exit
.
-
#7345 C++11 compliance: Add
noexcept
to recursive mutex try_lock
.
-
Fixed Bugs:
-
#2361
thread_specific_ptr
:
document nature of the key, complexity and rationale.
-
#2797 Two problems with
thread_specific_ptr
.
-
#5274 failed to compile
future.hpp
with stlport 5.1.5 under msvc8.1, because of undefined class.
-
#5431 compile error in Windows CE 6.0(interlocked).
-
#5752
boost::call_once()
is unreliable on some platforms.
-
#7045 Thread library does not automatically compile date_time.
-
#7173 wrong function name
interrupt_point()
.
-
#7200 Unable to build boost.thread modularized.
-
#7220 gcc 4.6.2 warns about inline+dllimport functions.
-
#7238
this_thread::sleep_for()
does not respond to interrupt().
-
#7245 Minor typos on documentation related to version 3.
-
#7272
win32/thread_primitives.hpp
:
(Unneccessary) Warning.
-
#7284 Clarify that there is no access priority between lock
and shared_lock on shared mutex.
-
#7329
boost/thread/future.hpp
does not compile on HPUX.
-
#7336
BOOST_THREAD_DONT_USE_SYSTEM
doesn't work.
-
#7349
packaged_task
holds reference to temporary.
-
#7350
allocator_destructor
does not destroy object
-
uBLAS:
-
improved performance of inplace_solve (issue #4024)
-
fixed coordinate_matrix for use with gcc 4.7 (issue #7363)
-
Unordered:
-
In assignment, reuse existing nodes where possible.
-
Fix bugs when erasing ranges (#7471).
-
Some work on the implementation.
-
Uuid:
-
Fixes #6118, #6788, #7375.
-
#7128 - fixed bug in
sha1.hpp
for messages longer than 536,870,912 bytes.
-
Wave:
-
xpressive:
-
Make
sub_match
work
with Boost.Range. Fixes #7237.
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2, 4.7.2
-
GCC, C++11 mode: 4.3.4, 4.4.3, 4.5.3, 4.6.2
-
Intel: 11.1, 12.0, 12.1
-
LLVM Clang: 2.8
-
OS X:
-
GCC: 4.4.4
-
GCC, C++11 mode: 4.4.4
-
Intel: 11.1, 12.0
-
Windows:
-
GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
-
Visual C++: 8.0, 9.0, 10.0
-
FreeBSD:
-
GCC: 4.2.1, 32 and 64 bit
Boost's additional test compilers include:
-
Linux:
-
Cray: 8.0
-
Clang: from subversion
-
GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2, 4.6.3, 4.7.0, 4.7.1, 4.7.2
-
GCC, C++11 mode: 4.3.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
-
pgCC: 11.9
-
Intel: 10.1, 11.1, 12.0, 12.1
-
Visual Age: 10.1
-
OS X:
-
Clang: from subversion
-
Clang, C++11 mode: from subversion
-
Intel: 11.1, 12.0
-
GCC: 4.4.4
-
GCC, C++11 mode: 4.4.4
-
Windows:
-
Visual C++: 8.0, 9.0, 10.0, 11.0
-
Visual C++ with STLport: 9.0
-
Visual C++, Windows Mobile 5, with STLport: 9.0
-
GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
-
AIX:
-
IBM XL C/C++ Enterprise Edition: V12.1.0.0
-
FreeBSD:
-
Solaris:
Acknowledgements
Beman Dawes, Eric Niebler,
Rene Rivera, Daniel James,
Vladimir Prus and Marshall Clow managed this release.