版本 1.82.0
版本 1.82.0
2023 年 4 月 14 日 03:08 GMT
平台 | 檔案 | SHA256 雜湊值 |
---|---|---|
Unix | boost_1_82_0.tar.bz2 | a6e1ab9b0860e6a2881dd7b21fe9f737a095e5f33a3a874afc6a345228597ee6 |
boost_1_82_0.tar.gz | 66a469b6e608a51f8347236f4912e27dc5c60c60d7d53ae9bfe4683316c6f04c | |
Windows | boost_1_82_0.7z | e72ff100482d4b371327b6c550dbd244d49c0186860ccc3b8c093dd621537e39 |
boost_1_82_0.zip | f7c9e28d242abcd7a2c1b962039fcdd463ca149d1883c3a950bbcc0ce6f7c6d9 |
已知問題
以下是由函式庫作者提供的修補程式,這些問題在發佈版本時發現已為時已晚。
停止支援 C++03 的通知
以下函式庫將在兩個版本後的 1.84 版中停止支援 C++03
-
Align
-
Any
-
Asio
-
Atomic
-
Bind
-
Chrono
-
ContainerHash
-
Conversion
-
DLL
-
Endian
-
檔案系統 (Filesystem)
-
Function
-
Functional
-
Io
-
LexicalCast
-
Log
-
Random
-
Ratio
-
SmartPtr
-
System
-
Stacktrace
-
Thread
-
Timer
-
TypeIndex
-
Typeof
-
Unordered
-
Variant
此版本 (1.82) 和下一個版本 (1.83) 將是最後提供上述函式庫及其大多數依賴項之 C++03 支援的版本。
上述函式庫以及大部分 Boost 函式庫的新基準需求將是 C++11。由於舊版編譯器通常只會部分實作 C++11(因為缺少支援或錯誤),因此被視為符合 C++11 需求的編譯器可能會因函式庫而異。
然而,一般規則是,如果編譯器根本無法辨識 C++11 關鍵字或語法(例如,使用 noexcept
、使用 constexpr
或定義 =delete
的函式會導致立即編譯錯誤),或者如果編譯器根本不提供所需的 C++11 標頭(例如,嘗試包含 <atomic>
或 <chrono>
失敗),或者編譯器提供的 C++11 功能或標頭完全無法使用,則此編譯器不被視為 C++11 編譯器。
這表示不支援例如 14.0 之前的 Microsoft Visual C++,或 4.8 之前的 GCC。
新增函式庫
-
Mysql: 一個基於 Boost.Asio 的 MySQL 資料庫伺服器 C++11 用戶端,由 Ruben Perez 開發。
更新函式庫
-
Asio:
-
新增了自訂操作立即完成時執行完成處理程式的能力。
-
新增了緩衝區類型的使用者定義字面常數。
-
新增了一個新的協定類型
local::seq_packet_protocol
來表示使用SOCK_SEQPACKET
的AF_UNIX
。 -
透過
signal_set::add
的一個可選參數,公開了sigaction()
旗標。 -
更改
allocator_binder
、executor_binder
和cancellation_slot_binder
以支援未特化的關聯器的檢測。 -
修正了
associated_cancellation_slot<reference_wrapper>::get()
中的歧義。 -
修正了包含
std::exception_ptr
的完成簽章的awaitable<>
處理。 -
修正了在
cancel
後experimental::channel<>
try_send
失敗的問題。 -
修正了當線程池沒有內部線程時,
thread_pool::join()
死鎖的問題。 -
修正了使用io_uring 時 pipe
release()
的問題。. -
修正了io_uring 時 pipe
release()
的問題。後端中的資料初始化和清理問題。 -
修正了
get_associated_executor()
的執行上下文重載中懸空參考的問題。 -
確保在
experimental::channel<>
關閉時仍然可以接收緩衝的消息。 -
修正了
any_completion_handler
賦值運算子。 -
限制了
any_completion_handler
的建構函式,以防止意外複製。 -
更改為使用
uint64_t
作為 OpenSSL 選項,以匹配 OpenSSL 3。 -
修正了
deferred
與多個完成簽章的互通性。 -
修正了通道,以增加對 C++11 和 C++14 的部分支援。
-
在等待打包的非同步操作時,為
co_composed
和 'awaitable<>' 協程新增了缺少的處理程式追蹤來源位置支援。 -
修正了一些「潛在的空指標解參考」和陰影變數警告。
-
修正了與
const_buffers_1
和mutable_buffers_1
一起使用時asio::buffer
重載選擇的問題。 -
除非目標是較舊的 Windows,否則停用目前 Windows 版本的運行時檢查。
-
修正了緩衝串流包裝器與可移動建構串流(例如
ssl::stream<>
)之間的相容性問題。 -
修正了
basic_socket_acceptor::async_accept
與具有推導返回類型的 lambda 的相容性。 -
修正了
as_tuple
與舊版完成記號的相容性。 -
修正了
redirect_error
與新版完成記號的相容性。 -
修正了 Windows 特有的潛在程式終止問題,該問題是由於異常應被允許從解構函式中跳出而引起的。
-
防止了對布林運算式進行不慎的
co_await
操作。 -
修正了
experimental::use_coro
中的結果處理和對自訂配置器的支援。 -
修正了
is_async_operation
和completion_signature_of
的可變參數模板模擬。 -
修正了
experimental::promise
中對已移動結果的錯誤重複使用。 -
修正了
experimental::coro
與自訂配置器一起使用的情況。 -
修正了 Windows 上以串流導向檔案使用
seek_cur
的行為。 -
對文件進行了各種新增和修改。
-
有關更多詳細資訊,請參閱修訂歷史記錄。
-
-
Atomic:
-
在為支援 AVX 的 x86 目標編譯時,現在會將向量指令用於 128 位元原子載入和儲存。
-
對於 32 位元 x86 目標,具有
memory_order_seq_cst
語義的 64 位元原子載入和儲存現在將發出記憶體排序指令。 -
移除了在 Boost.Atomic 1.73 中已棄用的
atomic<T>::storage()
存取器和atomic<T>::storage_type
類型。建議使用者改用atomic<T>::value()
和atomic<T>::value_type
。
-
-
Beast:
-
新增
error_code
使用 source_location -
tcp_stream 使用計時器的正確執行器。
-
錯誤類別使用數值 ID。
-
file_body
支援搜尋。
-
-
ContainerHash:
-
為
std::nullptr_t
新增了hash_value
的重載。 -
為類似 tuple 的類型新增了
is_tuple_like
和hash_value
的重載。 -
將字串雜湊更改為使用
mulxp1_hash
。這提高了品質和速度。
-
-
核心:
-
新增了
boost/core/snprintf.hpp
標頭,其中包含snprintf
、vsnprintf
及其wchar_t
對應項的可攜式定義。 -
已棄用
boost/core/is_same.hpp
標頭檔和boost::core::is_same
。該標頭檔將於未來版本中移除。建議用戶改用 Boost.TypeTraits 或 C++ 標準函式庫的型別特徵 (type traits)。 -
已將
boost::ref
的成員函式和相關方法標記為noexcept
。 -
已將
boost::swap
函式標記為noexcept
,取決於該型別是否支援不擲回例外的 swap 操作。 -
新增
boost::core::launder
,一個可移植的std::launder
實作。 -
新增
BOOST_CORE_ALIGNOF
,一個可移植的alignof
實作。 -
新增
boost::core::max_align_t
,一個可移植的std::max_align_t
等效項,以及boost::core::max_align
,即max_align_t
的對齊大小。 -
新增
boost::core::memory_resource
,一個可移植的 C++17std::pmr::memory_resource
等效項。 -
新增
boost/core/serialization.hpp
,一個允許函式庫為其型別實作 Boost.Serialization 支援的基礎元件集合,無需引入 Serialization 標頭檔,從而避免函式庫對 Serialization 的依賴。 -
新增
boost::data
,一個std::data
的實作。 -
新增
boost::size
,一個std::size
的實作。 -
更新
boost::span
以使用boost::data
,新增了從std::initializer_list
建構範圍的支援。 -
新增
boost::identity
,一個std::identity
的實作。此功能已從 Boost.Functional 移至這裡。
-
-
檔案系統 (Filesystem):
-
修正了可能由
path
轉換建構函式對接受的引數過於寬鬆所導致的編譯錯誤。(#273) -
v4:
path::remove_filename
現在會保留尾端的目錄分隔符號。(#271) -
新增
path::remove_filename_and_trailing_separators
,它會從路徑中移除檔名及其前面的目錄分隔符號。此行為類似於檔案系統 v3 中的path::remove_filename
,但在 v4 中也可以使用。 -
新增
path::replace_filename
,用於替換路徑中的檔名。 -
更新了函式庫版本選擇的實作,以避免 ODR 違規。(#279)
-
在 Windows 上,新增了針對 SMBv1 共享中檔案屬性查詢的因應措施。先前,SMBv1 共享中的目錄可能被回報為一般檔案。這不影響 SMBv2 或更新版本。(#282)
-
-
直方圖 (Histogram):
-
將
detail::span
和detail::make_span
替換為boost::core
中的實作 -
文件改進
-
在某些情況下,保護
std::min
和std::max
的使用,由 Han Jiang 貢獻 (熱門的 Windows 標頭會非法設定 min、max 巨集,因此我們需要解決此問題) -
新增測試以捕捉未來程式庫中未受保護的 min、max 權杖的使用
-
修正以支援最新的 clang-14 和 gcc-11+ 中的推導指南
-
-
JSON:
-
set_at_pointer
. -
boost::hash
支援。 -
呼叫者提供的序列化器儲存空間。
-
針對
std::optional
,value_to
支援缺少的元素。 -
修正轉義字元內的剖析器暫停。
-
使 sentinel() 返回唯一指標。
-
-
地區設定 (Locale):
-
對於尾隨 (UTF) 代理項,
utf8_codecvt::out
會返回partial
-
新增
boost::locale::util::locale_data
以剖析地區設定 -
boost::locale::info::encoding()
的結果現在如文件中所示為大寫,例如 "UTF-8" 而不是 "utf-8" -
改進缺少分段支援 (即沒有 ICU) 的錯誤訊息 PR#149
-
修正編譯器警告
-
數學 (Math):
-
C++11 支援棄用:現在最低支援 C++14 標準。我們最低測試的編譯器版本現在是 Clang-5、GCC-5 或 MSVC-14.1。
-
新增 Estrin 方法用於多項式求值。
-
修正非中心分佈中的各種問題,以允許更大的非中心性,詳見 939。
-
新增 CMake 安裝目標。
-
修正 special_functions.hpp 以停用在無異常環境中無法使用的任何功能。
-
使條件數計算在 C++14 中正常運作。
-
改進 tanh_sinh 邊界處理,詳見 894。
-
新增 Linux arm64、s390x 和 Apple M1 測試,修正測試案例以處理 128 位元 long double。
-
改進
constexpr
數學函式以更好地處理無限大和 NaN。 -
使積分器 const-correct。
-
修正當被積函式下溢時 tanh_sinh 積分器的問題,詳見 898。
-
不再使用
std::cbrt
,因為某些平台仍不支援它。 -
阻止非中心 T 引發虛假的 FE_INVALID 異常,詳見 892。
-
修正二項式分佈的邊緣情況。
-
改進 ibeta 處理非常小的參數,詳見 884。
-
改進 ibeta 處理無限大和 NaN,詳見 878。
-
改進 powm1 中的錯誤處理,詳見 781。
-
改進求根括弧法,以便在指數非常大或非常小時更快地括弧。
-
修正求根的邊緣情況,詳見 873。
-
許多雜項警告修正。
-
在使用需要 C++17 的功能時新增斷言,以便在以較低標準版本呼叫編譯器時提供更好的錯誤訊息。
-
-
多索引容器:
-
序列化現在使用
unsigned long
而不是collection_size_type
,並且multi_index_container
序列化 類別版本 已從 2 提升到 3 以反映此變更。對於特殊處理collection_size_type
值的自訂封存類型,讀取舊封存可能會失敗:如果是這種情況,請全局定義巨集BOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2
以確保讀取操作中的回溯相容性。 -
維護工作。
-
-
多精度運算:
-
C++11 支援棄用:現在最低支援 C++14 標準。我們最低測試的編譯器版本現在是 Clang-5、GCC-5 或 MSVC-14.1。
-
新增新的前向宣告標頭檔。
-
更新 Eigen 互通性,使我們不再依賴 Eigen 的細節,詳見 479。
-
新增 Cmake 安裝目標。
-
修正獨立情況下 cpp_dec_float 從字串建構的錯誤處理,詳見 499。
-
在 C++17 模式下移除冗餘定義,詳見 530。
-
修正獨立 itrunc 和 ltrunc 中的錯誤處理。
-
修正解析八進位字串時可能未初始化的儲存空間。
-
新增 arm64 和 s390x CI 測試。
-
為
powm
新增一些遺漏的表達式模板解包程式碼,詳見 506。
-
-
PFR:
-
實作了
boost::pfr::is_implicitly_reflectable
以及將聚合專門化為可反射或不可反射的機制,感謝 Denis Mikhailov 的 PR PR#111。 -
以聚合元素的類型實作了
boost::pfr::get
。 -
實作了
BOOST_PFR_ENABLED
巨集來檢測程式庫是否支援反射,感謝 Denis Mikhailov 的 PR PR#86。 -
修正了缺少終止字元的錯誤,感謝 Denis Mikhailov 的 PR PR#114。
-
修正了在舊版編譯器上編譯
boost/pfr/config.hpp
的問題,感謝 Denis Mikhailov 的 PR PR#118。 -
針對舊版編譯器中損壞的 C++17 結構化綁定提供了解決方法,感謝 Denis Mikhailov 的 PR PR#119。
-
避免 -Wzero-as-null-pointer-constant 警告,感謝 Markus F.X.J. Oberhumer 的 PR PR#117。
-
修正了多個拼寫錯誤,感謝 Denis Mikhailov 的修正。
-
多項文件修正和改進。
-
-
處理程序:
-
在 V2 中加入了外部處理程序的管理(仍處於實驗階段)
-
在 V1 中棄用了
wait_for
和wait_until
,它們將在未來移除!
-
-
Stacktrace:
-
修正了文件和註釋中的拼寫錯誤,感謝 Chocobo1 的 PR PR#132。
-
如果定義了
BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC
,則修正了backtrace_create_state
的多執行緒標誌檢測。
-
-
靜態字串 (StaticString):
-
Boost.Core
string_view
和std::string_view
的互通性
-
-
測試:
-
修正了幾個未使用的變數警告
-
修正了 sprintf 棄用警告
-
修正了
basic_cstring::rfind
中的未定義行為 -
透過 Github Actions 加入 CI
-
-
網址 (URL):
-
加入具有自動百分比編碼的
url::format
-
URL 路由器範例
-
set_params
便利函數 -
支援隱式轉換為
string_view
-
解析建構函數是隱式的
-
string_token::arg
具有虛擬解構函數和切片保護 -
支援
BOOST_URL_DISABLE_THREADS
-
改進與錯誤修正
-
WIN32_LEAN_AND_MEAN 巨集重複定義警告
-
比較功能可區分缺失和空的組件
-
使用類似空埠的區段檢測
hier_part_rule
-
如同正規化的區段比較在根目錄以上也能運作
-
hier-part 無路徑根會考慮無效的區段
-
當數字埠溢位時,會被設為 0
-
ipv4 轉字串的溢位偵測演算法
-
-
已更新的工具
-
建置:
-
包含 B2 版本 4.9.4 的發行。
-
已測試的編譯器
Boost 主要測試的編譯器為
-
Linux
-
Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
GCC, C++03: 4.6.3, 11, 12
-
GCC, C++11: 4.7.3, 4.8.5, 11, 12
-
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
-
-
OS X
-
Apple Clang, C++03: 11.0.3
-
Apple Clang, C++11: 11.0.3
-
Apple Clang, C++14: 11.0.3
-
Apple Clang, C++17: 11.0.3
-
Apple Clang, C++20: 11.0.3
-
-
Windows
-
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
-
致謝
Marshall Clow 和 Glen Fernandes 管理此版本。