Version 1.43.0
Version 1.43.0
May 6th, 2010 12:00 GMT
Platform | File |
---|---|
unix | boost_1_43_0.tar.bz2 |
boost_1_43_0.tar.gz | |
windows | boost_1_43_0.7z |
boost_1_43_0.zip |
New Libraries
-
Functional/factory: Function objects for dynamic and by-value construction, from Tobias Schwinger.
-
Functional/forward: Function object adapters to address the forwarding problem, from Tobias Schwinger.
Major Updates
-
Range: Boost.Range has undergone extensive updates that it include all of the features from the recently reviewed Boost.RangeEx, from Neil Groves.
-
Range-based version of the full STL iterator based algorithms.
-
Range adaptors which can be combined with range-based algorithms for unprecedented expressiveness and efficiency.
-
New functions: irange, istream_range, join, combine.
-
Updated Libraries
-
Accumulators:
-
Avoid premature template evaluation in operator overload return types.
-
-
Array:
-
Added support for SunCC compiler.
-
Added 'fill' member function.
-
Changed exception code to use boost::throw_exception.
-
-
Asio:
-
Improved performance.
-
Reduced compile times.
-
Reduced the size of generated code.
-
Extended the guarantee that background threads don't call user code to all asynchronous operations (#3923).
-
Changed to use edge-triggered epoll on Linux.
-
Changed to use
timerfd
for dispatching timers on Linux, when available. -
Changed to use one-shot notifications with kqueue on Mac OS X and BSD platforms.
-
Added a bitmask type
ip::resolver_query_base::flags
as per the TR2 proposal. This type prevents implicit conversion fromint
toflags
, allowing the compiler to catch cases where users incorrectly pass a numeric port number as the service name. -
Added
#define NOMINMAX
for all Windows compilers. Users can defineBOOST_ASIO_NO_NOMINMAX
to suppress this definition (#3901). -
Fixed a bug where 0-byte asynchronous reads were incorrectly passing an
error::eof
result to the completion handler (#4023). -
Changed the
io_control()
member functions to always callioctl
on the underlying descriptor when modifying blocking mode (#3307). -
Changed the resolver implementation to longer require the typedefs
InternetProtocol::resolver_query
andInternetProtocol::resolver_iterator
, as neither typedef is part of the documentedInternetProtocol
requirements. The corresponding typedefs in theip::tcp
,ip::udp
andip::icmp
classes have been deprecated. -
Fixed out-of-band handling for reactors not based on
select()
. -
Added new
BOOST_ASIO_DISABLE_THREADS
macro that allows Asio's threading support to be independently disabled. -
Minor documentation improvements.
-
-
Multi-index Containers:
-
Serialization of non default constructible values is now properly supported through user-provided facilities
save_construct_data
andload_construct_data
.multi_index_container
serialization class version has been bumped from 1 to 2.
-
-
Proto:
-
Minor change in behavior: non-const expression self-assignment creates an assign node. See Proto's Release Notes for details.
-
Minor change to recommended expression extension mechanism: use
BOOST_PROTO_EXTENDS_USING_ASSIGN()
. See Proto's Release Notes for details. -
Fix error in invocation of callable monomorphic function objects in Proto transforms.
-
Fix misc const correctness issues, work around fusion bug.
-
Add non-const function call overloads to proto terminals.
-
Add a default constructor to
proto::literal<>
. -
Do not use deprecated config macros.
-
Add
proto::assert_matches()
function and friends to <boost/proto/debug.hpp>. -
functional::make_expr<>
andfunctional::unpack_expr<>
return const-qualified rvalues. -
Add documentation for Expr and Domain concepts.
-
-
Random:
-
Put the implementation of random_device in a compiled lib, and added Windows support.
-
Rewrote the documentation using Quickbook/Doxygen/Boostbook and brought it up to date.
-
-
Spirit: Spirit V2.3, see the 'What's New' section for details.
-
Thread:
-
Uses
boost::throw_exception
for all exceptions exceptthread_interrupted
-
Added fix for issue 2742
-
Optimizations to mutex locks and
call_once
-
-
Xpressive:
-
Add missing include to <boost/xpressive/regex_error.hpp>.
-
Build System
-
When cross-compiling to GNU targets, static libraries are properly created. Previously, using such libraries resulted in Archive has no index error.
-
The naming of DLL and import libraries with gcc compiler on Windows, both mingw and cygwin, now matches default conventions of those environments. Previously, the naming scheme was the same as for other Windows compilers.
Updated Tools
-
Quickbook:
-
Unicode escape characters.
-
Support the UTF-8 byte order mark.
-
Disallow
[
in simple markup. Fixes some errors with mismatched punctuation. -
Add a command line flag (
-D
) to define macros at the command line. -
Improved post-processor output.
-
Check that
[section]
and[endsect]
tags are balanced in templates.
-
Compilers Tested
Boost's primary test compilers are:
-
OS X:
-
GCC 4.0.1 on Intel Leopard.
-
-
Linux:
-
GCC 4.4.1 on Ubuntu Linux.
-
GCC 4.4 on 64-bit Suse.
-
-
Windows:
-
Visual C++ 8.0 SP1 and 9.0 SP1 on Windows XP.
-
GCC 4.3.3, using Mingw
-
-
FreeBSD:
-
GCC 4.2.1, 32 and 64 bit.
-
Boost's additional test compilers include:
-
Linux:
-
Intel 10.1, 11.1 on 32 bit Red Hat Enterprise Linux.
-
Intel 10.1, 11.0, 11.1 on 64 bit Red Hat Enterprise Linux.
-
GCC 3.4.6, 4.2.4, 4.3.4, 4.4.3 on Red Hat Enterprise Linux.
-
GCC 4.3.4, 4.4.3 with C++0x extensions on Red Hat Enterprise Linux.
-
QLogic PathScale(TM) Compiler Suite: Version 3.2 on Red Hat Enterprise Linux.
-
-
OS X:
-
Intel C++ Compiler 10.1, 11.0, 11.1 on Leopard.
-
GCC 4.0.1 on Intel Leopard.
-
Clang from subversion.
-
-
Windows:
-
Visual C++ 8,0, 9,0 on 32-bit XP.
-
Visual C++ 9.0 using STLport 5.2 on XP and Windows Mobile 5.0.
-
Visual C++ 10.0 on XP.
-
Visual C++ 10.0 on 64-bit Windows 7.
-
Borland/Codegear C++ 5.9.3, 6.1.3 (2009), 6.2.1 (2010).
-
Intel C++ 11.1, with a Visual C++ 9.0 backend, on Vista 32-bit.
-
GCC 4.3.3 on Mingw.
-
GCC 4.4.3 on Mingw, with and without C++0x extensions.
-
GCC 4.5 on Mingw.
-
-
AIX:
-
IBM XL C/C++ Enterprise Edition, V10.1.0.0, on AIX Version 5.3.0.40.
-
-
FreeBSD:
-
GCC 4.2.1 on FreeBSD 7.2, 64 bit.
-
GCC 4.2.1 on FreeBSD 8.0, 32 bit.
-
-
Solaris:
-
Sun C++ 5.10 on Solaris 5.10.
-
Acknowledgements
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James and Vladimir Prus managed this release.