Version 1.49.0
February 24th, 2012 21:20 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.
New Libraries
- Heap:
-
Priority queue data
structures, from Tim Blechmann.
Updated Libraries
-
Asio:
-
Added a new class template
basic_waitable_timer
based around the C++11 clock type requirements. It may be used with
the clocks from the C++11 <chrono>
library facility or, if those are not available, Boost.Chrono. The
typedefs high_resolution_timer,
steady_timer and
system_timer may
be used to create timer objects for the standard clock types.
-
Added a new
windows::object_handle
class for performing waits on Windows kernel objects. Thanks go to
Boris Schaeling for contributing substantially to the development
of this feature.
-
On Linux,
connect() can return EAGAIN in certain circumstances.
Remapped this to another error so that it doesn't look like a non-blocking
operation (#6048).
-
Fixed a compile error on NetBSD (#6098).
-
Fixed deadlock on Mac OS X (#6275).
-
Fixed a regression in
buffered_write_stream
(#6310).
-
Fixed a non-paged pool "leak" on Windows when an
io_service is repeatedly run without
anything to do (#6321).
-
Reverted earlier change to allow some speculative operations to be
performed without holding the lock, as it introduced a race condition
in some multithreaded scenarios.
-
Fixed a bug where the second buffer in an array of two buffers may
be ignored if the first buffer is empty.
-
Chrono:
-
Bug Fixes:
-
#6092
Input from non integral durations makes the compiler fail.
-
#6093
[1/3]second fails as valid duration input.
-
#6113
duplicate symbol when BOOST_CHRONO_HEADER_ONLY is defined.
-
#6243
Sandia-pgi-11.9: more than one instance of overloaded function
"min" matches.
-
#6257
process_cpu_clock::now() on linux gives time_points 1/1000
times.
-
Container:
-
Fixed bugs #6499,
#6336,
#6335,
#6287,
#6205,
#4383.
-
Added
allocator_traits
support for both C++11 and C++03 compilers through an internal allocator_traits clone.
-
Filesystem:
-
Fix #3714,
Added test cases and fixes for class path errors when assignment
or append used self or portion of self as source.
-
Fix #4889,
#6320,
Locale codecvt_facet not thread safe on Windows. Move Windows, Mac
OS X, locale and codecvt facet back to namespace scope. POSIX except
OS X uses local static initialization (IE lazy) to ensure exceptions
are catchable if environmental variables are misconfigured and to
avoid use of locale("") if not actually used.
-
Fix #5652,
recursive_directory_iterator fails on cyclic symbolic links. Thanks
to Daniel Aarno for the patch.
-
Fix #5653,
recursive_directory_iterator(error_code) can still throw filesystem_error.
-
Fix #5900,
directory_iterator access violation on Windows if error is thrown.
Thanks to Andreas Eckleder for the patch.
-
Fix #5900
comment 2, a bug in director_iterator construction with error_code
argument that caused increment to be called without the ec argument
being passed.
-
Fix #5989
by cleaning up test suite path_test.cpp code even though the ticket
itself was not a defect, and clarifying docs; iteration over a path
yields generic format.
-
Fix #5592,
Change Windows codecvt processing from CP_THREAD_ACP to CP_ACP.
-
Operations function fixes for PGI compiler, thanks to Noel Belcourt.
-
Relax permissions test to reflect reality, particularly on the Sandia
test platforms.
-
Foreach:
-
Geometry:
-
Fixed bugs
-
Distance for multi-geometries ignored specified distance strategy.
-
In difference for polygon/multi_polygon (reported 2011/10/24
on GGL-list).
-
Raise exception for calculation of distances of multi-geometrie(s)
where one of them is empty
-
Multi DSV did not correctly use settings.
-
Self-intersections could sometimes be missed (introduced in
1.48).
-
Convex hull crashed on empty range (e.g. empty multi point).
-
Solved tickets
-
#6028
Documentation: closure.
-
#6178
Missing headerfile.
-
#6021
convex hull of multipoint.
-
Additional functionality
-
Support for line/polygon intersections and differences
-
Support for convert of segment/box of different point types
-
Support for append for multi point
-
Scalar functions (distance, area, length, perimeter) now throw
an empty_input_exception on empty input
-
Documentation
-
Internal changes
-
Updates in specializations/not_implemented for distance/convert/assign/area
-
Move of wkt/dsv to io folder, making domains redundant
-
Strategy concepts assigned to zero to avoid clang warnings
(patched by Vishnu)
-
Graph:
-
Icl:
-
Fixed tickets #6095
and #6210.
-
Added move semantics for constructors, assignment operators and binary
operators.
-
Interprocess:
-
Fixed bugs #6531,
#6412,
#6398,
#6340,
#6319,
#6287,
#6265,
#6233,
#6147,
#6134,
#6058,
#6054,
#5772,
#5738,
#5622,
#5552,
#5518,
#4655,
#4452,
#4383,
#4297.
-
Fixed timed functions in mutex implementations to fulfill POSIX requirements:
Under no circumstance shall the function fail with a timeout
if the mutex can be locked immediately. The validity of the abs_timeout
parameter need not be checked if the mutex can be locked immediately.
-
Intrusive:
-
Lexical cast:
-
Locale:
-
Fixed incorrect use of
MultiByteToWideChar
in detection of invalid input sequences.
-
Move:
-
PropertyTree:
-
Proto:
-
Force some functions to be inline, fixes #5735.
-
Add user documentation for per-domain
as_expr
and as_child; other
doc tweaks.
-
Fix some buggy and over-complicated example programs.
-
Add some missing copyright notices.
-
Spirit:
-
Spirit V2.5.2, see the 'What's
New' section for details.
-
Thread:
-
Fixed Bugs:
-
#2309
Lack of g++ symbol visibility support in Boost.Thread.
-
#2639
documentation should be extended(defer_lock, try_to_lock, ...).
-
#3639
Boost.Thread doesn't build with Sun-5.9 on Linux.
-
#3762
Thread can't be compiled with winscw (Codewarrior by Nokia).
-
#3885
document about mix usage of boost.thread and native thread
api.
-
#3975
Incorrect precondition for promise::set_wait_callback().
-
#4048
thread::id formatting involves locale
-
#4315
gcc 4.4 Warning: inline ... declared as dllimport: attribute
ignored.
-
#4480
OpenVMS patches for compiler issues workarounds.
-
#4819
boost.thread's documentation misprints.
-
#5040
future.hpp in boost::thread does not compile with /clr.
-
#5423
thread issues with C++0x.
-
#5502
race condition between shared_mutex timed_lock and lock_shared.
-
#5594
boost::shared_mutex not fully compatible with Windows CE.
-
#5617
boost::thread::id copy ctor.
-
#5739
set-but-not-used warnings with gcc-4.6.
-
#5826
threads.cpp: resource leak on threads creation failure.
-
#5839
thread.cpp: ThreadProxy leaks on exceptions.
-
#5859
win32 shared_mutex constructor leaks on exceptions.
-
#6100
Compute hardware_concurrency() using get_nprocs() on GLIBC
systems.
-
#6141
Compilation error when boost.thread and boost.move are used
together.
-
#6168
recursive_mutex is using wrong config symbol (possible typo).
-
#6175
Compile error with SunStudio.
-
#6200
patch to have condition_variable and mutex error better handle
EINTR.
-
#6207
shared_lock swap compiler error on clang 3.0 c++11.
-
#6208
try_lock_wrapper swap compiler error on clang 3.0 c++11.
-
Unordered:
-
On compilers without rvalue references, the containers are no longer
movable by default, as move emulation was causing some odd quirks
(#6167,
#6311).
Define
BOOST_UNORDERED_USE_MOVE
to make them movable - Boost.Move is still used for elements regardless.
-
Fix sequence point warning (#6370).
-
Better support for C++11 compilers using older standard libraries.
-
Uuid:
-
fixed #6258
-
fixed #5325
(sha1 implementation handles messages as long as the specification)
-
progress on #6118
(there are fewer warnings)
-
xpressive:
-
Eliminate some unused variable warnings on gcc.
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Intel: 11.1
-
LLVM Clang 2.8
-
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.2, 4.6.2
-
GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
-
OS X:
-
Intel: 11.1
-
GCC: 4.2.1, 4.4.4
-
GCC, C++0x mode: 4.4.4
-
Windows:
-
Visual C++ 8.0, 9.0, 10.0
-
GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
-
FreeBSD:
-
GCC 4.2.1, 32 and 64 bit.
-
QNX:
-
QCC, C++0x mode: 4.4.2, 4.6.1, 4.6.2
Boost's additional test compilers include:
-
Linux:
-
GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.6.2
-
GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.2
-
pgCC: 11.9
-
Intel: 10.1, 11.1, 12.0
-
PathScale: 4.0.8
-
Visual Age 10.1
-
OS X:
-
Clang from subversion
-
Intel 11.1, 12.0
-
GCC: 4.4.4
-
GCC, C++0x mode: 4.4.4
-
Windows:
-
Visual C++ 8.0, 9.0, 10.0
-
Visual C++ with STLport: 9.0
-
Visual C++, Windows Mobile 5, with STLport: 9.0
-
GCC, mingw: 4.4.0, 4.5.2
-
GCC, C++0x mode, mingw: 4.5.2
-
GCC, mingw 64-bit: 4.4.7, 4.5.4, 4.6.1
-
AIX:
-
IBM XL C/C++ Enterprise Edition, V11.1.0.0
-
FreeBSD:
-
Solaris:
Acknowledgements
Beman Dawes, Eric Niebler,
Rene Rivera, Daniel James
and Vladimir Prus managed this release.