Version 1.48.0
Version 1.48.0
November 15th, 2011 15:47 GMT
Platform | File |
---|---|
unix | boost_1_48_0.tar.bz2 |
boost_1_48_0.tar.gz | |
windows | boost_1_48_0.7z |
boost_1_48_0.zip |
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
Updated Libraries
-
Asio:
-
Implemented various performance improvements, including:
-
Using thread-local operation queues in single-threaded use cases (i.e. when
concurrency_hint
is 1) to eliminate a lock/unlock pair. -
Allowing some
epoll_reactor
speculative operations to be performed without holding the lock. -
Improving locality of reference by performing an
epoll_reactor
's I/O operation immediately before the corresponding handler is called. Also improves scalability across CPUs. -
Specialising asynchronous read and write operations for buffer sequences that are arrays (
boost::array
orstd::array
) of exactly two buffers.
-
-
Fixed compile error in regex overload of
async_read_until
(#5688). -
Fixed Windows-specific compile error by explicitly specifying the
signal()
function from the global namespace (#5722). -
Changed
deadline_timer
implementation to not read clock unless the timer heap is non-empty. -
Changed SSL buffer sizes to be large enough to hold a complete TLS record (#5854).
-
Fixed synchronous
null_buffers
operations so that they obey the user's non-blocking setting (#5756). -
Changed to set
fd_set
size at runtime when using Windows. -
Disabled MSVC warning due to const qualifier being applied to function type.
-
Fixed crash that occurs when using Intel C++ compiler (#5763).
-
Changed OpenSSL initialisation to support all available algorithms.
-
Fixed SSL error mapping when session is gracefully shut down.
-
Added some latency test programs.
-
Clarified that a read operation ends when the buffer is full (#5999).
-
Fixed exception safety issue in
epoll_reactor
initialisation (#6006). -
Made number of strand implementations configurable via
BOOST_ASIO_STRAND_IMPLEMENTATIONS
macro. -
Added support for
BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION
flag which switches strand allocation to use a round-robin approach rather than hashing. -
Fixed potential strand starvation issue that can occur when
strand.post()
is used.
-
-
Chrono:
-
#5978 Add BOOST_CHRONO_HAS_PROCESS_CLOCKS to know if process clocks are available.
-
#5998 Make possible to disable hybrid error handling.
-
#5906 Take in account the constexpr as defined in the standard.
-
#5907 Take in account noexcept for compilers supporting it.
-
Fixed some bugs.
-
See the History for more details.
-
Fusion:
-
Make
single_view
a random access fusion sequence. -
Remove bogus compile-time asserts from
fusion::distance
. -
Cleaner implementation of segmented Fusion.
-
-
Geometry:
-
Bugfixes:
-
Robustness issue, in some circumstances the union failed to output. Fixed.
-
Robustness issue, in some circumstances the calculated intersection point was outside the segment. Fixed.
-
Concept issue, cartesian intersect didn't understand segments other than the provided one. Fixed.
-
Sometimes self-intersections in linestrings were missed. Fixed.
-
The fusion coordinate system was not registered correctly. Fixed.
-
-
Improvements on algorithms:
-
Checking self-intersections is now not done automatically, this can blast performance.
-
Besides that, checking self-intersections is made faster.
-
Intersections now avoid outputting duplicate points. So they output the minimal set.
-
-
Additional algorithms:
-
covered_by: within is defined as "within, not on boundary". covered_by is "within or on boundary"
-
-
Additional functionality:
-
within: strategies can now be specified for within<point, box> and within<box, box>
-
convert: a much broader range of conversions is supported
-
assign: idem, (currently partly) synonym for convert (but reversed arguments)
-
-
Additional coordinate types:
-
Basic support for Boost.Rational
-
-
-
Interprocess:
-
Added support to customize offset_ptr and allow creating custom managed segments that might be shared between 32 and 64 bit processes.
-
Shared memory in windows has again filesystem lifetime: kernel bootstamp and WMI use to get a reliable timestamp was causing a lot of trouble.
-
Math:
-
Added new series evaluation methods to the cyclic Bessel I, J, K and Y functions. Also taken great care to avoid spurious over and underflow of these functions. Fixes issue #5560.
-
Added an example of using Inverse Chi-Squared distribution for Bayesian statistics, provided by Thomas Mang.
-
Added tests to use improved version of lexical_cast which handles C99 nonfinites without using global facets.
-
Corrected wrong out-of-bound uniform distribution CDF complement values #5733.
-
Enabled long double support on OpenBSD (issue #6014).
-
Changed nextafter and related functions to behave in the same way as other implementations - so that nextafter(+INF, 0) is a finite value (issue #5832).
-
Changed tuple include configuration to fix issue when using in conjunction with Boost.Tr1 (issue #5934).
-
Changed class eps_tolerance to behave correctly when both ends of the range are zero (issue #6001).
-
Fixed missing include guards on prime.hpp (issue #5927).
-
Removed unused/undocumented constants from constants.hpp (issue #5982).
-
Fixed missing std:: prefix in nonfinite_num_facets.hpp (issue #5914).
-
Minor patches for Cray compiler compatibility.
-
-
MSM:
-
eUML: added easier event reprocessing: process(event_) and reprocess()
-
Rewrite of internal transition tables. There were a few bugs (failing recursivity in internal transition tables of sub-sub machines) and a missing feature (unused internal transition table of the main state machine).
-
Bugfixes
-
Reverted favor_compile_time policy to Boost 1.46 state
-
none event now is convertible from any other event
-
eUML and pseudo exit states
-
Fixed not working Flag_AND
-
Fixed rare bugs causing multiple processing of the same event in a submachine whose transition table contains this event and a base event of it.
-
gcc warnings about unused variables
-
-
Breaking change: the new internal transition table feature causes a minor breaking change. In a submachine, the "Fsm" template parameter for guards / actions of an internal table declared using internal_transition_table now is the submachine, not the higher-level state machine. Internal transitions declared using internal rows in the higher-level state machine keep their behavior (the "Fsm" parameter is the higher-level state machine). To sum up, the internal transition "Fsm" parameter is the closest state machine containing this transition.
-
-
Numeric.Conversion:
-
Added numeric_cast_traits; see 'numeric_cast_traits' for details.
-
-
Proto:
-
Breaking Change: Reduce numbers of operator overloads by using rvalue references on compilers that support them. Any user code that defines additional operator overloads on Proto expressions could potentially be rendered ambiguous by this change. The solution is to use a grammar to disable Proto's operators that are made ambiguous by any user-defined operators.
-
Move definitions of Proto tag types into an ADL-blocking namespace.
-
Add second template parameter to
proto::siwtch_
to control dispatching to cases. -
Allow dependent domains to be specified with
BOOST_PROTO_EXTENDS
andBOOST_PROTO_BASIC_EXTENDS
.
-
-
Spirit:
-
Spirit V2.5.1, see the 'What's New' section for details.
-
-
TypeTraits:
-
Extension to support operator detection.
-
-
Unordered:
-
Improved support for the C++11 standard - breaking change to equality and emplace.
-
Use Boost.Move to implement move semantics.
-
See the change log for full details.
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
LLVM Clang 2.8
-
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.1, 4.5.2, 4.6
-
GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
-
Intel 11.1
-
-
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
-
-
FreeBSD:
-
GCC 4.2.1, 32 and 64 bit.
-
-
QNX:
-
QCC 4.4.2
-
QCC, C++0x mode: 4.4.2, 4.6.1
-
Boost's additional test compilers include:
-
Linux:
-
Clang from subversion, with libc++ and GNU libstdc++
-
LLVM Clang 2.8 x
-
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.5.4, 4.6.1, 4.6.2
-
GCC, C++0x mode: 4.3.4, 4.4.3, 4.4.4, 4.5.2
-
pgCC: 11.2 x
-
Intel: 10.1, 11.1, 12.0
-
PathScale: 4.0.8
-
Visual Age 10.1
-
-
OS X:
-
Clang from subversion, with libc++ and GNU libstdc++.
-
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
-
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.2, 4.5.4, 4.6.1
-
GCC, C++0x mode, mingw: 4.5.2
-
GCC, mingw 64-bit: 4.7.0
-
-
AIX:
-
IBM XL C/C++ Enterprise Edition, V11.1.0.0
-
-
FreeBSD:
-
GCC 4.2.1, 32 and 64 bit.
-
-
Solaris:
-
Sun 5.10
-
Acknowledgements
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James and Vladimir Prus managed this release.