Version 1.43.0
May 6th, 2010 12:00 GMT
Documentation
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 from
int to flags, 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 define BOOST_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 call
ioctl on the underlying
descriptor when modifying blocking mode (#3307).
-
Changed the resolver implementation to longer require the typedefs
InternetProtocol::resolver_query
and InternetProtocol::resolver_iterator,
as neither typedef is part of the documented InternetProtocol
requirements. The corresponding typedefs in the ip::tcp,
ip::udp and ip::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.
-
Fusion:
-
Added new macros for adapting or defining custom types. See the
Changelog
for details.
-
Iostreams:
-
Multi-index Containers:
-
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<>
and functional::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
except thread_interrupted
-
Added fix for issue 2742
-
Optimizations to mutex locks and
call_once
-
Unordered:
-
erase_return_void
is now quick_erase
(#3966).
-
Uuid:
-
Split generators into separate files.
-
Fixed bug in basic_random_generator (#3971).
-
Updated documentation.
-
Wave:
See the Changelog
for details.
-
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.