summaryrefslogtreecommitdiff
path: root/doc/html/boost_asio/history.html
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
committerAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
commit1a78a62555be32868418fe52f8e330c9d0f95d5a (patch)
treed3765a80e7d3b9640ec2e930743630cd6b9fce2b /doc/html/boost_asio/history.html
downloadboost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz
boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2
boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'doc/html/boost_asio/history.html')
-rwxr-xr-xdoc/html/boost_asio/history.html992
1 files changed, 992 insertions, 0 deletions
diff --git a/doc/html/boost_asio/history.html b/doc/html/boost_asio/history.html
new file mode 100755
index 0000000000..18880e42f1
--- /dev/null
+++ b/doc/html/boost_asio/history.html
@@ -0,0 +1,992 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Revision History</title>
+<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../boost_asio.html" title="Boost.Asio">
+<link rel="up" href="../boost_asio.html" title="Boost.Asio">
+<link rel="prev" href="reference/is_error_code_enum_lt__ssl_errors__gt_/value.html" title="boost::system::is_error_code_enum&lt; boost::asio::error::ssl_errors &gt;::value">
+<link rel="next" href="index.html" title="">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center"><a href="../../../index.html">Home</a></td>
+<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/is_error_code_enum_lt__ssl_errors__gt_/value.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../boost_asio.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_asio.history"></a><a class="link" href="history.html" title="Revision History">Revision History</a>
+</h2></div></div></div>
+<h4>
+<a name="boost_asio.history.h0"></a>
+ <span><a name="boost_asio.history.asio_1_8_0___boost_1_49"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_8_0___boost_1_49">Asio
+ 1.8.0 / Boost 1.49</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Added a new class template <code class="computeroutput"><span class="identifier">basic_waitable_timer</span></code>
+ based around the C++11 clock type requirements. It may be used with the
+ clocks from the C++11 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">chrono</span><span class="special">&gt;</span></code>
+ library facility or, if those are not available, Boost.Chrono. The typedefs
+ <code class="computeroutput"><span class="identifier">high_resolution_timer</span></code>,
+ <code class="computeroutput"><span class="identifier">steady_timer</span></code> and <code class="computeroutput"><span class="identifier">system_timer</span></code> may be used to create timer
+ objects for the standard clock types.
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">windows</span><span class="special">::</span><span class="identifier">object_handle</span></code> class for performing waits
+ on Windows kernel objects. Thanks go to Boris Schaeling for contributing
+ substantially to the development of this feature.
+ </li>
+<li class="listitem">
+ On Linux, <code class="computeroutput"><span class="identifier">connect</span><span class="special">()</span></code>
+ can return EAGAIN in certain circumstances. Remapped this to another error
+ so that it doesn't look like a non-blocking operation (<a href="https://svn.boost.org/trac/boost/ticket/6048" target="_top">#6048</a>).
+ </li>
+<li class="listitem">
+ Fixed a compile error on NetBSD (<a href="https://svn.boost.org/trac/boost/ticket/6098" target="_top">#6098</a>).
+ </li>
+<li class="listitem">
+ Fixed deadlock on Mac OS X (<a href="https://svn.boost.org/trac/boost/ticket/6275" target="_top">#6275</a>).
+ </li>
+<li class="listitem">
+ Fixed a regression in <code class="computeroutput"><span class="identifier">buffered_write_stream</span></code>
+ (<a href="https://svn.boost.org/trac/boost/ticket/6310" target="_top">#6310</a>).
+ </li>
+<li class="listitem">
+ Fixed a non-paged pool "leak" on Windows when an <code class="computeroutput"><span class="identifier">io_service</span></code> is repeatedly run without
+ anything to do (<a href="https://svn.boost.org/trac/boost/ticket/6321" target="_top">#6321</a>).
+ </li>
+<li class="listitem">
+ 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.
+ </li>
+<li class="listitem">
+ Fixed a bug where the second buffer in an array of two buffers may be ignored
+ if the first buffer is empty.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h1"></a>
+ <span><a name="boost_asio.history.asio_1_6_1___boost_1_48"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_6_1___boost_1_48">Asio
+ 1.6.1 / Boost 1.48</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Implemented various performance improvements, including:
+ <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+ Using thread-local operation queues in single-threaded use cases
+ (i.e. when <code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
+ is 1) to eliminate a lock/unlock pair.
+ </li>
+<li class="listitem">
+ Allowing some <code class="computeroutput"><span class="identifier">epoll_reactor</span></code>
+ speculative operations to be performed without holding the lock.
+ </li>
+<li class="listitem">
+ Improving locality of reference by performing an <code class="computeroutput"><span class="identifier">epoll_reactor</span></code>'s
+ I/O operation immediately before the corresponding handler is called.
+ This also improves scalability across CPUs when multiple threads
+ are running the <code class="computeroutput"><span class="identifier">io_service</span></code>.
+ </li>
+<li class="listitem">
+ Specialising asynchronous read and write operations for buffer sequences
+ that are arrays (<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code>
+ or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span></code>) of exactly two buffers.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ Fixed a compile error in the regex overload of <code class="computeroutput"><span class="identifier">async_read_until</span></code>
+ (<a href="https://svn.boost.org/trac/boost/ticket/5688" target="_top">#5688</a>).
+ </li>
+<li class="listitem">
+ Fixed a Windows-specific compile error by explicitly specifying the <code class="computeroutput"><span class="identifier">signal</span><span class="special">()</span></code>
+ function from the global namespace (<a href="https://svn.boost.org/trac/boost/ticket/5722" target="_top">#5722</a>).
+ </li>
+<li class="listitem">
+ Changed the <code class="computeroutput"><span class="identifier">deadline_timer</span></code>
+ implementation so that it does not read the clock unless the timer heap
+ is non-empty.
+ </li>
+<li class="listitem">
+ Changed the SSL stream's buffers' sizes so that they are large enough to
+ hold a complete TLS record (<a href="https://svn.boost.org/trac/boost/ticket/5854" target="_top">#5854</a>).
+ </li>
+<li class="listitem">
+ Fixed the behaviour of the synchronous <code class="computeroutput"><span class="identifier">null_buffers</span></code>
+ operations so that they obey the user's non-blocking setting (<a href="https://svn.boost.org/trac/boost/ticket/5756" target="_top">#5756</a>).
+ </li>
+<li class="listitem">
+ Changed to set the size of the select <code class="computeroutput"><span class="identifier">fd_set</span></code>
+ at runtime when using Windows.
+ </li>
+<li class="listitem">
+ Disabled an MSVC warning due to const qualifier being applied to function
+ type.
+ </li>
+<li class="listitem">
+ Fixed a crash that occurs when using the Intel C++ compiler (<a href="https://svn.boost.org/trac/boost/ticket/5763" target="_top">#5763</a>).
+ </li>
+<li class="listitem">
+ Changed the initialisation of the OpenSSL library so that it supports all
+ available algorithms.
+ </li>
+<li class="listitem">
+ Fixed the SSL error mapping used when the session is gracefully shut down.
+ </li>
+<li class="listitem">
+ Added some latency test programs.
+ </li>
+<li class="listitem">
+ Clarified that a read operation ends when the buffer is full (<a href="https://svn.boost.org/trac/boost/ticket/5999" target="_top">#5999</a>).
+ </li>
+<li class="listitem">
+ Fixed an exception safety issue in <code class="computeroutput"><span class="identifier">epoll_reactor</span></code>
+ initialisation (<a href="https://svn.boost.org/trac/boost/ticket/6006" target="_top">#6006</a>).
+ </li>
+<li class="listitem">
+ Made the number of strand implementations configurable by defining <code class="computeroutput"><span class="identifier">BOOST_ASIO_STRAND_IMPLEMENTATIONS</span></code> to
+ the desired number.
+ </li>
+<li class="listitem">
+ Added support for a new <code class="computeroutput"><span class="identifier">BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION</span></code>
+ flag which switches the allocation of strand implementations to use a round-robin
+ approach rather than hashing.
+ </li>
+<li class="listitem">
+ Fixed potential strand starvation issue that can occur when <code class="computeroutput"><span class="identifier">strand</span><span class="special">.</span><span class="identifier">post</span><span class="special">()</span></code>
+ is used.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h2"></a>
+ <span><a name="boost_asio.history.asio_1_6_0___boost_1_47"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_6_0___boost_1_47">Asio
+ 1.6.0 / Boost 1.47</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Added support for signal handling, using a new class called <code class="computeroutput"><span class="identifier">signal_set</span></code>. Programs may add one or more
+ signals to the set, and then perform an <code class="computeroutput"><span class="identifier">async_wait</span><span class="special">()</span></code> operation. The specified handler will
+ be called when one of the signals occurs. The same signal number may be
+ registered with multiple <code class="computeroutput"><span class="identifier">signal_set</span></code>
+ objects, however the signal number must be used only with Asio. Addresses
+ <a href="https://svn.boost.org/trac/boost/ticket/2879" target="_top">#2879</a>.
+ </li>
+<li class="listitem">
+ Added handler tracking, a new debugging aid. When enabled by defining
+ <code class="computeroutput"><span class="identifier">BOOST_ASIO_ENABLE_HANDLER_TRACKING</span></code>,
+ Asio writes debugging output to the standard error stream. The output records
+ asynchronous operations and the relationships between their handlers. It
+ may be post-processed using the included <code class="literal">handlerviz.pl</code>
+ tool to create a visual representation of the handlers (requires GraphViz).
+ </li>
+<li class="listitem">
+ Added support for timeouts on socket iostreams, such as <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">tcp</span><span class="special">::</span><span class="identifier">iostream</span></code>.
+ A timeout is set by calling <code class="computeroutput"><span class="identifier">expires_at</span><span class="special">()</span></code> or <code class="computeroutput"><span class="identifier">expires_from_now</span><span class="special">()</span></code> to establish a deadline. Any socket operations
+ which occur past the deadline will put the iostream into a bad state.
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">error</span><span class="special">()</span></code>
+ member function to socket iostreams, for retrieving the error code from
+ the most recent system call.
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">basic_deadline_timer</span><span class="special">::</span><span class="identifier">cancel_one</span><span class="special">()</span></code> function. This function lets you cancel
+ a single waiting handler on a timer. Handlers are cancelled in FIFO order.
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">transfer_exactly</span><span class="special">()</span></code> completion condition. This can be used
+ to send or receive a specified number of bytes even if the total size of
+ the buffer (or buffer sequence) is larger.
+ </li>
+<li class="listitem">
+ Added new free functions <code class="computeroutput"><span class="identifier">connect</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">async_connect</span><span class="special">()</span></code>. These operations try each endpoint in
+ a list until the socket is successfully connected, and are useful for creating
+ TCP clients that work with both IPv4 and IPv6.
+ </li>
+<li class="listitem">
+ Extended the <code class="computeroutput"><span class="identifier">buffer_size</span><span class="special">()</span></code> function so that it works for buffer
+ sequences in addition to individual buffers.
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">buffer_copy</span><span class="special">()</span></code> function that can be used to copy the
+ raw bytes between individual buffers and buffer sequences.
+ </li>
+<li class="listitem">
+ Added new non-throwing overloads of <code class="computeroutput"><span class="identifier">read</span><span class="special">()</span></code>, <code class="computeroutput"><span class="identifier">read_at</span><span class="special">()</span></code>, <code class="computeroutput"><span class="identifier">write</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">write_at</span><span class="special">()</span></code> that do not require a completion condition.
+ </li>
+<li class="listitem">
+ Added friendlier compiler errors for when a completion handler does not
+ meet the necessary type requirements. When C++0x is available (currently
+ supported for <code class="literal">g++</code> 4.5 or later, and MSVC 10), <code class="computeroutput"><span class="identifier">static_assert</span></code> is also used to generate
+ an informative error message. This checking may be disabled by defining
+ <code class="computeroutput"><span class="identifier">BOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS</span></code>.
+ </li>
+<li class="listitem">
+ Added a new, completely rewritten SSL implementation. The new implementation
+ compiles faster, shows substantially improved performance, and supports
+ custom memory allocation and handler invocation. It includes new API features
+ such as certificate verification callbacks and has improved error reporting.
+ The new implementation is source-compatible with the old for most uses.
+ However, if necessary, the old implementation may still be used by defining
+ <code class="computeroutput"><span class="identifier">BOOST_ASIO_ENABLE_OLD_SSL</span></code>.
+ Addresses <a href="https://svn.boost.org/trac/boost/ticket/3702" target="_top">#3702</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/3958" target="_top">#3958</a>.
+ </li>
+<li class="listitem">
+ Changed the separate compilation support such that, to use Asio's SSL capabilities,
+ you should also include <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ssl</span><span class="special">/</span><span class="identifier">impl</span><span class="special">/</span><span class="identifier">src</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ in one source file in your program.
+ </li>
+<li class="listitem">
+ Changed the SSL implementation to support build environments where SSL
+ v2 is explicitly disabled (<a href="https://svn.boost.org/trac/boost/ticket/5453" target="_top">#5453</a>).
+ </li>
+<li class="listitem">
+ Made the <code class="computeroutput"><span class="identifier">is_loopback</span><span class="special">()</span></code>,
+ <code class="computeroutput"><span class="identifier">is_unspecified</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">is_multicast</span><span class="special">()</span></code>
+ functions consistently available across the <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span></code>,
+ <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span></code> and <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span></code>
+ classes (<a href="https://svn.boost.org/trac/boost/ticket/3939" target="_top">#3939</a>).
+ </li>
+<li class="listitem">
+ Added new <code class="computeroutput"><span class="identifier">non_blocking</span><span class="special">()</span></code> functions for managing the non-blocking
+ behaviour of a socket or descriptor. The <code class="computeroutput"><span class="identifier">io_control</span><span class="special">()</span></code> commands named <code class="computeroutput"><span class="identifier">non_blocking_io</span></code>
+ are now deprecated in favour of these new functions.
+ </li>
+<li class="listitem">
+ Added new <code class="computeroutput"><span class="identifier">native_non_blocking</span><span class="special">()</span></code> functions for managing the non-blocking
+ mode of the underlying socket or descriptor. These functions are intended
+ to allow the encapsulation of arbitrary non-blocking system calls as asynchronous
+ operations, in a way that is transparent to the user of the socket object.
+ The functions have no effect on the behaviour of the synchronous operations
+ of the socket or descriptor.
+ </li>
+<li class="listitem">
+ Added the <code class="computeroutput"><span class="identifier">io_control</span><span class="special">()</span></code>
+ member function for socket acceptors (<a href="https://svn.boost.org/trac/boost/ticket/3297" target="_top">#3297</a>).
+ </li>
+<li class="listitem">
+ Added a <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code>
+ member function to posix descriptors. This function releases ownership
+ of the underlying native descriptor to the caller. Addresses <a href="https://svn.boost.org/trac/boost/ticket/3900" target="_top">#3900</a>.
+ </li>
+<li class="listitem">
+ Added support for sequenced packet sockets (<code class="computeroutput"><span class="identifier">SOCK_SEQPACKET</span></code>).
+ </li>
+<li class="listitem">
+ Added a new <code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">stopped</span><span class="special">()</span></code> function that can be used to determine
+ whether the <code class="computeroutput"><span class="identifier">io_service</span></code>
+ has stopped (i.e. a <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code> call is needed prior to any further calls
+ to <code class="computeroutput"><span class="identifier">run</span><span class="special">()</span></code>,
+ <code class="computeroutput"><span class="identifier">run_one</span><span class="special">()</span></code>,
+ <code class="computeroutput"><span class="identifier">poll</span><span class="special">()</span></code>
+ or <code class="computeroutput"><span class="identifier">poll_one</span><span class="special">()</span></code>).
+ </li>
+<li class="listitem">
+ For consistency with the C++0x standard library, deprecated the <code class="computeroutput"><span class="identifier">native_type</span></code> typedefs in favour of <code class="computeroutput"><span class="identifier">native_handle_type</span></code>, and the <code class="computeroutput"><span class="identifier">native</span><span class="special">()</span></code>
+ member functions in favour of <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ Added support for C++0x move construction and assignment to sockets, serial
+ ports, POSIX descriptors and Windows handles.
+ </li>
+<li class="listitem">
+ Reduced the copying of handler function objects.
+ </li>
+<li class="listitem">
+ Added support for C++0x move construction to further reduce (and in some
+ cases eliminate) copying of handler objects.
+ </li>
+<li class="listitem">
+ Added support for the <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code> system call. Programs that use <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code>
+ must call <code class="computeroutput"><span class="identifier">io_service</span><span class="special">.</span><span class="identifier">notify_fork</span><span class="special">()</span></code>
+ at the appropriate times. Two new examples have been added showing how
+ to use this feature. Addresses <a href="https://svn.boost.org/trac/boost/ticket/3238" target="_top">#3238</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/4162" target="_top">#4162</a>.
+ </li>
+<li class="listitem">
+ Cleaned up the handling of errors reported by the <code class="computeroutput"><span class="identifier">close</span><span class="special">()</span></code> system call. In particular, assume that
+ most operating systems won't have <code class="computeroutput"><span class="identifier">close</span><span class="special">()</span></code> fail with <code class="computeroutput"><span class="identifier">EWOULDBLOCK</span></code>,
+ but if it does then set the blocking mode and restart the call. If any
+ other error occurs, assume the descriptor is closed. Addresses <a href="https://svn.boost.org/trac/boost/ticket/3307" target="_top">#3307</a>.
+ </li>
+<li class="listitem">
+ Added new <code class="computeroutput"><span class="identifier">asio</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">()</span></code>
+ overloads for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span></code>, when available.
+ </li>
+<li class="listitem">
+ Changed the implementation to use the C++0x standard library templates
+ <code class="computeroutput"><span class="identifier">array</span></code>, <code class="computeroutput"><span class="identifier">shared_ptr</span></code>,
+ <code class="computeroutput"><span class="identifier">weak_ptr</span></code> and <code class="computeroutput"><span class="identifier">atomic</span></code> when they are available, rather
+ than the Boost equivalents.
+ </li>
+<li class="listitem">
+ Use C++0x variadic templates when available, rather than generating function
+ overloads using Boost.Preprocessor.
+ </li>
+<li class="listitem">
+ Changed exception reporting to include the function name in exception
+ <code class="computeroutput"><span class="identifier">what</span><span class="special">()</span></code>
+ messages.
+ </li>
+<li class="listitem">
+ Fixed insufficient initialisers warning with MinGW.
+ </li>
+<li class="listitem">
+ Changed the <code class="computeroutput"><span class="identifier">shutdown_service</span><span class="special">()</span></code> member functions to be private.
+ </li>
+<li class="listitem">
+ Added archetypes for testing socket option functions.
+ </li>
+<li class="listitem">
+ Changed the Boost.Asio examples so that they don't use Boost.Thread's convenience
+ header. Use the header file that is specifically for the boost::thread
+ class instead.
+ </li>
+<li class="listitem">
+ Removed the dependency on OS-provided macros for the well-known IPv4 and
+ IPv6 addresses. This should eliminate annoying "missing braces around
+ initializer" warnings (<a href="https://svn.boost.org/trac/boost/ticket/3741" target="_top">#3741</a>).
+ </li>
+<li class="listitem">
+ Reduced the size of <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_endpoint</span><span class="special">&lt;&gt;</span></code> objects (such as <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">tcp</span><span class="special">::</span><span class="identifier">endpoint</span></code> and <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">udp</span><span class="special">::</span><span class="identifier">endpoint</span></code>).
+ </li>
+<li class="listitem">
+ Changed the reactor backends to assume that any descriptors or sockets
+ added using <code class="computeroutput"><span class="identifier">assign</span><span class="special">()</span></code>
+ may have been <code class="computeroutput"><span class="identifier">dup</span><span class="special">()</span></code>-ed,
+ and so require explicit deregistration from the reactor (<a href="https://svn.boost.org/trac/boost/ticket/4971" target="_top">#4971</a>).
+ </li>
+<li class="listitem">
+ Removed the deprecated member functions named <code class="computeroutput"><span class="identifier">io_service</span><span class="special">()</span></code>. The <code class="computeroutput"><span class="identifier">get_io_service</span><span class="special">()</span></code> member functions should be used instead.
+ </li>
+<li class="listitem">
+ Removed the deprecated typedefs <code class="computeroutput"><span class="identifier">resolver_query</span></code>
+ and <code class="computeroutput"><span class="identifier">resolver_iterator</span></code> from
+ the <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">tcp</span></code>, <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">udp</span></code>
+ and <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">icmp</span></code> classes.
+ </li>
+<li class="listitem">
+ Modified the <code class="computeroutput"><span class="identifier">buffers_iterator</span><span class="special">&lt;&gt;</span></code> and <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver_iterator</span></code>
+ classes so that the value_type typedefs are non-const byte types.
+ </li>
+<li class="listitem">
+ Fixed warnings reported by g++'s <code class="literal">-Wshadow</code> compiler option
+ (<a href="https://svn.boost.org/trac/boost/ticket/3905" target="_top">#3905</a>).
+ </li>
+<li class="listitem">
+ Added an explicit cast to convert the <code class="computeroutput"><span class="identifier">FIONBIO</span></code>
+ constant to int, to suppress a compiler warning on some platforms (<a href="https://svn.boost.org/trac/boost/ticket/5128" target="_top">#5128</a>).
+ </li>
+<li class="listitem">
+ Changed most examples to treat a failure by an accept operation as non-fatal
+ (<a href="https://svn.boost.org/trac/boost/ticket/5124" target="_top">#5124</a>).
+ </li>
+<li class="listitem">
+ Fixed an error in the <code class="literal">tick_count_timer</code> example by making
+ the duration type signed. Previously, a wait on an already-passed deadline
+ would not return for a very long time (<a href="https://svn.boost.org/trac/boost/ticket/5418" target="_top">#5418</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h3"></a>
+ <span><a name="boost_asio.history.asio_1_4_9___boost_1_46_1"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_9___boost_1_46_1">Asio
+ 1.4.9 / Boost 1.46.1</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">EV_ONESHOT</span></code> seems to cause
+ problems on some versions of Mac OS X, with the <code class="computeroutput"><span class="identifier">io_service</span></code>
+ destructor getting stuck inside the <code class="computeroutput"><span class="identifier">close</span><span class="special">()</span></code> system call. Changed the kqueue backend
+ to use <code class="computeroutput"><span class="identifier">EV_CLEAR</span></code> instead
+ (<a href="https://svn.boost.org/trac/boost/ticket/5021" target="_top">#5021</a>).
+ </li>
+<li class="listitem">
+ Fixed compile failures with some versions of <code class="literal">g++</code> due
+ to the use of anonymous enums (<a href="https://svn.boost.org/trac/boost/ticket/4883" target="_top">#4883</a>).
+ </li>
+<li class="listitem">
+ Fixed a bug on kqueue-based platforms, where some system calls that repeatedly
+ fail with <code class="computeroutput"><span class="identifier">EWOULDBLOCK</span></code> are
+ not correctly re-registered with kqueue.
+ </li>
+<li class="listitem">
+ Changed <code class="computeroutput"><span class="identifier">asio</span><span class="special">::</span><span class="identifier">streambuf</span></code> to ensure that its internal
+ pointers are updated correctly after the data has been modified using
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streambuf</span></code> member functions.
+ </li>
+<li class="listitem">
+ Fixed a bug that prevented the linger socket option from working on platforms
+ other than Windows.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h4"></a>
+ <span><a name="boost_asio.history.asio_1_4_8___boost_1_46"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_8___boost_1_46">Asio
+ 1.4.8 / Boost 1.46</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Fixed an integer overflow problem that occurs when <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">broadcast</span><span class="special">()</span></code> is used on 64-bit platforms.
+ </li>
+<li class="listitem">
+ Fixed a problem on older Linux kernels (where epoll is used without timerfd
+ support) that prevents timely delivery of deadline_timer handlers, after
+ the program has been running for some time (<a href="https://svn.boost.org/trac/boost/ticket/5045" target="_top">#5045</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h5"></a>
+ <span><a name="boost_asio.history.asio_1_4_7___boost_1_45"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_7___boost_1_45">Asio
+ 1.4.7 / Boost 1.45</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Fixed a problem on kqueue-based platforms where a <code class="computeroutput"><span class="identifier">deadline_timer</span></code>
+ may never fire if the <code class="computeroutput"><span class="identifier">io_service</span></code>
+ is running in a background thread (<a href="https://svn.boost.org/trac/boost/ticket/4568" target="_top">#4568</a>).
+ </li>
+<li class="listitem">
+ Fixed a const-correctness issue that prevented valid uses of <code class="computeroutput"><span class="identifier">has_service</span><span class="special">&lt;&gt;</span></code>
+ from compiling (<a href="https://svn.boost.org/trac/boost/ticket/4638" target="_top">#4638</a>).
+ </li>
+<li class="listitem">
+ Fixed MinGW cross-compilation (<a href="https://svn.boost.org/trac/boost/ticket/4491" target="_top">#4491</a>).
+ </li>
+<li class="listitem">
+ Removed dependency on deprecated Boost.System functions (<a href="https://svn.boost.org/trac/boost/ticket/4672" target="_top">#4672</a>).
+ </li>
+<li class="listitem">
+ Ensured <code class="computeroutput"><span class="identifier">close</span><span class="special">()</span></code>/<code class="computeroutput"><span class="identifier">closesocket</span><span class="special">()</span></code>
+ failures are correctly propagated (<a href="https://svn.boost.org/trac/boost/ticket/4573" target="_top">#4573</a>).
+ </li>
+<li class="listitem">
+ Added a check for errors returned by <code class="computeroutput"><span class="identifier">InitializeCriticalSectionAndSpinCount</span></code>
+ (<a href="https://svn.boost.org/trac/boost/ticket/4574" target="_top">#4574</a>).
+ </li>
+<li class="listitem">
+ Added support for hardware flow control on QNX (<a href="https://svn.boost.org/trac/boost/ticket/4625" target="_top">#4625</a>).
+ </li>
+<li class="listitem">
+ Always use <code class="computeroutput"><span class="identifier">pselect</span><span class="special">()</span></code>
+ on HP-UX, if it is available (<a href="https://svn.boost.org/trac/boost/ticket/4578" target="_top">#4578</a>).
+ </li>
+<li class="listitem">
+ Ensured handler arguments are passed as lvalues (<a href="https://svn.boost.org/trac/boost/ticket/4744" target="_top">#4744</a>).
+ </li>
+<li class="listitem">
+ Fixed Windows build when thread support is disabled (<a href="https://svn.boost.org/trac/boost/ticket/4680" target="_top">#4680</a>).
+ </li>
+<li class="listitem">
+ Fixed a Windows-specific problem where <code class="computeroutput"><span class="identifier">deadline_timer</span></code>
+ objects with expiry times set more than 5 minutes in the future may never
+ expire (<a href="https://svn.boost.org/trac/boost/ticket/4745" target="_top">#4745</a>).
+ </li>
+<li class="listitem">
+ Fixed the <code class="computeroutput"><span class="identifier">resolver</span></code> backend
+ on BSD platforms so that an empty service name resolves to port number
+ <code class="computeroutput"><span class="number">0</span></code>, as per the documentation
+ (<a href="https://svn.boost.org/trac/boost/ticket/4690" target="_top">#4690</a>).
+ </li>
+<li class="listitem">
+ Fixed read operations so that they do not accept buffer sequences of type
+ <code class="computeroutput"><span class="identifier">const_buffers_1</span></code> (<a href="https://svn.boost.org/trac/boost/ticket/4746" target="_top">#4746</a>).
+ </li>
+<li class="listitem">
+ Redefined <code class="computeroutput"><span class="identifier">Protocol</span></code> and
+ <code class="computeroutput"><span class="identifier">id</span></code> to avoid clashing with
+ Objective-C++ keywords (<a href="https://svn.boost.org/trac/boost/ticket/4191" target="_top">#4191</a>).
+ </li>
+<li class="listitem">
+ Fixed a <code class="computeroutput"><span class="identifier">vector</span></code> reallocation
+ performance issue that can occur when there are many active <code class="computeroutput"><span class="identifier">deadline_timer</span></code> objects (<a href="https://svn.boost.org/trac/boost/ticket/4780" target="_top">#4780</a>).
+ </li>
+<li class="listitem">
+ Fixed the kqueue backend so that it compiles on NetBSD (<a href="https://svn.boost.org/trac/boost/ticket/4662" target="_top">#4662</a>).
+ </li>
+<li class="listitem">
+ Fixed the socket <code class="computeroutput"><span class="identifier">io_control</span><span class="special">()</span></code> implementation on 64-bit Mac OS X and
+ BSD platforms (<a href="https://svn.boost.org/trac/boost/ticket/4782" target="_top">#4782</a>).
+ </li>
+<li class="listitem">
+ Fixed a Windows-specific problem where failures from <code class="computeroutput"><span class="identifier">accept</span><span class="special">()</span></code> are incorrectly treated as successes
+ (<a href="https://svn.boost.org/trac/boost/ticket/4859" target="_top">#4859</a>).
+ </li>
+<li class="listitem">
+ Deprecated the separate compilation header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">impl</span><span class="special">/</span><span class="identifier">src</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">&gt;</span></code>
+ in favour of <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">impl</span><span class="special">/</span><span class="identifier">src</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code> (<a href="https://svn.boost.org/trac/boost/ticket/4560" target="_top">#4560</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h6"></a>
+ <span><a name="boost_asio.history.asio_1_4_6___boost_1_44"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_6___boost_1_44">Asio
+ 1.4.6 / Boost 1.44</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Reduced compile times. (Note that some programs may need to add additional
+ <code class="computeroutput"><span class="preprocessor">#include</span></code>s, e.g. if the
+ program uses <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code> but does not explicitly include
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.)
+ </li>
+<li class="listitem">
+ Reduced the size of generated code.
+ </li>
+<li class="listitem">
+ Refactored <code class="computeroutput"><span class="identifier">deadline_timer</span></code>
+ implementation to improve performance.
+ </li>
+<li class="listitem">
+ Improved multiprocessor scalability on Windows by using a dedicated hidden
+ thread to wait for timers.
+ </li>
+<li class="listitem">
+ Improved performance of <code class="computeroutput"><span class="identifier">asio</span><span class="special">::</span><span class="identifier">streambuf</span></code>
+ with <code class="computeroutput"><span class="identifier">async_read</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">async_read_until</span><span class="special">()</span></code>.
+ These read operations now use the existing capacity of the <code class="computeroutput"><span class="identifier">streambuf</span></code> when reading, rather than limiting
+ the read to 512 bytes.
+ </li>
+<li class="listitem">
+ Added optional separate compilation. To enable, add <code class="computeroutput"><span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">impl</span><span class="special">/</span><span class="identifier">src</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">&gt;</span></code> to one source file in a program, then
+ build the program with <code class="computeroutput"><span class="identifier">BOOST_ASIO_SEPARATE_COMPILATION</span></code>
+ defined in the project/compiler settings. Alternatively, <code class="computeroutput"><span class="identifier">BOOST_ASIO_DYN_LINK</span></code> may be defined to
+ build a separately-compiled Asio as part of a shared library.
+ </li>
+<li class="listitem">
+ Added new macro <code class="computeroutput"><span class="identifier">BOOST_ASIO_DISABLE_FENCED_BLOCK</span></code>
+ to permit the disabling of memory fences around completion handlers, even
+ if thread support is enabled.
+ </li>
+<li class="listitem">
+ Reworked timeout examples to better illustrate typical use cases.
+ </li>
+<li class="listitem">
+ Ensured that handler arguments are passed as <code class="computeroutput"><span class="keyword">const</span></code>
+ types.
+ </li>
+<li class="listitem">
+ Fixed incorrect parameter order in <code class="computeroutput"><span class="identifier">null_buffers</span></code>
+ variant of <code class="computeroutput"><span class="identifier">async_send_to</span></code>
+ (<a href="https://svn.boost.org/trac/boost/ticket/4170" target="_top">#4170</a>).
+ </li>
+<li class="listitem">
+ Ensured <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">char</span></code>
+ is used with <code class="computeroutput"><span class="identifier">isdigit</span></code> in
+ <code class="computeroutput"><span class="identifier">getaddrinfo</span></code> emulation (<a href="https://svn.boost.org/trac/boost/ticket/4201" target="_top">#4201</a>).
+ </li>
+<li class="listitem">
+ Fixed handling of very small but non-zero timeouts (<a href="https://svn.boost.org/trac/boost/ticket/4205" target="_top">#4205</a>).
+ </li>
+<li class="listitem">
+ Fixed crash that occurred when an empty buffer sequence was passed to a
+ composed read or write operation.
+ </li>
+<li class="listitem">
+ Added missing <code class="computeroutput"><span class="keyword">operator</span><span class="special">+</span></code>
+ overload in <code class="computeroutput"><span class="identifier">buffers_iterator</span></code>
+ (<a href="https://svn.boost.org/trac/boost/ticket/4382" target="_top">#4382</a>).
+ </li>
+<li class="listitem">
+ Implemented cancellation of <code class="computeroutput"><span class="identifier">null_buffers</span></code>
+ operations on Windows.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h7"></a>
+ <span><a name="boost_asio.history.asio_1_4_5___boost_1_43"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_5___boost_1_43">Asio
+ 1.4.5 / Boost 1.43</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Improved performance.
+ </li>
+<li class="listitem">
+ Reduced compile times.
+ </li>
+<li class="listitem">
+ Reduced the size of generated code.
+ </li>
+<li class="listitem">
+ Extended the guarantee that background threads don't call user code to
+ all asynchronous operations (<a href="https://svn.boost.org/trac/boost/ticket/3923" target="_top">#3923</a>).
+ </li>
+<li class="listitem">
+ Changed to use edge-triggered epoll on Linux.
+ </li>
+<li class="listitem">
+ Changed to use <code class="computeroutput"><span class="identifier">timerfd</span></code>
+ for dispatching timers on Linux, when available.
+ </li>
+<li class="listitem">
+ Changed to use one-shot notifications with kqueue on Mac OS X and BSD platforms.
+ </li>
+<li class="listitem">
+ Added a bitmask type <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">resolver_query_base</span><span class="special">::</span><span class="identifier">flags</span></code>
+ as per the TR2 proposal. This type prevents implicit conversion from <code class="computeroutput"><span class="keyword">int</span></code> to <code class="computeroutput"><span class="identifier">flags</span></code>,
+ allowing the compiler to catch cases where users incorrectly pass a numeric
+ port number as the service name.
+ </li>
+<li class="listitem">
+ Added <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">NOMINMAX</span></code>
+ for all Windows compilers. Users can define <code class="computeroutput"><span class="identifier">BOOST_ASIO_NO_NOMINMAX</span></code>
+ to suppress this definition (<a href="https://svn.boost.org/trac/boost/ticket/3901" target="_top">#3901</a>).
+ </li>
+<li class="listitem">
+ Fixed a bug where 0-byte asynchronous reads were incorrectly passing an
+ <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">eof</span></code> result to the completion handler
+ (<a href="https://svn.boost.org/trac/boost/ticket/4023" target="_top">#4023</a>).
+ </li>
+<li class="listitem">
+ Changed the <code class="computeroutput"><span class="identifier">io_control</span><span class="special">()</span></code> member functions to always call <code class="computeroutput"><span class="identifier">ioctl</span></code> on the underlying descriptor when
+ modifying blocking mode (<a href="https://svn.boost.org/trac/boost/ticket/3307" target="_top">#3307</a>).
+ </li>
+<li class="listitem">
+ Changed the resolver implementation to longer require the typedefs <code class="computeroutput"><span class="identifier">InternetProtocol</span><span class="special">::</span><span class="identifier">resolver_query</span></code> and <code class="computeroutput"><span class="identifier">InternetProtocol</span><span class="special">::</span><span class="identifier">resolver_iterator</span></code>,
+ as neither typedef is part of the documented <code class="computeroutput"><span class="identifier">InternetProtocol</span></code>
+ requirements. The corresponding typedefs in the <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">tcp</span></code>,
+ <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">udp</span></code> and <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">icmp</span></code>
+ classes have been deprecated.
+ </li>
+<li class="listitem">
+ Fixed out-of-band handling for reactors not based on <code class="computeroutput"><span class="identifier">select</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ Added new <code class="computeroutput"><span class="identifier">BOOST_ASIO_DISABLE_THREADS</span></code>
+ macro that allows Asio's threading support to be independently disabled.
+ </li>
+<li class="listitem">
+ Minor documentation improvements.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h8"></a>
+ <span><a name="boost_asio.history.asio_1_4_4___boost_1_42"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_4___boost_1_42">Asio
+ 1.4.4 / Boost 1.42</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Added a new HTTP Server 4 example illustrating the use of stackless coroutines
+ with Asio.
+ </li>
+<li class="listitem">
+ Changed handler allocation and invocation to use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">addressof</span></code>
+ to get the address of handler objects, rather than applying <code class="computeroutput"><span class="keyword">operator</span><span class="special">&amp;</span></code>
+ directly (<a href="https://svn.boost.org/trac/boost/ticket/2977" target="_top">#2977</a>).
+ </li>
+<li class="listitem">
+ Restricted MSVC buffer debugging workaround to 2008, as it causes a crash
+ with 2010 beta 2 (<a href="https://svn.boost.org/trac/boost/ticket/3796" target="_top">#3796</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/3822" target="_top">#3822</a>).
+ </li>
+<li class="listitem">
+ Fixed a problem with the lifetime of handler memory, where Windows needs
+ the <code class="computeroutput"><span class="identifier">OVERLAPPED</span></code> structure
+ to be valid until both the initiating function call has returned and the
+ completion packet has been delivered.
+ </li>
+<li class="listitem">
+ Don't block signals while performing system calls, but instead restart
+ the calls if they are interrupted.
+ </li>
+<li class="listitem">
+ Documented the guarantee made by strand objects with respect to order of
+ handler invocation.
+ </li>
+<li class="listitem">
+ Changed strands to use a pool of implementations, to make copying of strands
+ cheaper.
+ </li>
+<li class="listitem">
+ Ensured that kqueue support is enabled for BSD platforms (<a href="https://svn.boost.org/trac/boost/ticket/3626" target="_top">#3626</a>).
+ </li>
+<li class="listitem">
+ Added a <code class="computeroutput"><span class="identifier">boost_</span></code> prefix to
+ the <code class="computeroutput"><span class="keyword">extern</span> <span class="string">"C"</span></code>
+ thread entry point function (<a href="https://svn.boost.org/trac/boost/ticket/3809" target="_top">#3809</a>).
+ </li>
+<li class="listitem">
+ In <code class="computeroutput"><span class="identifier">getaddrinfo</span></code> emulation,
+ only check the socket type (<code class="computeroutput"><span class="identifier">SOCK_STREAM</span></code>
+ or <code class="computeroutput"><span class="identifier">SOCK_DGRAM</span></code>) if a service
+ name has been specified. This should allow the emulation to work with raw
+ sockets.
+ </li>
+<li class="listitem">
+ Added a workaround for some broken Windows firewalls that make a socket
+ appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
+ </li>
+<li class="listitem">
+ Applied a fix for reported excessive CPU usage under Solaris (<a href="https://svn.boost.org/trac/boost/ticket/3670" target="_top">#3670</a>).
+ </li>
+<li class="listitem">
+ Added some support for platforms that use older compilers such as g++ 2.95
+ (<a href="https://svn.boost.org/trac/boost/ticket/3743" target="_top">#3743</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h9"></a>
+ <span><a name="boost_asio.history.asio_1_4_3___boost_1_40"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_3___boost_1_40">Asio
+ 1.4.3 / Boost 1.40</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Added a new ping example to illustrate the use of ICMP sockets.
+ </li>
+<li class="listitem">
+ Changed the <code class="computeroutput"><span class="identifier">buffered</span><span class="special">*</span><span class="identifier">_stream</span><span class="special">&lt;&gt;</span></code>
+ templates to treat 0-byte reads and writes as no-ops, to comply with the
+ documented type requirements for <code class="computeroutput"><span class="identifier">SyncReadStream</span></code>,
+ <code class="computeroutput"><span class="identifier">AsyncReadStream</span></code>, <code class="computeroutput"><span class="identifier">SyncWriteStream</span></code> and <code class="computeroutput"><span class="identifier">AsyncWriteStream</span></code>.
+ </li>
+<li class="listitem">
+ Changed some instances of the <code class="computeroutput"><span class="keyword">throw</span></code>
+ keyword to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">throw_exception</span><span class="special">()</span></code>
+ to allow Asio to be used when exception support is disabled. Note that
+ the SSL wrappers still require exception support (<a href="https://svn.boost.org/trac/boost/ticket/2754" target="_top">#2754</a>).
+ </li>
+<li class="listitem">
+ Made Asio compatible with the OpenSSL 1.0 beta (<a href="https://svn.boost.org/trac/boost/ticket/3256" target="_top">#3256</a>).
+ </li>
+<li class="listitem">
+ Eliminated a redundant system call in the Solaris <code class="literal">/dev/poll</code>
+ backend.
+ </li>
+<li class="listitem">
+ Fixed a bug in resizing of the bucket array in the internal hash maps (<a href="https://svn.boost.org/trac/boost/ticket/3095" target="_top">#3095</a>).
+ </li>
+<li class="listitem">
+ Ensured correct propagation of the error code when a synchronous accept
+ fails (<a href="https://svn.boost.org/trac/boost/ticket/3216" target="_top">#3216</a>).
+ </li>
+<li class="listitem">
+ Ensured correct propagation of the error code when a synchronous read or
+ write on a Windows HANDLE fails.
+ </li>
+<li class="listitem">
+ Fixed failures reported when <code class="computeroutput"><span class="identifier">_GLIBCXX_DEBUG</span></code>
+ is defined (<a href="https://svn.boost.org/trac/boost/ticket/3098" target="_top">#3098</a>).
+ </li>
+<li class="listitem">
+ Fixed custom memory allocation support for timers (<a href="https://svn.boost.org/trac/boost/ticket/3107" target="_top">#3107</a>).
+ </li>
+<li class="listitem">
+ Tidied up various warnings reported by g++ (<a href="https://svn.boost.org/trac/boost/ticket/1341" target="_top">#1341</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2618" target="_top">#2618</a>).
+ </li>
+<li class="listitem">
+ Various documentation improvements, including more obvious hyperlinks to
+ function overloads, header file information, examples for the handler type
+ requirements, and adding enum values to the index (<a href="https://svn.boost.org/trac/boost/ticket/3157" target="_top">#3157</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2620" target="_top">#2620</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h10"></a>
+ <span><a name="boost_asio.history.asio_1_4_2___boost_1_39"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_2___boost_1_39">Asio
+ 1.4.2 / Boost 1.39</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Implement automatic resizing of the bucket array in the internal hash maps.
+ This is to improve performance for very large numbers of asynchronous operations
+ and also to reduce memory usage for very small numbers. A new macro <code class="computeroutput"><span class="identifier">BOOST_ASIO_HASH_MAP_BUCKETS</span></code> may be used
+ to tweak the sizes used for the bucket arrays. (N.B. this feature introduced
+ a bug which was fixed in Asio 1.4.3 / Boost 1.40.)
+ </li>
+<li class="listitem">
+ Add performance optimisation for the Windows IOCP backend for when no timers
+ are used.
+ </li>
+<li class="listitem">
+ Prevent locale settings from affecting formatting of TCP and UDP endpoints
+ (<a href="https://svn.boost.org/trac/boost/ticket/2682" target="_top">#2682</a>).
+ </li>
+<li class="listitem">
+ Fix a memory leak that occurred when an asynchronous SSL operation's completion
+ handler threw an exception (<a href="https://svn.boost.org/trac/boost/ticket/2910" target="_top">#2910</a>).
+ </li>
+<li class="listitem">
+ Fix the implementation of <code class="computeroutput"><span class="identifier">io_control</span><span class="special">()</span></code> so that it adheres to the documented
+ type requirements for IoControlCommand (<a href="https://svn.boost.org/trac/boost/ticket/2820" target="_top">#2820</a>).
+ </li>
+<li class="listitem">
+ Fix incompatibility between Asio and ncurses.h (<a href="https://svn.boost.org/trac/boost/ticket/2156" target="_top">#2156</a>).
+ </li>
+<li class="listitem">
+ On Windows, specifically handle the case when an overlapped <code class="computeroutput"><span class="identifier">ReadFile</span></code> call fails with <code class="computeroutput"><span class="identifier">ERROR_MORE_DATA</span></code>. This enables a hack
+ where a <code class="computeroutput"><span class="identifier">windows</span><span class="special">::</span><span class="identifier">stream_handle</span></code> can be used with a message-oriented
+ named pipe (<a href="https://svn.boost.org/trac/boost/ticket/2936" target="_top">#2936</a>).
+ </li>
+<li class="listitem">
+ Fix system call wrappers to always clear the error on success, as POSIX
+ allows successful system calls to modify errno (<a href="https://svn.boost.org/trac/boost/ticket/2953" target="_top">#2953</a>).
+ </li>
+<li class="listitem">
+ Don't include termios.h if <code class="computeroutput"><span class="identifier">BOOST_ASIO_DISABLE_SERIAL_PORT</span></code>
+ is defined (<a href="https://svn.boost.org/trac/boost/ticket/2917" target="_top">#2917</a>).
+ </li>
+<li class="listitem">
+ Cleaned up some more MSVC level 4 warnings (<a href="https://svn.boost.org/trac/boost/ticket/2828" target="_top">#2828</a>).
+ </li>
+<li class="listitem">
+ Various documentation fixes (<a href="https://svn.boost.org/trac/boost/ticket/2871" target="_top">#2871</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h11"></a>
+ <span><a name="boost_asio.history.asio_1_4_1___boost_1_38"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_1___boost_1_38">Asio
+ 1.4.1 / Boost 1.38</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Improved compatibility with some Windows firewall software.
+ </li>
+<li class="listitem">
+ Ensured arguments to <code class="computeroutput"><span class="identifier">windows</span><span class="special">::</span><span class="identifier">overlapped_ptr</span><span class="special">::</span><span class="identifier">complete</span><span class="special">()</span></code> are correctly passed to the completion
+ handler (<a href="https://svn.boost.org/trac/boost/ticket/2614" target="_top">#2614</a>).
+ </li>
+<li class="listitem">
+ Fixed a link problem and multicast failure on QNX (<a href="https://svn.boost.org/trac/boost/ticket/2504" target="_top">#2504</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2530" target="_top">#2530</a>).
+ </li>
+<li class="listitem">
+ Fixed a compile error in SSL support on MinGW / g++ 3.4.5.
+ </li>
+<li class="listitem">
+ Drop back to using a pipe for notification if eventfd is not available
+ at runtime on Linux (<a href="https://svn.boost.org/trac/boost/ticket/2683" target="_top">#2683</a>).
+ </li>
+<li class="listitem">
+ Various minor bug and documentation fixes (<a href="https://svn.boost.org/trac/boost/ticket/2534" target="_top">#2534</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2541" target="_top">#2541</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2607" target="_top">#2607</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2617" target="_top">#2617</a>,
+ <a href="https://svn.boost.org/trac/boost/ticket/2619" target="_top">#2619</a>).
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h12"></a>
+ <span><a name="boost_asio.history.asio_1_4_0___boost_1_37"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_4_0___boost_1_37">Asio
+ 1.4.0 / Boost 1.37</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Enhanced CompletionCondition concept with the signature <code class="computeroutput"><span class="identifier">size_t</span>
+ <span class="identifier">CompletionCondition</span><span class="special">(</span><span class="identifier">error_code</span> <span class="identifier">ec</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">total</span><span class="special">)</span></code>,
+ where the return value indicates the maximum number of bytes to be transferred
+ on the next read or write operation. (The old CompletionCondition signature
+ is still supported for backwards compatibility).
+ </li>
+<li class="listitem">
+ New windows::overlapped_ptr class to allow arbitrary overlapped I/O functions
+ (such as TransmitFile) to be used with Asio.
+ </li>
+<li class="listitem">
+ On recent versions of Linux, an eventfd descriptor is now used (rather
+ than a pipe) to interrupt a blocked select/epoll reactor.
+ </li>
+<li class="listitem">
+ Added const overloads of lowest_layer().
+ </li>
+<li class="listitem">
+ Synchronous read, write, accept and connect operations are now thread safe
+ (meaning that it is now permitted to perform concurrent synchronous operations
+ on an individual socket, if supported by the OS).
+ </li>
+<li class="listitem">
+ Reactor-based io_service implementations now use lazy initialisation to
+ reduce the memory usage of an io_service object used only as a message
+ queue.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h13"></a>
+ <span><a name="boost_asio.history.asio_1_2_0___boost_1_36"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_2_0___boost_1_36">Asio
+ 1.2.0 / Boost 1.36</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Added support for serial ports.
+ </li>
+<li class="listitem">
+ Added support for UNIX domain sockets.
+ </li>
+<li class="listitem">
+ Added support for raw sockets and ICMP.
+ </li>
+<li class="listitem">
+ Added wrappers for POSIX stream-oriented file descriptors (excluding regular
+ files).
+ </li>
+<li class="listitem">
+ Added wrappers for Windows stream-oriented <code class="computeroutput"><span class="identifier">HANDLE</span></code>s
+ such as named pipes (requires <code class="computeroutput"><span class="identifier">HANDLE</span></code>s
+ that work with I/O completion ports).
+ </li>
+<li class="listitem">
+ Added wrappers for Windows random-access <code class="computeroutput"><span class="identifier">HANDLE</span></code>s
+ such as files (requires <code class="computeroutput"><span class="identifier">HANDLE</span></code>s
+ that work with I/O completion ports).
+ </li>
+<li class="listitem">
+ Added support for reactor-style operations (i.e. they report readiness
+ but perform no I/O) using a new <code class="computeroutput"><span class="identifier">null_buffers</span></code>
+ type.
+ </li>
+<li class="listitem">
+ Added an iterator type for bytewise traversal of buffer sequences.
+ </li>
+<li class="listitem">
+ Added new <code class="computeroutput"><span class="identifier">read_until</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">async_read_until</span><span class="special">()</span></code>
+ overloads that take a user-defined function object for locating message
+ boundaries.
+ </li>
+<li class="listitem">
+ Added an experimental two-lock queue (enabled by defining <code class="computeroutput"><span class="identifier">BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE</span></code>) that
+ may provide better <code class="computeroutput"><span class="identifier">io_service</span></code>
+ scalability across many processors.
+ </li>
+<li class="listitem">
+ Various fixes, performance improvements, and more complete coverage of
+ the custom memory allocation support.
+ </li>
+</ul></div>
+<h4>
+<a name="boost_asio.history.h14"></a>
+ <span><a name="boost_asio.history.asio_1_0_0___boost_1_35"></a></span><a class="link" href="history.html#boost_asio.history.asio_1_0_0___boost_1_35">Asio
+ 1.0.0 / Boost 1.35</a>
+ </h4>
+<p>
+ First release of Asio as part of Boost.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2003-2012 Christopher M. Kohlhoff<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/is_error_code_enum_lt__ssl_errors__gt_/value.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../boost_asio.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>