Version 1.52.0
November 5th, 2012 16:05 GMT
Documentation
Patches
- 
Locale
          Patch - Fixes a bug which causes boost::locale::utf::utf_traitsto accept some invalid UTF-8 sequences, which is a possible security flaw.
Updated Libraries
- 
Accumulators:
- 
                Fix long-standing dependency tracking bug, #7409
 
- 
Config:
- 
                Define BOOST_NO_SFINAE_EXPRfor gcc-4.4, since the support was found to be too buggy.
 
- 
Chrono:
- 
New Features:
- 
#5980 Enhance chrono I/O with H. Hinnant proposal proposal
                      which has the advantage to provide I/O for system clocks using
                      the Gregorian Calendar.
                    
- 
#5981 Add i/o state savers for duration and time_point formatting
                      state.
                    
- 
#7059 Add low level i/o facilities.
                    
 
- 
Deprecated features:
- 
                      The chrono i/o version included in Boost.Chrono 1.2.x has been
                      completly refactored in version 2.0.0
                    
- 
                      chrono I/O: The manipulators __duration_short,__duration_longare depreceated. You should use the parameterized form__duration_fmtor the renamed
                      manipulators__duration_symboland__duration_prefixinstead.
- 
                      chrono I/O: The __duration_punct<>facet is deprecated.
                      You should use the__get_duration_stylefree function to get the informations and use the__duration_unitsfacet for
                      localization purposes.
- 
                      When BOOST_CHRONO_VERSION==2the preceding deprecated functions are not available.
 
- 
Fixes:
- 
#7381 C++11 compliance: unresolved symbol when assigning
                      a constexpr duration to a non-const local variable.
                    
- 
#7479
                      Compile fails with compilers supporting constexpr fails if
                      the standard library doesn't provides the constexpr interface
                    
 
- 
Would not fix:
- 
#6871 chrono_io.hpp: operator<<(ostream& os, ...)modifies the state of os. The neww io interface provided in
                      version 2 solves this issue. You should move to the new version.
 
 
- 
Container:
- 
                Improved stable_vector's
                template code bloat and type safety.
- 
                Changed typedefs and reordered functions of sequence containers to
                improve doxygen documentation.
              
- 
                Fixed bugs #6615,
                #7139,
                #7215,
                #7232,
                #7269,
                #7439.
              
- 
                Implemented LWG Issue #149 (range insertion now returns an iterator)
                & cleaned up insertion code in most containers
              
- 
                Corrected aliasing errors.
              
 
- 
DateTime:
- 
                Document BOOST_DATE_TIME_NO_LIB(#6077).
- 
                Fix nth_as_str(#7022).
- 
                Fix some warnings (#7234).
              
 
- 
Foreach:
- 
                Fix alignment warning on gcc.
              
 
- 
Function:
- 
                Move constructors and move assignment operators added (only for compilers
                with C++11 rvalue references support) #7330.
              
 
- 
Graph:
- 
                Fixed bugs #6950, #7226,#7308, #7327, #7338,
                #7341, #7378, #7380, #7398, and #7428, plus others
                not in Trac.
              
 
- 
Hash:
- 
                Restore enumsupport,
                which was accidentally removed in the last version (#7437).
- 
                New floating point hasher - will hash the binary representation on
                more platforms, which should be faster.
              
 
- 
Interprocess:
- 
                Added shrink_byandadvisefunctions
                inmapped_region.
- 
ABI breaking: Reimplemented message_queuewith a circular buffer index (the old behavior used an ordered array,
                leading to excessive copies). This should greatly increase performance
                but breaks ABI. Old behaviour/ABI can be used undefining macroBOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEXinboost/interprocess/detail/workaround.hpp
- 
                Improved message_queueinsertion time avoiding priority search for common cases (both array
                and circular buffer configurations).
- 
                Implemented interproces_sharable_mutexandinterproces_condition_any.
- 
                Improved offset_ptrperformance.
- 
                Added integer overflow checks.
              
 
- 
Iterator:
- 
                Fixed:
                
- 
#5825 constructing function_input_iterator without consuming
                      an item
                    
- 
#7194 Error in documentation of make_function_input_iterator
                    
 
- 
Breaking changes:
- 
                      Due to the fix for #5825, a function_input_iterator will
                      no longer make unnecessary invokations to the wrapped nullary
                      function. For example, constructing an end iterator will now
                      not trigger an invokation; and dereferencing-and-incrementing
                      an iterator N times will trigger N invokations, not N+1 as
                      before. User code that relied on the old behavior will need
                      to be adjusted.
                    
 
 
- 
Lexical cast:
- 
                Restored compilation on MSVC-2003 (was broken in 1.51.0) #7255.
              
- 
                Added lexical_cast(const CharType*
chars,
std::size_t count)function overload. #6663.
- 
                Fixed bug #7228.
              
 
- 
Math:
- 
                Added Airy functions and Jacobi Elliptic functions.
              
- 
                In several distributions (particulary the Students T) corrected moments
                for small degrees of freedom #7177
                (reported by Thomas Mang).
              
- 
                Corrected failure to detect bad parameters in many distributions
                #6934
                (reported by Florian Schoppmann) by adding a function check_out_of_rangeto test many
                possible bad parameters. This test revealed several distributions
                where the checks for bad parameters were ineffective, and these have
                been rectified.
- 
                Fixed issue in Hankel functions that causes incorrect values to be
                returned for x < 0 and ν
                odd, see #7135.
              
- 
                In non-central T permitted infinite degrees of freedom #7259
                implemented using the normal distribution (requested by Thomas Mang).
                Also much enhanced accuracy for large degrees of freedom and/or large
                non-centrality parameters by switching to use the Students t distribution
                (or Normal distribution for infinite degrees of freedom) centered
                at delta, when delta / (4 * v) < epsilon for the floating-point
                type in use. See #7259.
                It was also found that the incomplete beta was suffering from serious
                cancellation errors when degrees of freedom was very large. (That
                has now been fixed in our code, but any code based on Didonato and
                Morris's original papers (probably every implementation out there
                actually) will have the same issue).
              
- 
                Fixed minor issues #6517,
                #6362,
                #7053,
                #2693,
                #6937,
                #7099.
              
 
- 
Phoenix:
- 
                Make Phoenix work with decltype-basedboost::result_of.
 
- 
Polygon:
- 
                Included Voronoi diagram extensions.
              
- 
                Introduced new Segment concept.
              
- 
                Fixed compilation issues.
              
 
- 
Proto:
- 
                The data parameter to primitive transforms can now optionally have
                slots indexed by key.
              
- 
                Primitive transforms can now operatate on temporary expressions that
                are non-const qualified.
              
- 
                Add callable function object types for the free functions in <iterator>and also for some Boost.Range
                functions.
- 
                Boost.MPL algorithms work on Proto expression nodes.
              
- 
proto::pass_throughprimitive transform
                now accepts an optionalDomaintemplate parameter for specifying the target domain of the resulting
                expression.
 
- 
Ratio:
- 
Features:
- 
                      Replace the short_nameandlong_namefunctions by symbol and prefix functions respectively.
 
- 
Deprecated:
- 
                      The ratio_string<>::short_nameandratio_string<>::long_nameare deprecated. Useratio_string<>::symbolandratio_string<>::prefixrespectively. These functions be removed in 1.55.
 
- 
Fixes:
- 
#7478
                      Compiles fails with compilers supporting char16_t and char32_t
                      fails if the library doesn't provides std::u16string and std::u32string.
                    
 
 
- 
Result_of:
- 
                Switch boost::result_ofto usedecltypeon compilers for which support
                is deemed "good enough". That means if the compiler implements
                n3276.
                (For now, that only includes very recent versions of clang.)
- 
boost::result_ofis now "sfinae-friendly"
                when it usesdecltype.
                See n3436.
 
- 
Thread:
- 
Deprecated Features: 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_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 yet 1 year to move to the new features.
                
- 
                      Time related functions don't using the Boost.Chrono library,
                      use the chrono overloads instead.
                    
 
- 
                Breaking changes when BOOST_THREAD_VERSION==3(Default value since Boost 1.53): There are some new features which
                share the same interface but with different behavior. These breaking
                features are provided by default when BOOST_THREAD_VERSION is 3,
                but the user can however choose the version 2 behavior by defining
                the corresponding macro. As for the deprecated features, these broken
                features will be only available until boost 1.55.
- 
#6229 C++11 compliance & Breaking change: Rename the
                      unique_future to future following the c++11.
                    
- 
#6266 C++11 compliance & Breaking change: thread destructor
                      should call terminate if joinable.
                    
- 
#6269 C++11 compliance & Breaking change: thread move
                      assignment should call terminate if joinable.
                    
 
- 
New Features:
- 
#4710 C++11 compliance: Missing async().
- 
#7283 C++11 compliance: Add notify_all_at_thread_exit.
- 
#7345 C++11 compliance: Add noexceptto recursive mutextry_lock.
 
- 
Fixed Bugs:
- 
#2361 thread_specific_ptr:
                      document nature of the key, complexity and rationale.
- 
#2797 Two problems with thread_specific_ptr.
- 
#5274 failed to compile future.hppwith stlport 5.1.5 under msvc8.1, because of undefined class.
- 
#5431 compile error in Windows CE 6.0(interlocked).
                    
- 
#5752 boost::call_once()is unreliable on some platforms.
- 
#7045 Thread library does not automatically compile date_time.
                    
- 
#7173 wrong function name interrupt_point().
- 
#7200 Unable to build boost.thread modularized.
                    
- 
#7220 gcc 4.6.2 warns about inline+dllimport functions.
                    
- 
#7238 this_thread::sleep_for()does not respond to interrupt().
- 
#7245 Minor typos on documentation related to version 3.
                    
- 
#7272 win32/thread_primitives.hpp:
                      (Unneccessary) Warning.
- 
#7284 Clarify that there is no access priority between lock
                      and shared_lock on shared mutex.
                    
- 
#7329 boost/thread/future.hppdoes not compile on HPUX.
- 
#7336 BOOST_THREAD_DONT_USE_SYSTEMdoesn't work.
- 
#7349 packaged_taskholds reference to temporary.
- 
#7350 allocator_destructordoes not destroy object
 
 
- 
uBLAS:
- 
                improved performance of inplace_solve (issue #4024)
              
- 
                fixed coordinate_matrix for use with gcc 4.7 (issue #7363)
              
 
- 
Unordered:
- 
                In assignment, reuse existing nodes where possible.
              
- 
                Fix bugs when erasing ranges (#7471).
              
- 
                Some work on the implementation.
              
 
- 
Uuid:
- 
                Fixes #6118, #6788, #7375.
              
- 
#7128 - fixed bug in sha1.hppfor messages longer than 536,870,912 bytes.
 
- 
Wave:
- 
xpressive:
- 
                Make sub_matchwork
                with Boost.Range. Fixes #7237.
 
Compilers Tested
      Boost's primary test compilers are:
    
- 
          Linux:
          
- 
                GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2, 4.7.2
              
- 
                GCC, C++11 mode: 4.3.4, 4.4.3, 4.5.3, 4.6.2
              
- 
                Intel: 11.1, 12.0, 12.1
              
- 
                LLVM Clang: 2.8
              
 
- 
          OS X:
          
- 
                GCC: 4.4.4
              
- 
                GCC, C++11 mode: 4.4.4
              
- 
                Intel: 11.1, 12.0
              
 
- 
          Windows:
          
- 
                GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
              
- 
                Visual C++: 8.0, 9.0, 10.0
              
 
- 
          FreeBSD:
          
- 
                GCC: 4.2.1, 32 and 64 bit
              
 
      Boost's additional test compilers include:
    
- 
          Linux:
          
- 
                Cray: 8.0
              
- 
                Clang: from subversion
              
- 
                GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2, 4.6.3, 4.7.0, 4.7.1, 4.7.2
              
- 
                GCC, C++11 mode: 4.3.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
              
- 
                pgCC: 11.9
              
- 
                Intel: 10.1, 11.1, 12.0, 12.1
              
- 
                Visual Age: 10.1
              
 
- 
          OS X:
          
- 
                Clang: from subversion
              
- 
                Clang, C++11 mode: from subversion
              
- 
                Intel: 11.1, 12.0
              
- 
                GCC: 4.4.4
              
- 
                GCC, C++11 mode: 4.4.4
              
 
- 
          Windows:
          
- 
                Visual C++: 8.0, 9.0, 10.0, 11.0
              
- 
                Visual C++ with STLport: 9.0
              
- 
                Visual C++, Windows Mobile 5, with STLport: 9.0
              
- 
                GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
              
 
- 
          AIX:
          
- 
                IBM XL C/C++ Enterprise Edition: V12.1.0.0
              
 
- 
          FreeBSD:
          
- 
          Solaris:
          
Acknowledgements
Beman Dawes, Eric Niebler,
      Rene Rivera, Daniel James,
      Vladimir Prus and Marshall Clow managed this release.