• 10528阅读
  • 4回复

Boost 1.57.0 发布,可移植的 C++ 标准库 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-05

Boost 1.57.0 发布了,Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。
下载地址:
unixboost_1_57_0.tar.bz2
boost_1_57_0.tar.gz
windowsboost_1_57_0.7z
boost_1_57_0.zip

改进记录:

Updated Libraries


  • Any:

  • RTTI is not required any more (TypeIndex               library is used for RTTI emulation)

  • Fixed #8958

Asio:

  • Fixed the kqueue reactor so that it works on FreeBSD               (#10606).

  • Fixed an issue in the kqueue reactor which resulted               in spinning when using serial ports on Mac OS (#10496).

  • Fixed kqueue reactor support for read-only file               descriptors (#10367).

  • Fixed a compile error when using the /dev/poll               reactor (#10350, #10572).

  • Changed the Windows backend to use WSASocketW,               as WSASocketA has               been deprecated (#10534).

  • Fixed some warnings reported by Visual C++ 2013 (#10376).

  • Fixed integer type used in the WinRT version of the byte-order conversion               functions (#10539).

  • Changed documentation to indicate that use_future               and spawn()               are not made available when including the asio.hpp               convenience header (#10567).

  • Explicitly marked asio::strand               as deprecated. Use asio::io_service::strand               instead.

Circular Buffer:

  • Fixed some warnings and move_if_noexcept               from Boost.Move is used #7888

Config:

  • BOOST_HAS_PRAGMA_DETECT_MISMATCH               macro was added

Container:
Coroutine:

  • optionally register stacks with valgrind

  • #10386 MSVC link error in asymmetric_coroutine.hpp: symbol already               defined

  • #10536 call to 'begin(...pull_coroutine< R > & c)'               is ambiguous

Flyweight:

  • Added serialization support via Boost               Serialization.

  • flyweight default               constructor was made explicit in Boost 1.56, which introduces a regression               in some initialization scenarios. The former non-explicit default               constructor has been restored (ticket #10439).

Geometry:

  • Several fixes of bugs in algorithm buffer

  • Bug in point_on_surface() for CCW Polygons (extreme_points())                     and numerical issue (thanks to Matt Amos)

  • Bug in disjoint() for A/A fixed by replacement of point_on_surface()                     with point_on_border() (thanks to Matt Amos)

  • The result of convex_hull(), duplicated Point in open output,                     too small number of Points for 1- and 2-Point input

  • Imprecision for big coordinates in centroid(), fixed by Points                     translation (related with ticket 10643)

  • for_each_segment() not taking into account the last segment                     of open Geometry

  • 8402                     Implicit conversion warnings

  • 9354                     Bug in winding strategy affecting within() and covered_by()                     for non-cartesian coordinate systems

  • 10177                     Missing include

  • 10345                     Distance fails to compile for some coordinate types

  • 10398                     Wrong neighbour check in buffer, calculating turns

  • 10421                     Invalid Point-Box distance for spherical CS

  • 10615                     Rtree constructor feature request

  • 10643                     Invalid point_on_surface() result for big coordinates

  • 10668                     Implicit conversion warnings (duplicated 8402)

  • The support of parameters convertible to value_type in rtree                     insert(), remove() and count() functions

  • Improvements

  • Solved tickets

  • Bugfixes

Interprocess:
Intrusive:
Iterator:

  • Most components of the library were moved into the boost::iterators namespace. For backward               compatibility the components are also accessible in the boost namespace.

  • Iterator operators are now conditionally defined based on the iterator               category.

  • Some of the internal components of the library were made public (minimum_category, for example).

Lexical Cast:

  • Some internal changes, library now consist of multiple headers instead               of a single one #10391, #10173

Math:

  • Added Hyperexponential Distribution.

  • Fix some spurious overflows in the incomplete gamma functions (with               thanks to Rocco Romeo).

  • Fix bug in derivative of incomplete beta when a = b = 0.5 - this               also effects several non-central distributions, see issue 10480.

  • Fixed some corner cases in function round.

  • Don't support 80-bit floats in cstdfloat.hpp if standard library               support is broken.

Move:
Added unique_ptr smart         pointer. Thanks to Howard Hinnant for his excellent unique_ptr emulation         code and testsuite.
Added move_if_noexcept         utility. Thanks to Antony Polukhin for the implementation.
Fixed bugs:
MultiArray:

  • Fixed a friend-declaration related warning for clang (thanks to Marcel               Raad).

Multiprecision:

  • Changed rational to float conversions to exactly round to nearest.

  • Added improved generic float to rational conversions.

  • Fixed rare bug in exponent function for cpp_bin_float.

  • Fixed various minor documentation issues.

Multi-index Containers:

  • When std::tuples are available, these can               be used for lookup operations in indices equipped with composite               keys. boost::tuples are also supported for backwards               compatibility.

Preprocessor:

  • Added is_begin_parens and remove_parens.

  • Added tuple functionality to parallel all array functionality.

  • Fixed VC++ problems with empty tuple data.

  • Updated internal is_empty to use superior variadic version when variadic               macros are supported.

  • Updated clang to have same variadic support as gcc.

  • Updated doc for new functionality.

Thread:

  • #6782                     call_once uses incorrect barrier intrinsic on Visual Studio

  • #6787                     boost::thread::sleep() hangs if system time is rolled back

  • #7665                     this_thread::sleep_for no longer uses steady_clock in thread

  • #9307                     future::fallback_to assert with ERRORRRRR boost: mutex lock                     failed in pthread_mutex_lock: Invalid argument

  • #9308                     future::async fails with terminate called throwing an exception                     when called with a lambda - clang-darwin-asan11

  • #9310                     test_4648_lib fails on clang-darwin-asan11

  • #9425                     Boost promise & future does not use supplied allocator                     for value storage

  • #9558                     future continuations unit test hangs in get()/pthread_cond_wait()                     on Mac 10.7/32-bit/x86/darwin-4.2.1

  • #9787                     [windows] Small duration value passed down to basic_timed_mutex::try_lock_until                     and condition_variable::wait_until can cause infinite or near                     infinite wait for win32

  • #9880                     [windows] boost::condition_variable.timed_wait() exception                     if system time < 1970

  • #10159                     GCC 4.4 error sorry, unimplemented

  • #10196                     thread_specific_ptr does not support void*

  • #10296                     Boost.Thread 1.56 rc1 does not compile on Mingw

  • #10297                     Boost.Thread 1.56 rc1 hangs when built with clang on armhf

  • #10340                     No boost::promise<T>::set_value(const T&) overload                     present in C++03 mode

  • #10425                     Missing documentation for when_all/when_any.

  • #10426                     Take in account the deferred futures in when_all.

  • #10427                     Take in account the deferred and ready futures in when_any.

  • #10428                     Adapt to new unique_ptr interface in Boost.Move

  • #10465                     Missing implementation of when_all/when_any when the result                     is a tuple.

  • #10476                     classes using BOOST_THREAD_MOVABLE_ONLY<T> dont satisfy                     is_copy_constructible<T>::value == false

  • #10478                     Data race in boost/thread/future.hpp

  • #10529                     The pthread/condition_variable_any constructor reports incorrect                     error code for pthread_cond_init

  • #10563                     shared_future<R>::then should be const

  • #6227                     Synchro: Use of variadic templates on Generic Locking Algorithms                     on compilers providing them

  • #10298                     Synchro: Added queue views.

  • #10300                     Async: Added generic_executor_ref.

  • #10552                     Add make_valid_future

  • New Experimental Features:

  • Fixed Bugs:

TypeIndex:

  • BOOST_HAS_PRAGMA_DETECT_MISMATCH               is now used to detect ODR violations #10404

  • Typos fixed #10294

TypeTraits:

  • Added new traits is_copy_assignable and is_final.

Units:

  • New unit system <boost/units/systems/information.hpp> units               for: bit, byte, nat, hartley and shannon,

  • Add scale units for binary prefixes kibi, mebi, gibi, tebi, pebi,               zebi and yobi IEC prefixes

  • Fix output of NaN on msvc-14

  • Add support for C++11 numeric_limits::max_digits10 and ::lowest

  • warning fixes

Unordered:
Utility:

  • The next()               and prior()               functions taking distance arguments were reworked. The code now work               correctly when the distance is unsigned or both arguments are integers.               The new code relies on the availability of operators supported by               the first argument to select the correct implementation.

uBLAS:

  • added two new types: matrix_row and matrix_column facades . With               them, it is possible to access to the matrices as an array of rows               and an array of columns, respectively.

  • added fixed_vector/fixed_matrix classes to represent small - fixed               size containers. Requires c++11 because it is using std::array

  • fixed the long standing banded matrix bug (https://svn.boost.org/trac/boost/ticket/7549).

  • the interface of matrices and vectors has been extended with cbegin,               cend, crbegin and crend member functions, as defined in c++11.

  • removed doxygen documentation to make the distribution lighter

  • removed warnings with MSVC for unused parameters

  • changed the uBlas development folder structure (will not affect users               of the library)

  • performed a very large overhaul with respect to warnings and errors               on various compilers. Apart for some hard to resolve warnings and               older compiler incompatibilities, compilations with uBlas will be               much cleaner now.


Compilers Tested


Boost's primary test compilers are:

  • Linux:

  • Clang: 3.0, 3.1, 3.2, 3.3, 3.4

  • Clang, C++14: 3.5

  • GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 4.8.2

  • GCC, C++98: 4.9.1

  • GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1

  • GCC, C++14: 4.9.1

  • Intel: 13.1, 14.0

  • Intel, C++11: 13.1, 14.0

  • QCC: 4.4.2

OS X:

  • Apple Clang: 6.0

  • Apple Clang, C++11: 6.0

  • Apple Clang, C++14: 6.0

  • GCC: 4.2.1, 4.9.1

  • Intel: 12.0

Windows:

  • GCC, mingw: 4.4.0, 4.4.7. 4.5.4, 4.6.3, 4.7.2, 4.7.3, 4.8.0, 4.8.2,               4.9.0

  • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0

FreeBSD:

  • GCC: 4.2.1

QNX:

  • QCC: 4.4.2

Boost's additional test compilers include:

  • Linux:

  • Clang: 3.0, 3.1, 3.2, 3.3, 3.4.2

  • Clang, C++14: 3.5.0, trunk

  • GCC: 4.4.7, 4.6.4, 4.7.3, 4.8.1, 4.8.2, 5.0 (experimental)

  • GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1

  • GCC, C++14: 4.9.1

  • Intel: 11.1, 12.1, 13.0, 13.1, 14.0

  • Intel, C++11: 13.1, 14.0

OS X:

  • Apple Clang: 6.0

  • Apple Clang, C++11: 6.0

  • Apple Clang, C++14: 6.0

  • Clang: trunk

  • Clang, C++11: trunk

  • GCC: 4.2.1, 4.9.1

  • Intel: 12.0

Windows:

  • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.3, 4.8.0, 4.8.2, 4.9.0

  • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0

FreeBSD:

  • GCC: 4.2.1

QNX:

  • QCC: 4.4.2



转自:http://www.oschina.net/news/56756/boost-1-57-0
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线foruok

只看该作者 1楼 发表于: 2014-11-05
很好,
我的博客:http://blog.csdn.net/foruok
我的微信订阅号:程序视界
离线stlf

只看该作者 2楼 发表于: 2014-11-05
之前一直用boost写服务器,效率还是比较有保障的。
c++两大名库:boost写服务,qt写界面, 也算是很好的互补吧。
离线chen.kline

只看该作者 3楼 发表于: 2014-11-06
boost 就是个大怪物!
小小蝼蚁
http://weibo.com/chenkline
离线圣域天子

只看该作者 4楼 发表于: 2014-11-24
我前面公司,在windows下把boost放intel C下编译,搞了几个星期也没搞定
快速回复
限100 字节
 
上一个 下一个