版本 1.52.0
版本 1.52.0
2012年11月5日 16:05 格林尼治标准时间
平台 | 文件 |
---|---|
unix | boost_1_52_0.tar.bz2 |
boost_1_52_0.tar.gz | |
windows | boost_1_52_0.7z |
boost_1_52_0.zip |
补丁
-
区域设置补丁 - 修复了一个导致
boost::locale::utf::utf_traits
接受某些无效 UTF-8 序列的错误,这是一个潜在的安全漏洞。
更新的库
-
配置:
-
为 gcc-4.4 定义
BOOST_NO_SFINAE_EXPR
,因为发现其支持存在太多错误。
-
-
Chrono:
-
已弃用的功能
-
Boost.Chrono 1.2.x 中包含的 Chrono I/O 版本已在 2.0.0 版本中完全重构。
-
Chrono I/O:操纵器
__duration_short
、__duration_long
已弃用。应使用参数化形式__duration_fmt
或重命名的操纵器__duration_symbol
和__duration_prefix
代替。 -
Chrono I/O:
__duration_punct<>
构面已弃用。应使用__get_duration_style
自由函数获取信息,并使用__duration_units
构面进行本地化。 -
当
BOOST_CHRONO_VERSION==2
时,上述已弃用的函数不可用。
-
-
不会修复
-
#6871 chrono_io.hpp:
operator<<(ostream& os, ...)
修改 os 的状态。2.0 版本中提供的新 I/O 接口解决了这个问题。您应该迁移到新版本。
-
-
Foreach:
-
修复 gcc 上的对齐警告。
-
-
进程间通信:
-
在
mapped_region
中添加了shrink_by
和advise
函数。 -
ABI 破坏性更改:使用循环缓冲区索引重新实现了
message_queue
(旧行为使用有序数组,导致过度复制)。这应该会大大提高性能,但会破坏 ABI。可以通过在boost/interprocess/detail/workaround.hpp
中未定义宏BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX
来使用旧的行为/ABI。 -
改进了
message_queue
插入时间,避免了常见情况下的优先级搜索(数组和循环缓冲区配置)。 -
实现了
interproces_sharable_mutex
和interproces_condition_any
。 -
改进了
offset_ptr
性能。 -
添加了整数溢出检查。
-
-
数学:
-
Phoenix:
-
使 Phoenix 能够与基于
decltype
的boost::result_of
一起使用。
-
-
多边形:
-
包含了 Voronoi 图扩展。
-
引入了新的线段概念。
-
修复了编译问题。
-
-
Proto:
-
原始转换的数据参数现在可以选择具有按键索引的槽。
-
原始转换现在可以对非 const 限定的临时表达式进行操作。
-
为
<iterator>
中的自由函数以及一些 Boost.Range 函数添加可调用函数对象类型。 -
Boost.MPL 算法可用于 Proto 表达式节点。
-
proto::pass_through
原始转换现在接受可选的Domain
模板参数,用于指定结果表达式的目标域。
-
-
线程:
-
已弃用的功能:自 Boost 1.50 以来已弃用的功能,仅在 Boost 1.55 之前可用。这些已弃用的功能将在 Boost 1.52 之前默认提供。如果您不想包含已弃用的功能,您可以定义 BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0。从 1.53 版本开始,这些功能将不再默认包含。从该版本开始,如果您仍然想包含已弃用的功能,您可以定义 BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0。这些已弃用的功能仅在 Boost 1.55 之前可用,也就是说您还有一年的时间迁移到新功能。
-
不使用 Boost.Chrono 库的时间相关函数,请改用 chrono 重载。
-
-
当
BOOST_THREAD_VERSION==3
(自 Boost 1.53 起的默认值)时的重大更改:有一些新功能共享相同的接口,但行为不同。当 BOOST_THREAD_VERSION 为 3 时,这些重大更改的功能将默认提供,但是用户可以选择版本 2 的行为,方法是定义相应的宏。至于已弃用的功能,这些已破坏的功能仅在 Boost 1.55 之前可用。 -
已修复的错误
-
#2361
thread_specific_ptr
:记录密钥的性质、复杂性和基本原理。 -
#2797
thread_specific_ptr
的两个问题。 -
#5274 使用 msvc8.1 下的 stlport 5.1.5 无法编译
future.hpp
,因为类未定义。 -
#5431 Windows CE 6.0 (互锁)中的编译错误。
-
#5752
boost::call_once()
在某些平台上不可靠。 -
#7045 线程库不会自动编译 date_time。
-
#7173 函数名错误
interrupt_point()
。 -
#7200 无法构建模块化的 boost.thread。
-
#7220 gcc 4.6.2 警告内联 + dllimport 函数。
-
#7238
this_thread::sleep_for()
不响应 interrupt()。 -
#7245 与版本 3 相关的文档中存在轻微的错别字。
-
#7272
win32/thread_primitives.hpp
:(不必要的)警告。 -
#7284 说明在共享互斥体上锁和共享锁之间没有访问优先级。
-
#7329
boost/thread/future.hpp
在 HPUX 上无法编译。 -
#7336
BOOST_THREAD_DONT_USE_SYSTEM
不起作用。 -
#7349
packaged_task
保持对临时对象的引用。 -
#7350
allocator_destructor
不会销毁对象。
-
-
已测试的编译器
Boost 的主要测试编译器是:
-
Linux
-
GCC:4.2.4、4.3.4、4.4.3、4.5.3、4.6.2、4.7.2
-
GCC,C++11 模式: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 模式: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 位和 64 位
-
Boost 的其他测试编译器包括:
-
Linux
-
Cray:8.0
-
Clang:来自 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 模式: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:来自 Subversion
-
Clang,C++11 模式:来自 Subversion
-
Intel:11.1、12.0
-
GCC:4.4.4
-
GCC,C++11 模式:4.4.4
-
-
Windows
-
Visual C++:8.0、9.0、10.0、11.0
-
使用 STLport 的 Visual C++:9.0
-
使用 STLport 的 Visual C++,Windows Mobile 5: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
-
GCC:4.2.1,64 位
-
-
Solaris
-
Sun:5.10
-
鸣谢
Beman Dawes、Eric Niebler、Rene Rivera、Daniel James、Vladimir Prus 和 Marshall Clow 负责此版本的管理。