Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78029 - in trunk: boost/thread boost/thread/detail libs/thread/doc libs/thread/test libs/thread/test/sync/futures/future libs/thread/test/sync/futures/packaged_task libs/thread/test/sync/futures/promise
From: vicente.botet_at_[hidden]
Date: 2012-04-16 16:49:23


Author: viboes
Date: 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
New Revision: 78029
URL: http://svn.boost.org/trac/boost/changeset/78029

Log:
Thread: Change to version 3 and don't deprecate legacy time related functions, even if they are not part of the concepts since version 3
Text files modified:
   trunk/boost/thread/detail/config.hpp | 28 ++++++------
   trunk/boost/thread/detail/thread.hpp | 18 ++++---
   trunk/boost/thread/future.hpp | 10 +--
   trunk/libs/thread/doc/changes.qbk | 10 ++--
   trunk/libs/thread/doc/compliance.qbk | 2
   trunk/libs/thread/doc/condition_variables.qbk | 40 +++++++++---------
   trunk/libs/thread/doc/configuration.qbk | 52 +++++++++++++++----------
   trunk/libs/thread/doc/future_ref.qbk | 40 +++++++++---------
   trunk/libs/thread/doc/mutex_concepts.qbk | 34 ++++++++--------
   trunk/libs/thread/doc/mutexes.qbk | 12 ++--
   trunk/libs/thread/doc/once.qbk | 6 +-
   trunk/libs/thread/doc/shared_mutex_ref.qbk | 20 ++++----
   trunk/libs/thread/doc/thread.qbk | 2
   trunk/libs/thread/doc/thread_ref.qbk | 50 ++++++++++++------------
   trunk/libs/thread/test/Jamfile.v2 | 82 ++++++++++++++++++++--------------------
   trunk/libs/thread/test/sync/futures/future/copy_assign_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/future/copy_ctor_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/future/default_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/future/dtor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/future/get_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/future/move_assign_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/future/move_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/future/share_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/alloc_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/copy_assign_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/copy_ctor_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/default_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/dtor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/func_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/get_future_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/member_swap_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/move_assign_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/move_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/non_member_swap_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/operator_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/reset_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/packaged_task/use_allocator_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/alloc_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/copy_assign_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/copy_ctor_fail.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/default_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/dtor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/get_future_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/move_assign_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/move_ctor_pass.cpp | 2
   trunk/libs/thread/test/sync/futures/promise/use_allocator_pass.cpp | 2
   46 files changed, 239 insertions(+), 229 deletions(-)

Modified: trunk/boost/thread/detail/config.hpp
==============================================================================
--- trunk/boost/thread/detail/config.hpp (original)
+++ trunk/boost/thread/detail/config.hpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -30,12 +30,12 @@
 #define BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
 #endif
 
-// Default version is 1
+// Default version is 2
 #if !defined BOOST_THREAD_VERSION
-#define BOOST_THREAD_VERSION 1
+#define BOOST_THREAD_VERSION 2
 #else
-#if BOOST_THREAD_VERSION!=1 && BOOST_THREAD_VERSION!=2
-#error "BOOST_THREAD_VERSION must be 1 or 2"
+#if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3
+#error "BOOST_THREAD_VERSION must be 2 or 3"
 #endif
 #endif
 
@@ -64,16 +64,16 @@
 #endif
 #endif
 
-#if BOOST_THREAD_VERSION==1
+#if BOOST_THREAD_VERSION==2
 #if ! defined BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY
 #define BOOST_THREAD_PROMISE_LAZY
 #endif
-#if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0
-#define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
+#if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
+#define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
 #endif
 #endif
 
-#if BOOST_THREAD_VERSION==2
+#if BOOST_THREAD_VERSION==3
 #if ! defined BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11
 #define BOOST_THREAD_PROVIDES_ONCE_CXX11
 #endif
@@ -98,8 +98,8 @@
 #if ! defined BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN
 #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
 #endif
-#if ! defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
-#define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0
+#if ! defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+#define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
 #endif
 #if ! defined BOOST_THREAD_DONT_USE_MOVE
 #if ! defined BOOST_THREAD_USES_MOVE
@@ -114,10 +114,10 @@
 #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
 #endif
 
-// BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 defined by default up to Boost 1.52
-// BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0 defined by default up to Boost 1.55
-#if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0
-#define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
+// BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.52
+// BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55
+#if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
+#define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
 #endif
 
 #if BOOST_WORKAROUND(__BORLANDC__, < 0x600)

Modified: trunk/boost/thread/detail/thread.hpp
==============================================================================
--- trunk/boost/thread/detail/thread.hpp (original)
+++ trunk/boost/thread/detail/thread.hpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -364,7 +364,7 @@
         }
 #endif
 #if defined(BOOST_THREAD_PLATFORM_WIN32)
- bool timed_join(const system_time& abs_time); // DEPRECATED V2
+ bool timed_join(const system_time& abs_time);
 
 #ifdef BOOST_THREAD_USES_CHRONO
         bool try_join_until(const chrono::time_point<chrono::system_clock, chrono::nanoseconds>& tp);
@@ -372,7 +372,7 @@
     public:
 
 #else
- bool timed_join(const system_time& abs_time) // DEPRECATED V2
+ bool timed_join(const system_time& abs_time)
         {
           struct timespec const ts=detail::get_timespec(abs_time);
           return do_try_join_until(ts);
@@ -396,7 +396,7 @@
 #endif
 
         template<typename TimeDuration>
- inline bool timed_join(TimeDuration const& rel_time) // DEPRECATED V2
+ inline bool timed_join(TimeDuration const& rel_time)
         {
             return timed_join(get_system_time()+rel_time);
         }
@@ -409,16 +409,18 @@
         typedef detail::thread_data_base::native_handle_type native_handle_type;
         native_handle_type native_handle();
 
+#if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ // Use thread::id when comparisions are needed
         // backwards compatibility
- bool operator==(const thread& other) const; // DEPRECATED V2
- bool operator!=(const thread& other) const; // DEPRECATED V2
-
+ bool operator==(const thread& other) const;
+ bool operator!=(const thread& other) const;
+#endif
         static inline void yield() BOOST_NOEXCEPT
         {
             this_thread::yield();
         }
 
- static inline void sleep(const system_time& xt) // DEPRECATED V2
+ static inline void sleep(const system_time& xt)
         {
             this_thread::sleep(xt);
         }
@@ -457,7 +459,7 @@
         bool BOOST_THREAD_DECL interruption_enabled() BOOST_NOEXCEPT;
         bool BOOST_THREAD_DECL interruption_requested() BOOST_NOEXCEPT;
 
- inline BOOST_SYMBOL_VISIBLE void sleep(xtime const& abs_time) // DEPRECATED V2
+ inline BOOST_SYMBOL_VISIBLE void sleep(xtime const& abs_time)
         {
             sleep(system_time(abs_time));
         }

Modified: trunk/boost/thread/future.hpp
==============================================================================
--- trunk/boost/thread/future.hpp (original)
+++ trunk/boost/thread/future.hpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -489,7 +489,7 @@
                 return static_cast<shared_future_get_result_type>(*result);
             }
 
- future_state::state get_state() // DEPRECATED V2
+ future_state::state get_state()
             {
                 boost::lock_guard<boost::mutex> guard(mutex);
                 if(!done)
@@ -535,7 +535,7 @@
             {
                 wait();
             }
- future_state::state get_state() // DEPRECATED V2
+ future_state::state get_state()
             {
                 boost::lock_guard<boost::mutex> guard(mutex);
                 if(!done)
@@ -547,7 +547,6 @@
                     return future_state::ready;
                 }
             }
-
         private:
             future_object(future_object const&);
             future_object& operator=(future_object const&);
@@ -862,7 +861,7 @@
         }
 
         // functions to check state, and wait for ready
- state get_state() const BOOST_NOEXCEPT // DEPRECATED V2
+ state get_state() const BOOST_NOEXCEPT
         {
             if(!future_)
             {
@@ -871,7 +870,6 @@
             return future_->get_state();
         }
 
-
         bool is_ready() const BOOST_NOEXCEPT
         {
             return get_state()==future_state::ready;
@@ -1030,7 +1028,7 @@
         }
 
         // functions to check state, and wait for ready
- state get_state() const BOOST_NOEXCEPT // DEPRECATED V2
+ state get_state() const BOOST_NOEXCEPT
         {
             if(!future_)
             {

Modified: trunk/libs/thread/doc/changes.qbk
==============================================================================
--- trunk/libs/thread/doc/changes.qbk (original)
+++ trunk/libs/thread/doc/changes.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -8,7 +8,7 @@
 
 [section:changes History]
 
-[heading Version 2.0.0 - boost 1.50]
+[heading Version 3.0.0 - boost 1.50]
 
 New Features:
 
@@ -54,7 +54,7 @@
 [/
 Deprecated features since boost 1.50 available only until boost 1.55:
 
-These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0. These deprecated features will be only available until boost 1.55, that is you have 1 year and a half to move to the new features.
+These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. These deprecated features will be only available until boost 1.55, that is you have 1 year and a half to move to the new features.
 
 * Time related functions don't using the Boost.Chrono library, use the chrono overloads instead.
 
@@ -66,7 +66,7 @@
 * #6269 c++11 compliance: thread move assignment should call terminate if joinable
 ]
 
-[heading boost 1.49]
+[heading Version 2.1.1 - boost 1.49]
 
 Fixed Bugs:
 
@@ -97,7 +97,7 @@
 * [@http://svn.boost.org/trac/boost/ticket/6207 #6207] shared_lock swap compiler error on clang 3.0 c++11.
 * [@http://svn.boost.org/trac/boost/ticket/6208 #6208] try_lock_wrapper swap compiler error on clang 3.0 c++11.
 
-[heading Changes since boost 1.40]
+[heading Version 2.1.0 - Changes since boost 1.40]
 
 The 1.41.0 release of Boost adds futures to the thread library. There are also a few minor changes.
 
@@ -117,7 +117,7 @@
 
 * Backwards-compatibility overloads added for `timed_lock` and `timed_wait` functions to allow use of `xtime` for timeouts.
 
-[heading Changes since boost 1.34]
+[heading Version 2.0.0 - Changes since boost 1.34]
 
 Almost every line of code in __boost_thread__ has been changed since the 1.34 release of boost. However, most of the interface
 changes have been extensions, so the new code is largely backwards-compatible with the old code. The new features and breaking

Modified: trunk/libs/thread/doc/compliance.qbk
==============================================================================
--- trunk/libs/thread/doc/compliance.qbk (original)
+++ trunk/libs/thread/doc/compliance.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -66,7 +66,7 @@
     [[30.6.3] [Class future_error] [Yes] [-] [-]]
     [[30.6.4] [Shared state] [-] [-] [-]]
     [[30.6.5] [Class template promise] [Partial] [allocator] [#6228]]
- [[30.6.6] [Class template future] [Partial] [allocator,unique_future is the closest to future, renamed in V2] [#6228]]
+ [[30.6.6] [Class template future] [Partial] [allocator,unique_future is the closest to future, renamed in V3] [#6228]]
     [[30.6.7] [Class template shared_future] [Partial] [allocator] [#6228]]
     [[30.6.8] [Function template async] [No] [async] [#4710]]
     [[30.6.9] [Class template packaged_task] [Partial] [move] [#yyyy]]

Modified: trunk/libs/thread/doc/condition_variables.qbk
==============================================================================
--- trunk/libs/thread/doc/condition_variables.qbk (original)
+++ trunk/libs/thread/doc/condition_variables.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -130,18 +130,18 @@
                 const chrono::duration<Rep, Period>& d,
                 Predicate pred);
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time);
             template<typename duration_type>
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time); // DEPRECATED V2
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time);
             template<typename predicate_type>
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time,predicate_type predicate); // DEPRECATED V2
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time,predicate_type predicate);
             template<typename duration_type,typename predicate_type>
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time,predicate_type predicate); // DEPRECATED V2
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::xtime const& abs_time); // DEPRECATED V2
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time,predicate_type predicate);
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::xtime const& abs_time);
 
             template<typename predicate_type>
- bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::xtime const& abs_time,predicate_type predicate); // DEPRECATED V2
+ bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::xtime const& abs_time,predicate_type predicate);
         #endif
 
         };
@@ -243,7 +243,7 @@
 
 [endsect]
 
-[section:timed_wait `bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time)` DEPRECATED V2]
+[section:timed_wait `bool timed_wait(boost::unique_lock<boost::mutex>& lock,boost::system_time const& abs_time)`]
 
 [variablelist
 
@@ -274,7 +274,7 @@
 
 [endsect]
 
-[section:timed_wait_rel `template<typename duration_type> bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time)` DEPRECATED V2]
+[section:timed_wait_rel `template<typename duration_type> bool timed_wait(boost::unique_lock<boost::mutex>& lock,duration_type const& rel_time)`]
 
 [variablelist
 
@@ -307,7 +307,7 @@
 
 [endsect]
 
-[section:timed_wait_predicate `template<typename predicate_type> bool timed_wait(boost::unique_lock<boost::mutex>& lock, boost::system_time const& abs_time, predicate_type pred)` DEPRECATED V2]
+[section:timed_wait_predicate `template<typename predicate_type> bool timed_wait(boost::unique_lock<boost::mutex>& lock, boost::system_time const& abs_time, predicate_type pred)`]
 
 [variablelist
 
@@ -481,19 +481,19 @@
                 const chrono::duration<Rep, Period>& d,
                 Predicate pred);
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
             template<typename lock_type>
- bool timed_wait(lock_type& lock,boost::system_time const& abs_time) // DEPRECATED V2;
+ bool timed_wait(lock_type& lock,boost::system_time const& abs_time);
             template<typename lock_type,typename duration_type>
- bool timed_wait(lock_type& lock,duration_type const& rel_time) // DEPRECATED V2;
+ bool timed_wait(lock_type& lock,duration_type const& rel_time);
             template<typename lock_type,typename predicate_type>
- bool timed_wait(lock_type& lock,boost::system_time const& abs_time,predicate_type predicate) // DEPRECATED V2;
+ bool timed_wait(lock_type& lock,boost::system_time const& abs_time,predicate_type predicate);
             template<typename lock_type,typename duration_type,typename predicate_type>
- bool timed_wait(lock_type& lock,duration_type const& rel_time,predicate_type predicate) // DEPRECATED V2;
+ bool timed_wait(lock_type& lock,duration_type const& rel_time,predicate_type predicate);
             template<typename lock_type>
- bool timed_wait(lock_type>& lock,boost::xtime const& abs_time) // DEPRECATED V2;
+ bool timed_wait(lock_type>& lock,boost::xtime const& abs_time);
             template<typename lock_type,typename predicate_type>
- bool timed_wait(lock_type& lock,boost::xtime const& abs_time,predicate_type predicate) // DEPRECATED V2;
+ bool timed_wait(lock_type& lock,boost::xtime const& abs_time,predicate_type predicate);
         #endif
         };
     }
@@ -588,7 +588,7 @@
 
 [endsect]
 
-[section:timed_wait `template<typename lock_type> bool timed_wait(lock_type& lock,boost::system_time const& abs_time)` DEPRECATED V2]
+[section:timed_wait `template<typename lock_type> bool timed_wait(lock_type& lock,boost::system_time const& abs_time)`]
 
 [variablelist
 
@@ -613,7 +613,7 @@
 
 [endsect]
 
-[section:timed_wait_rel `template<typename lock_type,typename duration_type> bool timed_wait(lock_type& lock,duration_type const& rel_time)` DEPRECATED V2]
+[section:timed_wait_rel `template<typename lock_type,typename duration_type> bool timed_wait(lock_type& lock,duration_type const& rel_time)`]
 
 [variablelist
 
@@ -640,7 +640,7 @@
 
 [endsect]
 
-[section:timed_wait_predicate `template<typename lock_type,typename predicate_type> bool timed_wait(lock_type& lock, boost::system_time const& abs_time, predicate_type pred)` DEPRECATED V2]
+[section:timed_wait_predicate `template<typename lock_type,typename predicate_type> bool timed_wait(lock_type& lock, boost::system_time const& abs_time, predicate_type pred)`]
 
 [variablelist
 

Modified: trunk/libs/thread/doc/configuration.qbk
==============================================================================
--- trunk/libs/thread/doc/configuration.qbk (original)
+++ trunk/libs/thread/doc/configuration.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -26,9 +26,10 @@
 
 [section:move Boost.Move]
 
-Boost.Thread uses by default Boost.Move emulation on compilers that don't support Rvalue references. For backward compatibility and also for compilers that don't work well with Boost.Move the user can define `BOOST_THREAD_DONT_USE_MOVE`.
+Boost.Thread uses by default an internal move semantic implementation. Since version 3.0.0 you can use the move emulation emulation provided by Boost.Move.
 
-`BOOST_THREAD_USES_MOVE` is defined when Boost.Thread uses Boost.Move.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_USES_MOVE ` if you want to use Boost.Move interface.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_USE_MOVE ` if you want to use boost::unique_future.
 
 [endsect]
 
@@ -36,7 +37,8 @@
 
 The shared mutex implementation on Windows platform provides currently less functionality than the generic one that is used for PTheads based platforms. In order to have access to these functions, the user needs to define `BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN` to use the generic implementation, that while could be less efficient, provides all the functions.
 
-Define `BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN` if you don't want these functions.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN ` if you don't want these features.
 
 [endsect]
 
@@ -45,8 +47,8 @@
 Boost.Threads includes in version 2 the Shared Locking Upwards Conversion as defined in [@http://home.roadrunner.com/~hinnant/bloomington/shared_mutex.html Shared Locking].
 These conversions need to be used carefully to avoid deadlock or livelock. The user need to define explicitly `BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSION` to get these upwards conversions.
 
-Define `BOOST_THREAD_DONT_PROVIDE_SHARED_MUTEX_UPWARDS_CONVERSION` if you don't want these functions.
-
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSION ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_SHARED_MUTEX_UPWARDS_CONVERSION ` if you don't want these features.
 
 [endsect]
 
@@ -54,33 +56,35 @@
 
 In [@http://home.roadrunner.com/~hinnant/bloomington/shared_mutex.html Shared Locking] the lock conversions are explicit. As this explicit conversion breaks the lock interfaces, it is provided only if the `BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION` is defined.
 
-Define `BOOST_THREAD_DONT_PROVIDE_EXPLICIT_LOCK_CONVERSION` if you don't want these functions.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_EXPLICIT_LOCK_CONVERSION ` if you don't want these features.
 
 [endsect]
 
 
 [section:future unique_future versus future]
 
-C++11 uses `std::future`. Versions of Boost.Thread previous to version 2.0.0 uses `boost:unique_future`.
-Since version 2.0.0 `boost::future` replaces `boost::unique_future` when `BOOST_THREAD_PROVIDES_FUTURE` is defined. The documentation doesn't contains anymore however `boost::unique_future`.
+C++11 uses `std::future`. Versions of Boost.Thread previous to version 3.0.0 uses `boost:unique_future`.
+Since version 3.0.0 `boost::future` replaces `boost::unique_future` when `BOOST_THREAD_PROVIDES_FUTURE` is defined. The documentation doesn't contains anymore however `boost::unique_future`.
 
-Define `BOOST_THREAD_DONT_PROVIDE_FUTURE ` if you don't want these functions.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_FUTURE` if you want to use boost::future.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_FUTURE` if you want to use boost::unique_future.
 
 [endsect]
 
 [section:lazy promise lazy initialization]
 
-C++11 promise initialize the associated state at construction time. Versions of Boost.Thread previous to version 2.0.0 initialize it lazily at any point in time in which this associated state is needed.
+C++11 promise initialize the associated state at construction time. Versions of Boost.Thread previous to version 3.0.0 initialize it lazily at any point in time in which this associated state is needed.
 
-Since version 2.0.0 this difference in behavior can be configured. When `BOOST_THREAD_PROVIDES_PROMISE_LAZY` is defined the backward compatible behavior is provided.
+Since version 3.0.0 this difference in behavior can be configured. When `BOOST_THREAD_PROVIDES_PROMISE_LAZY` is defined the backward compatible behavior is provided.
 
-Define `BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY ` if you don't want this feature.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY ` if you want to use boost::future.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_PROVIDES_PROMISE_LAZY ` if you want to use boost::unique_future.
 
 [endsect]
 
 [section:alloc promise Allocator constructor]
 
-
 C++11 std::promise provides constructors with allocators.
 
     template <typename R>
@@ -100,7 +104,7 @@
 
     template <class T, class Alloc> struct uses_allocator;
 
-Since version 2.0.0 Boost.Thread implements this constructor using the following interface
+Since version 3.0.0 Boost.Thread implements this constructor using the following interface
 
     namespace boost
     {
@@ -118,7 +122,8 @@
 
 which introduces a dependency on Boost.Container. This feature is provided only if `BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS` is defined.
 
-Define `BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS ` if you don't want this feature.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS ` if you don't want these features.
 
 [endsect]
 
@@ -126,7 +131,11 @@
 
 C++11 has a different semantic for the thread destructor and the move assignment. Instead of detaching the thread, calls to terminate() if the thread was joinable. When `BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE` and `BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE` is defined Boost.Thread provides the C++ semantic.
 
-Define `BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE` or `BOOST_THREAD_DONT_PROVIDE_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE` if you don't want these features.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE ` if you don't want these features.
+
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE ` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE ` if you don't want these features.
 
 [endsect]
 
@@ -140,15 +149,16 @@
 
   boost::once_flag once;
 
-Define `BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11 ` if you don't want this feature.
+When `BOOST_THREAD_VERSION==2` define `BOOST_THREAD_PROVIDES_ONCE_CXX11` if you want these features.
+When `BOOST_THREAD_VERSION==3` define `BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11` if you don't want these features.
 
 [endsect]
 
 [section:deprecated Deprecated]
 
-Version 2.0.0 deprecates some Boost.Thread features.
+Version 3.0.0 deprecates some Boost.Thread features.
 
-These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define `BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0`. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define `BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0`. These deprecated features will be only available until boost 1.55, that is you have 1 year and a half to move to the new features.
+These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define `BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0`. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define `BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0`. These deprecated features will be only available until boost 1.55, that is you have 1 year and a half to move to the new features.
 
 
 [endsect]
@@ -160,7 +170,7 @@
 The default version is 1. In this case the following breaking or extending macros are defined if the opposite is not requested:
 
 * `BOOST_THREAD_PROVIDES_PROMISE_LAZY`
-* `BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0`
+* `BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0`
 
 The user can request the version 2 by defining `BOOST_THREAD_VERSION` to 2. In this case the following breaking or extending macros are defined if the opposite is not requested:
 
@@ -174,7 +184,7 @@
 * Breaking change `BOOST_THREAD_PROVIDES_ONCE_CXX11`
 
 * Breaking change `BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY`
-* Breaking change `BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V2_0_0`
+* Breaking change `BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0`
 
 [endsect]
 

Modified: trunk/libs/thread/doc/future_ref.qbk
==============================================================================
--- trunk/libs/thread/doc/future_ref.qbk (original)
+++ trunk/libs/thread/doc/future_ref.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -11,8 +11,8 @@
 
   namespace boost
   {
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- namespace future_state // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ namespace future_state
     {
         enum state {uninitialized, waiting, ready, moved};
     }
@@ -85,7 +85,7 @@
     unsigned wait_for_any(F1& f1,Fs&... fs);
 
 
-[section:future_state Enumeration `state` DEPRECATED V2]
+[section:future_state Enumeration `state`]
 
     namespace future_state
     {
@@ -195,14 +195,14 @@
         template <class Clock, class Duration>
         future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
         template<typename Duration>
- bool timed_wait(Duration const& rel_time) const; // DEPRECATED V2
- bool timed_wait_until(boost::system_time const& abs_time) const; // DEPRECATED V2
+ bool timed_wait(Duration const& rel_time) const;
+ bool timed_wait_until(boost::system_time const& abs_time) const;
     #endif
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- typedef future_state::state state; // DEPRECATED V2
- state get_state() const; //DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ typedef future_state::state state;
+ state get_state() const;
     #endif
     };
 
@@ -347,7 +347,7 @@
 
 [endsect]
 
-[section:timed_wait_duration Member function `timed_wait()` DEPRECATED V2]
+[section:timed_wait_duration Member function `timed_wait()`]
 
     template<typename Duration>
     bool timed_wait(Duration const& wait_duration);
@@ -374,7 +374,7 @@
 
 [endsect]
 
-[section:timed_wait_absolute Member function `timed_wait()` DEPRECATED V2]
+[section:timed_wait_absolute Member function `timed_wait()`]
 
     bool timed_wait(boost::system_time const& wait_timeout);
 
@@ -452,7 +452,7 @@
 
 [endsect]
 
-[section:get_state Member function `get_state()` DEPRECATED V2]
+[section:get_state Member function `get_state()`]
 
     future_state::state get_state();
 
@@ -511,13 +511,13 @@
         template <class Clock, class Duration>
         future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
         template<typename Duration>
- bool timed_wait(Duration const& rel_time) const; // DEPRECATED V2
- bool timed_wait_until(boost::system_time const& abs_time) const; // DEPRECATED V2
+ bool timed_wait(Duration const& rel_time) const;
+ bool timed_wait_until(boost::system_time const& abs_time) const;
     #endif
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- state get_state() const noexcept; // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ state get_state() const noexcept;
     #endif
     };
 
@@ -581,7 +581,7 @@
 
 [endsect]
 
-[section:timed_wait_duration Member function `timed_wait()` DEPRECATED V2]
+[section:timed_wait_duration Member function `timed_wait()`]
 
     template<typename Duration>
     bool timed_wait(Duration const& wait_duration);
@@ -608,7 +608,7 @@
 
 [endsect]
 
-[section:timed_wait_absolute Member function `timed_wait()` DEPRECATED V2]
+[section:timed_wait_absolute Member function `timed_wait()`]
 
     bool timed_wait(boost::system_time const& wait_timeout);
 
@@ -685,7 +685,7 @@
 
 [endsect]
 
-[section:get_state Member function `get_state()` DEPRECATED V2]
+[section:get_state Member function `get_state()`]
 
     future_state::state get_state();
 

Modified: trunk/libs/thread/doc/mutex_concepts.qbk
==============================================================================
--- trunk/libs/thread/doc/mutex_concepts.qbk (original)
+++ trunk/libs/thread/doc/mutex_concepts.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -144,9 +144,9 @@
 ]
 [endsect]
 
-[heading Deprecated V2]
+[heading Deprecated V3.0.0]
 
-The following expressions were required on version 1, but are now deprecated.
+The following expressions were required on version 2, but are now deprecated.
 
 [*Variables:]
 
@@ -155,12 +155,12 @@
 
 [*Expressions:]
 
-* `m.__timed_lock_duration(rel_time)` DEPRECATED V2
-* `m.__timed_lock(abs_time)` DEPRECATED V2
+* `m.__timed_lock_duration(rel_time)`
+* `m.__timed_lock(abs_time)`
 
 Lock ownership acquired through a call to __timed_lock_ref__ must be released through a call to __unlock_ref__.
 
-[section:timed_lock `m.timed_lock(abs_time)` DEPRECATED V2]
+[section:timed_lock `m.timed_lock(abs_time)`]
 
 [variablelist
 
@@ -175,7 +175,7 @@
 ]
 [endsect]
 
-[section:timed_lock_duration `m.timed_lock(rel_time)` DEPRECATED V2]
+[section:timed_lock_duration `m.timed_lock(rel_time)`]
 
 [variablelist
 
@@ -292,7 +292,7 @@
 ]
 [endsect]
 
-[heading Deprecated V2]
+[heading Deprecated V3]
 
 The following expressions were required on version 1, but are now deprecated.
 
@@ -302,11 +302,11 @@
 
 [*Expressions:]
 
-* `m.timed_lock_shared(abs_time);` DEPRECATED V2
+* `m.timed_lock_shared(abs_time);`
 
 Lock ownership acquired through a call to __timed_lock_shared_ref__ must be released through a call to __unlock_shared_ref__.
 
-[section:timed_lock_shared `m.timed_lock_shared(abs_time)` DEPRECATED V2]
+[section:timed_lock_shared `m.timed_lock_shared(abs_time)`]
 
 [variablelist
 
@@ -957,11 +957,11 @@
 
         Lockable* mutex() const noexcept;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- unique_lock(Lockable& m_,system_time const& target_time); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ unique_lock(Lockable& m_,system_time const& target_time);
         template<typename TimeDuration>
- bool timed_lock(TimeDuration const& relative_time); // DEPRECATED V2
- bool timed_lock(::boost::system_time const& absolute_time); // DEPRECATED V2
+ bool timed_lock(TimeDuration const& relative_time);
+ bool timed_lock(::boost::system_time const& absolute_time);
     #endif
 
     };
@@ -1136,7 +1136,7 @@
 
 
 
-[section:constructor_abs_time `unique_lock(Lockable & m,boost::system_time const& abs_time)` DEPRECATED V2]
+[section:constructor_abs_time `unique_lock(Lockable & m,boost::system_time const& abs_time)`]
 
 [variablelist
 
@@ -1316,9 +1316,9 @@
         bool owns_lock() const;
         mutex_type mutex() const;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- shared_lock(Lockable& m_,system_time const& target_time); // DEPRECATED V2
- bool timed_lock(boost::system_time const& target_time); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ shared_lock(Lockable& m_,system_time const& target_time);
+ bool timed_lock(boost::system_time const& target_time);
     #endif
     };
 

Modified: trunk/libs/thread/doc/mutexes.qbk
==============================================================================
--- trunk/libs/thread/doc/mutexes.qbk (original)
+++ trunk/libs/thread/doc/mutexes.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -89,10 +89,10 @@
         typedef unspecified-type scoped_try_lock;
         typedef scoped_timed_lock scoped_lock;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- bool timed_lock(system_time const & abs_time); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ bool timed_lock(system_time const & abs_time);
         template<typename TimeDuration>
- bool timed_lock(TimeDuration const & relative_time); // DEPRECATED V2
+ bool timed_lock(TimeDuration const & relative_time);
     #endif
 
     };
@@ -203,10 +203,10 @@
         typedef unspecified-type scoped_try_lock;
         typedef scoped_lock scoped_timed_lock;
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- bool timed_lock(system_time const & abs_time); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ bool timed_lock(system_time const & abs_time);
         template<typename TimeDuration>
- bool timed_lock(TimeDuration const & relative_time); // DEPRECATED V2
+ bool timed_lock(TimeDuration const & relative_time);
     #endif
 
     };

Modified: trunk/libs/thread/doc/once.qbk
==============================================================================
--- trunk/libs/thread/doc/once.qbk (original)
+++ trunk/libs/thread/doc/once.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -15,8 +15,8 @@
     template<typename Callable>
     void call_once(once_flag& flag,Callable func);
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- void call_once(void (*func)(),once_flag& flag); //DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ void call_once(void (*func)(),once_flag& flag);
   #endif
 
   }
@@ -75,7 +75,7 @@
 
 ]
 
- void call_once(void (*func)(),once_flag& flag); //DEPRECATED V2
+ void call_once(void (*func)(),once_flag& flag);
     
 This second overload is provided for backwards compatibility. The effects of `call_once(func,flag)` shall be the same as those of
 `call_once(flag,func)`.

Modified: trunk/libs/thread/doc/shared_mutex_ref.qbk
==============================================================================
--- trunk/libs/thread/doc/shared_mutex_ref.qbk (original)
+++ trunk/libs/thread/doc/shared_mutex_ref.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -34,20 +34,20 @@
         bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
         void unlock();
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
         // use upgrade_mutex instead.
- void lock_upgrade(); // DEPRECATED V2
- void unlock_upgrade(); // DEPRECATED V2
+ void lock_upgrade();
+ void unlock_upgrade();
 
- void unlock_upgrade_and_lock(); // DEPRECATED V2
- void unlock_and_lock_upgrade(); // DEPRECATED V2
- void unlock_and_lock_shared(); // DEPRECATED V2
- void unlock_upgrade_and_lock_shared(); // DEPRECATED V2
+ void unlock_upgrade_and_lock();
+ void unlock_and_lock_upgrade();
+ void unlock_and_lock_shared();
+ void unlock_upgrade_and_lock_shared();
     #endif
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- bool timed_lock_shared(system_time const& timeout); // DEPRECATED V2
- bool timed_lock(system_time const& timeout); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ bool timed_lock_shared(system_time const& timeout);
+ bool timed_lock(system_time const& timeout);
     #endif
 
     };

Modified: trunk/libs/thread/doc/thread.qbk
==============================================================================
--- trunk/libs/thread/doc/thread.qbk (original)
+++ trunk/libs/thread/doc/thread.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -8,7 +8,7 @@
 
 [library Thread
     [quickbook 1.5]
- [version 2.0.0]
+ [version 3.0.0]
     [authors [Williams, Anthony] [Botet Escriba, Vicente J.]]
     [copyright 2007-11 Anthony Williams]
     [copyright 2011-12 Vicente J. Botet Escriba]

Modified: trunk/libs/thread/doc/thread_ref.qbk
==============================================================================
--- trunk/libs/thread/doc/thread_ref.qbk (original)
+++ trunk/libs/thread/doc/thread_ref.qbk 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -36,9 +36,9 @@
       class disable_interruption; // EXTENSION
       class restore_interruption; // EXTENSION
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- void sleep(TimeDuration const& rel_time); // DEPRECATED V2
- void sleep(system_time const& abs_time) // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ void sleep(TimeDuration const& rel_time);
+ void sleep(system_time const& abs_time);
     #endif
     }
     class thread_group; // EXTENSION
@@ -271,18 +271,18 @@
 current thread, and interruption is requested for the current thread:
 
 * [join_link `boost::thread::join()`]
-* [timed_join_link `boost::thread::timed_join()` DEPRECATED V2]
+* [timed_join_link `boost::thread::timed_join()`]
 * `boost::__thread::__try_join_for()`,
 * `boost::__thread::__try_join_until()`,
 * [cond_wait_link `boost::condition_variable::wait()`]
-* [cond_timed_wait_link `boost::condition_variable::timed_wait()` DEPRECATED V2]
+* [cond_timed_wait_link `boost::condition_variable::timed_wait()`]
 * `boost::__condition_variable::__wait_for()`
 * `boost::__condition_variable::__wait_until()`
 * [cond_any_wait_link `boost::condition_variable_any::wait()`]
-* [cond_any_timed_wait_link `boost::condition_variable_any::timed_wait()` DEPRECATED V2]
+* [cond_any_timed_wait_link `boost::condition_variable_any::timed_wait()`]
 * `boost::__condition_variable_any::__cvany_wait_for()`
 * `boost::__condition_variable_any::__cvany_wait_until()`
-* [link thread.thread_management.thread.sleep `boost::thread::sleep()` DEPRECATED V2]
+* [link thread.thread_management.thread.sleep `boost::thread::sleep()`]
 * `boost::this_thread::__sleep_for()`
 * `boost::this_thread::__sleep_until()`
 * __interruption_point__
@@ -413,18 +413,18 @@
         bool interruption_requested() const noexcept; // EXTENSION
 
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- bool timed_join(const system_time& wait_until); // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ bool timed_join(const system_time& wait_until);
         template<typename TimeDuration>
- bool timed_join(TimeDuration const& rel_time); // DEPRECATED V2
+ bool timed_join(TimeDuration const& rel_time);
     #endif
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
- bool operator==(const thread& other) const; // DEPRECATED V2
- bool operator!=(const thread& other) const; // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
+ bool operator==(const thread& other) const;
+ bool operator!=(const thread& other) const;
 
- static void yield(); // DEPRECATED V2
- static void sleep(const system_time& xt); // DEPRECATED V2
+ static void yield();
+ static void sleep(const system_time& xt);
     #endif
 
     };
@@ -637,7 +637,7 @@
 [endsect]
 
 [/
-[section:v2_destructor V2 Thread Destructor]
+[section:v2_destructor V3 Thread Destructor]
 
     ~thread();
 
@@ -702,7 +702,7 @@
 
 [endsect]
 
-[section:timed_join Member function `timed_join()` DEPRECATED V2]
+[section:timed_join Member function `timed_join()`]
 
     bool timed_join(const system_time& wait_until);
 
@@ -905,7 +905,7 @@
 
 [endsect]
 
-[section:equals `operator==` DEPRECATED V2]
+[section:equals `operator==` DEPRECATED V3]
 
     bool operator==(const thread& other) const;
 
@@ -919,7 +919,7 @@
 
 [endsect]
 
-[section:not_equals `operator!=` DEPRECATED V2]
+[section:not_equals `operator!=` DEPRECATED V3]
 
     bool operator!=(const thread& other) const;
 
@@ -933,7 +933,7 @@
 
 [endsect]
 
-[section:sleep Static member function `sleep()` DEPRECATED V2]
+[section:sleep Static member function `sleep()`]
 
     void sleep(system_time const& abs_time);
 
@@ -951,7 +951,7 @@
 
 [endsect]
 
-[section:yield Static member function `yield()` DEPRECATED V2]
+[section:yield Static member function `yield()`]
 
     void yield();
 
@@ -1248,9 +1248,9 @@
       class disable_interruption; // EXTENSION
       class restore_interruption; // EXTENSION
 
- #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
- void sleep(TimeDuration const& rel_time); // DEPRECATED V2
- void sleep(system_time const& abs_time) // DEPRECATED V2
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 || defined BOOST_THREAD_DONT_USE_CHRONO
+ void sleep(TimeDuration const& rel_time);
+ void sleep(system_time const& abs_time)
     #endif
     }
   }
@@ -1331,7 +1331,7 @@
 
 [endsect]
 
-[section:sleep Non-member function `sleep()` DEPRECATED V2]
+[section:sleep Non-member function `sleep()`]
 
     #include <boost/thread/thread.hpp>
 

Modified: trunk/libs/thread/test/Jamfile.v2
==============================================================================
--- trunk/libs/thread/test/Jamfile.v2 (original)
+++ trunk/libs/thread/test/Jamfile.v2 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -107,7 +107,7 @@
 }
 
 
-rule thread-compile-fail-V2 ( sources : reqs * : name )
+rule thread-compile-fail ( sources : reqs * : name )
 {
     return
     [ compile-fail $(sources)
@@ -155,9 +155,9 @@
           [ thread-test test_shared_mutex_timed_locks.cpp ]
           [ thread-test test_shared_mutex_timed_locks_chrono.cpp ]
           #uncomment the following once these works on windows
- #[ thread-test test_v2_shared_mutex.cpp ]
- #[ thread-test test_v2_shared_mutex_part_2.cpp ]
- #[ thread-test test_v2_shared_mutex_timed_locks.cpp ]
+ #[ thread-test test_vhh_shared_mutex.cpp ]
+ #[ thread-test test_vhh_shared_mutex_part_2.cpp ]
+ #[ thread-test test_vhh_shared_mutex_timed_locks.cpp ]
     ;
 
     test-suite t_futures
@@ -197,8 +197,8 @@
     #explicit conditions ;
     test-suite ts_conditions
     :
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable/assign_fail.cpp : : condition_variable__assign_f ]
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable/copy_fail.cpp : : condition_variable__copy_f ]
+ [ thread-compile-fail ./sync/conditions/condition_variable/assign_fail.cpp : : condition_variable__assign_f ]
+ [ thread-compile-fail ./sync/conditions/condition_variable/copy_fail.cpp : : condition_variable__copy_f ]
           [ thread-run2 ./sync/conditions/condition_variable/default_pass.cpp : condition_variable__default_p ]
           [ thread-run2 ./sync/conditions/condition_variable/dtor_pass.cpp : condition_variable__dtor_p ]
           [ thread-run2 ./sync/conditions/condition_variable/native_handle_pass.cpp : condition_variable__native_handle_p ]
@@ -207,8 +207,8 @@
           [ thread-run2 ./sync/conditions/condition_variable/wait_until_pass.cpp : condition_variable__wait_until_p ]
           [ thread-run2 ./sync/conditions/condition_variable/wait_until_pred_pass.cpp : condition_variable__wait_until_pred_p ]
 
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/assign_fail.cpp : : condition_variable_any__assign_f ]
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/copy_fail.cpp : : condition_variable_any__copy_f ]
+ [ thread-compile-fail ./sync/conditions/condition_variable_any/assign_fail.cpp : : condition_variable_any__assign_f ]
+ [ thread-compile-fail ./sync/conditions/condition_variable_any/copy_fail.cpp : : condition_variable_any__copy_f ]
           [ thread-run2 ./sync/conditions/condition_variable_any/default_pass.cpp : condition_variable_any__default_p ]
           [ thread-run2 ./sync/conditions/condition_variable_any/dtor_pass.cpp : condition_variable_any__dtor_p ]
           [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pass.cpp : condition_variable_any__wait_for_p ]
@@ -227,8 +227,8 @@
     #explicit promise ;
     test-suite ts_promise
     :
- [ thread-compile-fail-V2 ./sync/futures/promise/copy_assign_fail.cpp : : promise__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/futures/promise/copy_ctor_fail.cpp : : promise__copy_ctor_f ]
+ [ thread-compile-fail ./sync/futures/promise/copy_assign_fail.cpp : : promise__copy_assign_f ]
+ [ thread-compile-fail ./sync/futures/promise/copy_ctor_fail.cpp : : promise__copy_ctor_f ]
           [ thread-run2 ./sync/futures/promise/alloc_ctor_pass.cpp : promise__alloc_ctor_p ]
           [ thread-run2 ./sync/futures/promise/default_pass.cpp : promise__default_p ]
           [ thread-run2 ./sync/futures/promise/dtor_pass.cpp : promise__dtor_p ]
@@ -241,8 +241,8 @@
     #explicit future ;
     test-suite ts_future
     :
- [ thread-compile-fail-V2 ./sync/futures/future/copy_assign_fail.cpp : : future__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/futures/future/copy_ctor_fail.cpp : : future__copy_ctor_f ]
+ [ thread-compile-fail ./sync/futures/future/copy_assign_fail.cpp : : future__copy_assign_f ]
+ [ thread-compile-fail ./sync/futures/future/copy_ctor_fail.cpp : : future__copy_ctor_f ]
           [ thread-run2 ./sync/futures/future/default_pass.cpp : future__default_p ]
           [ thread-run2 ./sync/futures/future/dtor_pass.cpp : future__dtor_p ]
           #[ thread-run2 ./sync/futures/future/get_pass.cpp : future__get_p ]
@@ -255,8 +255,8 @@
     test-suite ts_packaged_task
     :
           [ thread-run2 ./sync/futures/packaged_task/alloc_ctor_pass.cpp : packaged_task__alloc_ctor_p ]
- [ thread-compile-fail-V2 ./sync/futures/packaged_task/copy_assign_fail.cpp : : packaged_task__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/futures/packaged_task/copy_ctor_fail.cpp : : packaged_task__copy_ctor_f ]
+ [ thread-compile-fail ./sync/futures/packaged_task/copy_assign_fail.cpp : : packaged_task__copy_assign_f ]
+ [ thread-compile-fail ./sync/futures/packaged_task/copy_ctor_fail.cpp : : packaged_task__copy_ctor_f ]
           [ thread-run2 ./sync/futures/packaged_task/default_ctor_pass.cpp : packaged_task__default_ctor_p ]
           [ thread-run2 ./sync/futures/packaged_task/func_ctor_pass.cpp : packaged_task__func_ctor_p ]
           #[ thread-run2 ./sync/futures/packaged_task/dtor_pass.cpp : packaged_task__dtor_p ]
@@ -275,8 +275,8 @@
     #explicit lock_guard ;
     test-suite ts_lock_guard
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp : : lock_guard__cons__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp : : lock_guard__cons__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp : : lock_guard__cons__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp : : lock_guard__cons__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp : lock_guard__cons__adopt_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/default_pass.cpp : lock_guard__cons__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/types_pass.cpp : lock_guard__types_p ]
@@ -285,8 +285,8 @@
     #explicit unique_lock ;
     test-suite ts_unique_lock
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_assign_fail.cpp : : unique_lock__cons__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_ctor_fail.cpp : : unique_lock__cons__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/cons/copy_assign_fail.cpp : : unique_lock__cons__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/cons/copy_ctor_fail.cpp : : unique_lock__cons__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/adopt_lock_pass.cpp : unique_lock__cons__adopt_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/default_pass.cpp : unique_lock__cons__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/defer_lock_pass.cpp : unique_lock__cons__defer_lock_p ]
@@ -310,7 +310,7 @@
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/release_pass.cpp : unique_lock__release_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/mutex_pass.cpp : unique_lock__mutex_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/op_bool_pass.cpp : unique_lock__op_bool_p ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/obs/op_int_fail.cpp : : unique_lock__op_int_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/obs/op_int_fail.cpp : : unique_lock__op_int_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/owns_lock_pass.cpp : unique_lock__owns_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/types_pass.cpp : unique_lock__types_p ]
     ;
@@ -318,8 +318,8 @@
     #explicit shared_lock ;
     test-suite ts_shared_lock
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_assign_fail.cpp : : shared_lock__cons__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_ctor_fail.cpp : : shared_lock__cons__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock/cons/copy_assign_fail.cpp : : shared_lock__cons__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock/cons/copy_ctor_fail.cpp : : shared_lock__cons__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/adopt_lock_pass.cpp : shared_lock__cons__adopt_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : shared_lock__cons__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : shared_lock__cons__defer_lock_p ]
@@ -348,8 +348,8 @@
     #explicit upgrade_lock ;
     test-suite ts_upgrade_lock
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_assign_fail.cpp : : upgrade_lock__cons__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_ctor_fail.cpp : : upgrade_lock__cons__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_assign_fail.cpp : : upgrade_lock__cons__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_ctor_fail.cpp : : upgrade_lock__cons__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/adopt_lock_pass.cpp : upgrade_lock__cons__adopt_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/default_pass.cpp : upgrade_lock__cons__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/defer_lock_pass.cpp : upgrade_lock__cons__defer_lock_p ]
@@ -377,8 +377,8 @@
     #explicit mutexs ;
     test-suite ts_mutex
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/assign_fail.cpp : : mutex__assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/copy_fail.cpp : : mutex__copy_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/mutex/assign_fail.cpp : : mutex__assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/mutex/copy_fail.cpp : : mutex__copy_f ]
           [ thread-run2 ./sync/mutual_exclusion/mutex/default_pass.cpp : mutex__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/mutex/lock_pass.cpp : mutex__lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/mutex/native_handle_pass.cpp : mutex__native_handle_p ]
@@ -388,8 +388,8 @@
     #explicit recursive_mutex ;
     test-suite ts_recursive_mutex
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/assign_fail.cpp : : recursive_mutex__assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/copy_fail.cpp : : recursive_mutex__copy_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/recursive_mutex/assign_fail.cpp : : recursive_mutex__assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/recursive_mutex/copy_fail.cpp : : recursive_mutex__copy_f ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/default_pass.cpp : recursive_mutex__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/lock_pass.cpp : recursive_mutex__lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/native_handle_pass.cpp : recursive_mutex__native_handle_p ]
@@ -399,8 +399,8 @@
     #explicit recursive_timed_mutex ;
     test-suite ts_recursive_timed_mutex
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/assign_fail.cpp : : recursive_timed_mutex__assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/copy_fail.cpp : : recursive_timed_mutex__copy_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/recursive_timed_mutex/assign_fail.cpp : : recursive_timed_mutex__assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/recursive_timed_mutex/copy_fail.cpp : : recursive_timed_mutex__copy_f ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/default_pass.cpp : recursive_timed_mutex__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/lock_pass.cpp : recursive_timed_mutex__lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/native_handle_pass.cpp : recursive_timed_mutex__native_handle_p ]
@@ -412,8 +412,8 @@
     #explicit timed_mutex ;
     test-suite ts_timed_mutex
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/assign_fail.cpp : : timed_mutex__assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/copy_fail.cpp : : timed_mutex__copy_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/timed_mutex/assign_fail.cpp : : timed_mutex__assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/timed_mutex/copy_fail.cpp : : timed_mutex__copy_f ]
           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/default_pass.cpp : timed_mutex__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/lock_pass.cpp : timed_mutex__lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/native_handle_pass.cpp : timed_mutex__native_handle_p ]
@@ -425,8 +425,8 @@
     #explicit shared_mutexs ;
     test-suite ts_shared_mutex
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/assign_fail.cpp : : shared_mutex__assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/copy_fail.cpp : : shared_mutex__copy_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/shared_mutex/assign_fail.cpp : : shared_mutex__assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/shared_mutex/copy_fail.cpp : : shared_mutex__copy_f ]
           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : shared_mutex__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/lock_pass.cpp : shared_mutex__lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_for_pass.cpp : shared_mutex__try_lock_for_p ]
@@ -446,9 +446,9 @@
     #explicit thread ;
     test-suite ts_thread
     :
- [ thread-compile-fail-V2 ./threads/thread/assign/copy_fail.cpp : : thread__assign__copy_f ]
+ [ thread-compile-fail ./threads/thread/assign/copy_fail.cpp : : thread__assign__copy_f ]
           [ thread-run2 ./threads/thread/assign/move_pass.cpp : thread__assign__move_p ]
- [ thread-compile-fail-V2 ./threads/thread/constr/copy_fail.cpp : : thread__constr__copy_f ]
+ [ thread-compile-fail ./threads/thread/constr/copy_fail.cpp : : thread__constr__copy_f ]
           [ thread-run2 ./threads/thread/constr/default_pass.cpp : thread__constr__default_p ]
           [ thread-run-lib2 ./threads/thread/constr/F_pass.cpp : thread__constr__F_p ]
           [ thread-run-lib2 ./threads/thread/constr/FArgs_pass.cpp : thread__constr__FArgs_p ]
@@ -490,8 +490,8 @@
           [ thread-run ../example/xtime.cpp ]
           [ thread-run ../example/shared_monitor.cpp ]
           [ thread-run ../example/shared_mutex.cpp ]
- #[ thread-run ../example/v2_shared_monitor.cpp ]
- #[ thread-run ../example/v2_shared_mutex.cpp ]
+ #[ thread-run ../example/vhh_shared_monitor.cpp ]
+ #[ thread-run ../example/vhh_shared_mutex.cpp ]
     ;
 
     #explicit shared_upwards ;
@@ -510,8 +510,8 @@
     #explicit shared_lock_guard ;
     test-suite ts_shared_lock_guard
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock_guard/copy_assign_fail.cpp : : shared_lock_guard__cons__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock_guard/copy_ctor_fail.cpp : : shared_lock_guard__cons__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock_guard/copy_assign_fail.cpp : : shared_lock_guard__cons__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock_guard/copy_ctor_fail.cpp : : shared_lock_guard__cons__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/adopt_lock_pass.cpp : shared_lock_guard__cons__adopt_lock_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/default_pass.cpp : shared_lock_guard__cons__default_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/types_pass.cpp : shared_lock_guard__types_p ]
@@ -520,8 +520,8 @@
     #explicit reverse_lock ;
     test-suite ts_reverse_lock
     :
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/reverse_lock/copy_assign_fail.cpp : : reverse_lock__copy_assign_f ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/reverse_lock/copy_ctor_fail.cpp : : reverse_lock__copy_ctor_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/reverse_lock/copy_assign_fail.cpp : : reverse_lock__copy_assign_f ]
+ [ thread-compile-fail ./sync/mutual_exclusion/locks/reverse_lock/copy_ctor_fail.cpp : : reverse_lock__copy_ctor_f ]
           [ thread-run2 ./sync/mutual_exclusion/locks/reverse_lock/unique_lock_ctor_pass.cpp : reverse_lock__unique_lock_ctor_p ]
           [ thread-run2 ./sync/mutual_exclusion/locks/reverse_lock/types_pass.cpp : reverse_lock__types_p ]
     ;

Modified: trunk/libs/thread/test/sync/futures/future/copy_assign_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/copy_assign_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/copy_assign_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -19,7 +19,7 @@
 // future& operator=(const future&) = delete;
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/future/copy_ctor_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/copy_ctor_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/copy_ctor_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // future(const future&) = delete;
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/future/default_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/default_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/default_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // future();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/future/dtor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/dtor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/dtor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // ~promise();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/exception/exception.hpp>
 
 #include <boost/thread/future.hpp>

Modified: trunk/libs/thread/test/sync/futures/future/get_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/get_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/get_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // future<R> get_future();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/thread/thread.hpp>

Modified: trunk/libs/thread/test/sync/futures/future/move_assign_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/move_assign_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/move_assign_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise& operator=(promise&& rhs);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/future/move_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/move_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/move_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise(promise&& rhs);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/future/share_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/future/share_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/future/share_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // shared_future<R> share() &&;
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/alloc_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/alloc_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/alloc_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -20,7 +20,7 @@
 // explicit packaged_task(allocator_arg_t, const Allocator& a, F&& f);
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/copy_assign_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/copy_assign_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/copy_assign_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // packaged_task& operator=(packaged_task&) = delete;
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/copy_ctor_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/copy_ctor_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/copy_ctor_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // packaged_task(packaged_task&) = delete;
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/default_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/default_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/default_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // packaged_task();
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/dtor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/dtor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/dtor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -19,7 +19,7 @@
 // ~packaged_task();
 ;
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/thread/thread.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/func_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/func_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/func_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -19,7 +19,7 @@
 // explicit packaged_task(F&& f);
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/get_future_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/get_future_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/get_future_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -19,7 +19,7 @@
 // future<R> get_future();
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/member_swap_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/member_swap_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/member_swap_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // void swap(packaged_task& other);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/move_assign_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/move_assign_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/move_assign_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise& operator=(promise&& rhs);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/move_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/move_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/move_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // packaged_task(packaged_task&& other);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/non_member_swap_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/non_member_swap_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/non_member_swap_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // void
 // swap(packaged_task<R>& x, packaged_task<R>& y);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/packaged_task/operator_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/operator_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/operator_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // void operator()();
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/reset_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/reset_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/reset_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 // void operator()();
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/packaged_task/use_allocator_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/packaged_task/use_allocator_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/packaged_task/use_allocator_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -21,7 +21,7 @@
 // : true_type { };
 
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/alloc_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/alloc_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/alloc_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise(allocator_arg_t, const Allocator& a);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/copy_assign_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/copy_assign_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/copy_assign_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -16,7 +16,7 @@
 // class promise<R>
 // promise& operator=(const promise& rhs) = delete;
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/promise/copy_ctor_fail.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/copy_ctor_fail.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/copy_ctor_fail.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -16,7 +16,7 @@
 // class promise<R>
 // promise& operator=(const promise& rhs) = delete;
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>
 

Modified: trunk/libs/thread/test/sync/futures/promise/default_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/default_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/default_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/dtor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/dtor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/dtor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // ~promise();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/get_future_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/get_future_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/get_future_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // future<R> get_future();
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/move_assign_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/move_assign_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/move_assign_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise& operator=(promise&& rhs);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/move_ctor_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/move_ctor_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/move_ctor_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise(promise&& rhs);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>

Modified: trunk/libs/thread/test/sync/futures/promise/use_allocator_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/futures/promise/use_allocator_pass.cpp (original)
+++ trunk/libs/thread/test/sync/futures/promise/use_allocator_pass.cpp 2012-04-16 16:49:18 EDT (Mon, 16 Apr 2012)
@@ -18,7 +18,7 @@
 
 // promise(allocator_arg_t, const Allocator& a);
 
-#define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_VERSION 3
 
 #include <boost/thread/future.hpp>
 #include <boost/detail/lightweight_test.hpp>


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