Boost logo

Boost-Commit :

From: john_at_[hidden]
Date: 2008-03-16 05:48:44


Author: johnmaddock
Date: 2008-03-16 05:48:43 EDT (Sun, 16 Mar 2008)
New Revision: 43648
URL: http://svn.boost.org/trac/boost/changeset/43648

Log:
Added Boost.Thread news.
Text files modified:
   website/public_html/beta/feed/history.rss | 92 +++++++++++++++++++++++++++++++++++++++
   website/public_html/beta/feed/history/boost_1_35_0.qbk | 42 +++++++++++++++++
   website/public_html/beta/feed/news.rss | 92 +++++++++++++++++++++++++++++++++++++++
   3 files changed, 223 insertions(+), 3 deletions(-)

Modified: website/public_html/beta/feed/history.rss
==============================================================================
--- website/public_html/beta/feed/history.rss (original)
+++ website/public_html/beta/feed/history.rss 2008-03-16 05:48:43 EDT (Sun, 16 Mar 2008)
@@ -14,7 +14,7 @@
     <h3><span class="link">New Libraries</span></h3>
     <ul>
       <li>
- <span class="library"><a href="/libs/asio/index.html">ASIO</a>:</span> Portable networking,
+ <span class="library"><a href="/libs/asio/index.html">Asio</a>:</span> Portable networking,
         including sockets, timers, hostname resolution and socket iostreams, from
         Chris Kohlhoff.
       </li>
@@ -100,6 +100,79 @@
         </ul>
       </li>
       <li>
+ <span class="library"><a href="/libs/thread/index.html">Thread</a>:</span>
+ <ul>
+ <li>
+ Instances of boost::thread and of the various lock types are now movable.
+ </li>
+ <li>
+ Threads can be interrupted at interruption points.
+ </li>
+ <li>
+ Condition variables can now be used with any type that implements the
+ Lockable concept, through the use of <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code>
+ (<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition</span></code> is a typedef to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code>, provided for
+ backwards compatibility). <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable</span></code>
+ is provided as an optimization, and will only work with <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_lock</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">></span></code>
+ (<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span></code>).
+ </li>
+ <li>
+ Thread IDs are separated from boost::thread, so a thread can obtain it's
+ own ID (using <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>),
+ and IDs can be used as keys in associative containers, as they have the
+ full set of comparison operators.
+ </li>
+ <li>
+ Timeouts are now implemented using the Boost DateTime library, through
+ a typedef <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">system_time</span></code> for absolute timeouts,
+ and with support for relative timeouts in many cases. <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">xtime</span></code>
+ is supported for backwards compatibility only.
+ </li>
+ <li>
+ Locks are implemented as publicly accessible templates <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span></code>, <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_lock</span></code>,
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_lock</span></code>, and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">upgrade_lock</span></code>,
+ which are templated on the type of the mutex. The Lockable concept has
+ been extended to include publicly available <code><span class="identifier">lock</span><span class="special">()</span></code> and <code><span class="identifier">unlock</span><span class="special">()</span></code> member functions, which are used by
+ the lock types.
+ </li>
+ <li>
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code> has been removed, and the
+ functionality subsumed into <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span></code>.
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code> is left as a typedef, but
+ is no longer a separate class.
+ </li>
+ <li>
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code> has been removed,
+ and the functionality subsumed into <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_mutex</span></code>.
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code> is left as a typedef,
+ but is no longer a separate class.
+ </li>
+ <li>
+ <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">lock_ops</span></code> has been removed. Code that
+ relies on the <code><span class="identifier">lock_ops</span></code>
+ implementation detail will no longer work, as this has been removed,
+ as it is no longer necessary now that mutex types now have public <code><span class="identifier">lock</span><span class="special">()</span></code>
+ and <code><span class="identifier">unlock</span><span class="special">()</span></code>
+ member functions.
+ </li>
+ <li>
+ <code><span class="identifier">scoped_lock</span></code> constructors
+ with a second parameter of type bool are no longer provided. With previous
+ boost releases, <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span>
+ <span class="identifier">some_lock</span><span class="special">(</span><span class="identifier">some_mutex</span><span class="special">,</span><span class="keyword">false</span><span class="special">);</span></code>
+ could be used to create a lock object that was associated with a mutex,
+ but did not lock it on construction. This facility has now been replaced
+ with the constructor that takes a <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">defer_lock_type</span></code>
+ as the second parameter: <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span>
+ <span class="identifier">some_lock</span><span class="special">(</span><span class="identifier">some_mutex</span><span class="special">,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">defer_lock</span><span class="special">);</span></code>
+ </li>
+ <li>
+ The broken <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">read_write_mutex</span></code> has been replaced
+ with <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_mutex</span></code>.
+ </li>
+ </ul>
+ </li>
+ <li>
         <span class="library"><a href="/libs/wave/index.html">Wave</a>:</span> Standards conformant
         implementation of the mandated C99/C++ preprocessor functionality packed
         behind an easy to use iterator interface, from Hartmut Kaiser. Highlights:
@@ -159,6 +232,23 @@
           </li>
         </ul>
       </li>
+ <li>
+ <span class="library"><a href="/libs/functional/hash/index.html">Hash</a>:</span>
+ A TR1 hash
+ function object, from Daniel James. Highlights:
+ <ul>
+ <li>
+ Support for <code><span class="keyword">long</span> <span class="keyword">long</span></code>,
+ <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code>.
+ </li>
+ <li>
+ Improved the algorithm for hashing floating point numbers.
+ </li>
+ <li>
+ A few bug and warning fixes.
+ </li>
+ </ul>
+ </li>
     </ul>
   </div>
   <div id="version_1_35_0.supported_compilers">

Modified: website/public_html/beta/feed/history/boost_1_35_0.qbk
==============================================================================
--- website/public_html/beta/feed/history/boost_1_35_0.qbk (original)
+++ website/public_html/beta/feed/history/boost_1_35_0.qbk 2008-03-16 05:48:43 EDT (Sun, 16 Mar 2008)
@@ -12,7 +12,7 @@
 
 [section New Libraries]
 
-* [phrase library..[@/libs/asio/index.html ASIO]:] Portable networking,
+* [phrase library..[@/libs/asio/index.html Asio]:] Portable networking,
   including sockets, timers, hostname resolution and socket iostreams,
   from Chris Kohlhoff.
 * [phrase library..[@/libs/bimap/index.html Bimap]:] Boost.Bimap is a
@@ -59,6 +59,46 @@
     some existing code. See [@/libs/iostreams/doc/index.html?path=12 Release Notes]
     for details.
   * Numerous other bug fixes and optimizations.
+* [phrase library..[@/libs/thread/index.html Thread]:]
+ * Instances of boost::thread and of the various lock types are now movable.
+ * Threads can be interrupted at interruption points.
+ * Condition variables can now be used with any type that implements the
+ Lockable concept, through the use of `boost::condition_variable_any`
+ (`boost::condition` is a typedef to `boost::condition_variable_any`, provided for
+ backwards compatibility). `boost::condition_variable` is provided as an
+ optimization, and will only work with `boost::unique_lock<boost::mutex>`
+ (`boost::mutex::scoped_lock`).
+ * Thread IDs are separated from boost::thread, so a thread can obtain it's
+ own ID (using `boost::this_thread::get_id()`), and IDs can be used as keys in
+ associative containers, as they have the full set of comparison operators.
+ * Timeouts are now implemented using the Boost DateTime library, through a
+ typedef `boost::system_time` for absolute timeouts, and with support for relative
+ timeouts in many cases. `boost::xtime` is supported for backwards compatibility
+ only.
+ * Locks are implemented as publicly accessible templates `boost::lock_guard`,
+ `boost::unique_lock`, `boost::shared_lock`, and `boost::upgrade_lock`, which are
+ templated on the type of the mutex. The Lockable concept has been extended to
+ include publicly available `lock()` and `unlock()` member functions, which are used
+ by the lock types.
+ * `boost::try_mutex` has been removed, and the functionality subsumed into
+ `boost::mutex`. `boost::try_mutex` is left as a typedef, but is no longer a separate
+ class.
+ * `boost::recursive_try_mutex` has been removed, and the functionality
+ subsumed into `boost::recursive_mutex`. `boost::recursive_try_mutex` is left as a
+ typedef, but is no longer a separate class.
+ * `boost::detail::thread::lock_ops` has been removed. Code that relies on the
+ `lock_ops` implementation detail will no longer work, as this has been removed, as
+ it is no longer necessary now that mutex types now have public `lock()` and
+ `unlock()` member functions.
+ * `scoped_lock` constructors with a second parameter of type bool are no
+ longer provided. With previous boost releases,
+ `boost::mutex::scoped_lock some_lock(some_mutex,false);`
+ could be used to create a lock object that was associated with a mutex,
+ but did not lock it on construction. This facility has now been replaced with
+ the constructor that takes a `boost::defer_lock_type` as the second parameter:
+ `boost::mutex::scoped_lock some_lock(some_mutex,boost::defer_lock);`
+ * The broken `boost::read_write_mutex` has been replaced with
+ `boost::shared_mutex`.
 * [phrase library..[@/libs/wave/index.html Wave]:] Standards conformant implementation of the
   mandated C99/C++ preprocessor functionality packed behind an easy to use
   iterator interface, from Hartmut Kaiser. Highlights:

Modified: website/public_html/beta/feed/news.rss
==============================================================================
--- website/public_html/beta/feed/news.rss (original)
+++ website/public_html/beta/feed/news.rss 2008-03-16 05:48:43 EDT (Sun, 16 Mar 2008)
@@ -14,7 +14,7 @@
     &amp;lt;h3&amp;gt;&amp;lt;span class=&quot;link&quot;&amp;gt;New Libraries&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;
     &amp;lt;ul&amp;gt;
       &amp;lt;li&amp;gt;
- &amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/asio/index.html&quot;&amp;gt;ASIO&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Portable networking,
+ &amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/asio/index.html&quot;&amp;gt;Asio&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Portable networking,
         including sockets, timers, hostname resolution and socket iostreams, from
         Chris Kohlhoff.
       &amp;lt;/li&amp;gt;
@@ -100,6 +100,79 @@
         &amp;lt;/ul&amp;gt;
       &amp;lt;/li&amp;gt;
       &amp;lt;li&amp;gt;
+ &amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/thread/index.html&quot;&amp;gt;Thread&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt;
+ &amp;lt;ul&amp;gt;
+ &amp;lt;li&amp;gt;
+ Instances of boost::thread and of the various lock types are now movable.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Threads can be interrupted at interruption points.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Condition variables can now be used with any type that implements the
+ Lockable concept, through the use of &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable_any&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ (&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is a typedef to &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable_any&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, provided for
+ backwards compatibility). &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ is provided as an optimization, and will only work with &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unique_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ (&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;).
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Thread IDs are separated from boost::thread, so a thread can obtain it's
+ own ID (using &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;this_thread&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;get_id&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;),
+ and IDs can be used as keys in associative containers, as they have the
+ full set of comparison operators.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Timeouts are now implemented using the Boost DateTime library, through
+ a typedef &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;system_time&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; for absolute timeouts,
+ and with support for relative timeouts in many cases. &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;xtime&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ is supported for backwards compatibility only.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Locks are implemented as publicly accessible templates &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_guard&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unique_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;shared_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;upgrade_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
+ which are templated on the type of the mutex. The Lockable concept has
+ been extended to include publicly available &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unlock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; member functions, which are used by
+ the lock types.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed, and the
+ functionality subsumed into &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is left as a typedef, but
+ is no longer a separate class.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed,
+ and the functionality subsumed into &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is left as a typedef,
+ but is no longer a separate class.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;detail&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;thread&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_ops&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed. Code that
+ relies on the &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_ops&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ implementation detail will no longer work, as this has been removed,
+ as it is no longer necessary now that mutex types now have public &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unlock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ member functions.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; constructors
+ with a second parameter of type bool are no longer provided. With previous
+ boost releases, &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;
+ &amp;lt;span class=&quot;identifier&quot;&amp;gt;some_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;,&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;keyword&quot;&amp;gt;false&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;);&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ could be used to create a lock object that was associated with a mutex,
+ but did not lock it on construction. This facility has now been replaced
+ with the constructor that takes a &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;defer_lock_type&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ as the second parameter: &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;
+ &amp;lt;span class=&quot;identifier&quot;&amp;gt;some_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;,&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;defer_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;);&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ The broken &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;read_write_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been replaced
+ with &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;shared_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;/ul&amp;gt;
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
         &amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/wave/index.html&quot;&amp;gt;Wave&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Standards conformant
         implementation of the mandated C99/C++ preprocessor functionality packed
         behind an easy to use iterator interface, from Hartmut Kaiser. Highlights:
@@ -159,6 +232,23 @@
           &amp;lt;/li&amp;gt;
         &amp;lt;/ul&amp;gt;
       &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ &amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/functional/hash/index.html&quot;&amp;gt;Hash&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt;
+ A TR1 hash
+ function object, from Daniel James. Highlights:
+ &amp;lt;ul&amp;gt;
+ &amp;lt;li&amp;gt;
+ Support for &amp;lt;code&amp;gt;&amp;lt;span class=&quot;keyword&quot;&amp;gt;long&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;keyword&quot;&amp;gt;long&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
+ &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;std&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;complex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ Improved the algorithm for hashing floating point numbers.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;li&amp;gt;
+ A few bug and warning fixes.
+ &amp;lt;/li&amp;gt;
+ &amp;lt;/ul&amp;gt;
+ &amp;lt;/li&amp;gt;
     &amp;lt;/ul&amp;gt;
   &amp;lt;/div&amp;gt;
   &amp;lt;div id=&quot;version_1_35_0.supported_compilers&quot;&amp;gt;


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk