版本 1.86.0
版本 1.86.0
2024 年 8 月 14 日 16:07 GMT
平台 | 檔案 | SHA256 雜湊值 |
---|---|---|
Unix | boost_1_86_0.tar.bz2 | 1bed88e40401b2cb7a1f76d4bab499e352fa4d0c5f31c0dbae64e24d34d7513b |
boost_1_86_0.tar.gz | 2575e74ffc3ef1cd0babac2c1ee8bdb5782a0ee672b1912da40e5b4b591ca01f | |
Windows | boost_1_86_0.7z | 413ee9d5754d0ac5994a3bf70c3b5606b10f33824fdd56cf04d425f2fc6bb8ce |
boost_1_86_0.zip | cd20a5694e753683e1dc2ee10e2d1bb11704e65893ebcc6ced234ba68e5d8646 |
新增函式庫
-
無新增函式庫。
已更新函式庫
-
Asio:
-
將
default_completion_token
特性的主要模板更改為選擇deferred
作為預設完成權杖。因此,大多數非同步操作的起始函式預設將返回延遲的非同步操作。 -
新增了
is_completion_condition
特性,並將缺少的預設完成權杖新增到async_read
、async_read_at
、async_write
和async_write_at
的多載中。 -
新增了
is_connect_condition
特性,並使用它在完成權杖預設的情況下消除async_connect
多載的歧義。 -
擴展了完成權杖轉接器
as_tuple
、bind_allocator
、bind_cancellation_slot
、bind_executor
、bind_immediate_executor
和redirect_error
,允許它們被用作部分完成權杖轉接器。 -
新增了
cancel_after
和cancel_at
完成權杖轉接器。 -
更改了所有完成權杖轉接器,以確保它們在轉接過程中正確傳播非同步操作的 I/O 執行器。
-
將
co_composed
移出experimental
命名空間。 -
新增了
composed
,它從狀態實現建立一個起始函式物件。它類似於co_composed
,但適用於常規函式物件,而不是 C++20 協程。 -
更改了
detached
完成權杖,使其可與具有多個完成簽章的非同步操作一起使用。 -
更改了
async_initiate
以允許空的完成簽章可變參數列表,這表示非同步操作永遠不會完成。 -
新增了
async_initiate
的多載,可自動推導完成權杖的類型。 -
新增了
async_immediate
,它實現了一個立即完成的簡單非同步操作,如果可用,則使用關聯的立即執行器。 -
啟用了基於 SFINAE 的
associator
特性的部分特化。 -
一些錯誤修正、編譯器/平台相容性改進,以及一些小的優化。
-
文件中和範例的各種更新。
-
有關更多詳細資訊,請參閱修訂歷史。
-
-
原子操作 (Atomic):
-
由於最近的 OpenBSD 版本已移除對
syscall(2)
的支援,因此在 OpenBSD 上使用futex(2)
系統呼叫。
-
-
Beast:
-
API 變更
-
新增了 HTTP 狀態碼 418
I'm a teapot
(我是茶壺)。
-
-
修正
-
read_size_hint_db()
中的窄化轉換 (narrowing conversion)。 -
使用預設 completion tokens 時不明確的重載 (overloads)。
-
http::basic_fields
移動賦值運算子 (move-assignment operator) 中位置錯誤的 static_assert。 -
WebSocket 部分寫入操作中
bytes_transferred
的下溢 (underflow)。 -
websocket::stream::read_size_hint()
不超過read_message_max
。 -
測試中的各種警告。
-
範例中 SSL 關閉操作的錯誤處理。
-
在 zlib 中標註 fallthrough 案例。
-
basic_stream::ops::transfer_op
中過期計時器的處理。 -
test::basic_stream
建構函式重載的歧義。 -
http::parser
中最後一個區塊的部分解析。
-
-
改進
-
server_flex_awaitable
範例中的優雅關閉。 -
簡化的 awaitable 範例。
-
新增了模糊測試 (fuzzing) 目標。
-
移除一些範例中多餘的
std::bind
使用。 -
ssl_stream
不使用flat_stream
。
-
-
文件
-
ssl_stream
和flat_stream
標記為已棄用。 -
net::ssl::stream
在程式碼片段和範例中是標準用法。 -
新增了「SSL/TLS 關閉程序」章節。
-
-
致謝
-
tyler92, Ruslan Zakirov, Orgad Shaneh, Alexander Kernozhitsky
-
-
-
Charconv:
-
修正了對 PPC64LE 架構的支援。
-
修正了對提供
<quadmath.h>
標頭但不提供已編譯程式庫的平台(例如 Alpine Linux)的支援。 -
修正了整數類型
from_chars
中的首字元模式匹配。 -
修正了基數大於 10 的整數的溢位偵測。
-
增加了對
std::float16_t
和std::bfloat16_t
的原生支援,而不是使用交換格式。
-
-
Cobalt:
-
新增了對 asio::cancel_after 的支援
-
使
asio::deferred
可以 co_await,因為它是 asio 的預設 token -
新增了
noop
工具程式 -
新增了對堆疊式協程/纖程的實驗性支援
-
修正通道和協程類型的可移動性問題
-
-
相容性:
-
新增了
bind_front.hpp
、bind_back.hpp
、invoke.hpp
、mem_fn.hpp
、integer_sequence.hpp
和type_traits.hpp
等標頭檔。 -
新增了
function_ref.hpp
標頭檔。
-
-
容器:
-
修正錯誤/問題
-
-
CRC:
-
不再支援 C++03;需要 C++11 編譯器。(這包含 GCC 4.6 或更高版本,以及 MSVC 10.0 (VS 2010) 或更高版本。)
-
移除對 Array、Config、Integer 和 TypeTraits 的依賴。該函式庫現在是獨立的。
-
-
檔案系統:
-
`is_empty` 操作現在可以更好地防止併發檔案系統修改。
-
在 POSIX 系統上,如果在非一般檔案或目錄的檔案上呼叫 `is_empty`,現在會指示錯誤。
-
在 Windows 上,修正了 `file_size` 和 `is_empty` 對符號連結而非符號連結所指向的檔案進行操作的問題。(#313)
-
directory_entry::refresh
現在即使項目所參考的檔案不存在,也不會拋出例外。這使得directory_entry::status
和directory_entry::symlink_status
,以及基於它們的方法,其行為與對應的獨立操作類似。檔案不存在的情況仍然會透過對應的directory_entry::refresh
多載所返回的error_code
指示,或者可以透過測試directory_entry::status
或directory_entry::symlink_status
呼叫返回的檔案類型是否為file_type::file_not_found
來確認。(#314) -
修正了
weakly_canonical
在輸入路徑為相對路徑時,會針對目前路徑而不是呼叫中指定的基底路徑來測試路徑元素是否存在的問題。 -
在 Windows 上,修正了當輸入路徑以 ".." 開頭時,
weakly_canonical
產生不正確結果路徑的問題。(#311)
-
-
**格式 (Format)**:
-
不再支援 C++03;需要 C++11 編譯器。(這包含 GCC 4.7 或更高版本,以及 MSVC 12.0 (VS 2013) 或更高版本。)
-
-
**功能 (Function)**:
-
移除對 Boost.TypeTraits 的依賴。
-
恢復了在 1.85 中意外遺失的
argN_type
類型定義。
-
-
**泛型圖像程式庫 (GIL)**:
-
**新增 (Added)**
-
致謝
-
貢獻者:Christoph Gringmuth, Christopher Kormanyos, nicolacandussi, Dirk Stolle, Olzhas Zhumabek
-
-
-
**圖形 (Graph)**:
-
*重大* 更新:C++14 是新的最低標準;這部分是由依賴項(至少是 C++11)決定的,部分是出於選擇。如果您需要支援較舊的標準,請聯繫維護人員。
-
移除對 Boost.Regex 的直接依賴。
-
修正了幾個由於未明確包含常用標頭檔而導致的編譯錯誤。
-
isomorphism
:修正文件,忽略vertex_max_invariant
參數,改用低成本計算上限(不包含),修正關聯屬性映射的錯誤,將空間效率從最大不變量大小的線性提升到 g1 大小的線性。 -
boykov_kolmogorov_max_flow
:修正命名參數多載。 -
adj_list_edge_iterator
:修正可能未初始化的警告。 -
hawick_circuits
:新增一個參數來選擇性地限制搜尋深度,以便及早返回可能並非最佳的答案。 -
disjoint_sets
:透過移除多餘的集合代表元素查找,提升link_sets
的效能。 -
maximum_adjacency_search
:重構並新增更多測試。 -
property
:使用BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS
來移除浪費的空間。 -
labeled_graph
:修正remove_labeled_vertex
,使其確實移除標籤。 -
r_c_shortest_paths
:修正單一解版本未總是返回最短路徑的錯誤。 -
read_graphviz
:修正堆疊溢位問題(oss-fuzz 問題 66719)和非關鍵字子圖解析問題。 -
許多其他方面的改進:損毀的連結、拼寫錯誤等等。
-
-
LexicalCast:
-
修正了包含一個或多個
\0
字元的std::basic_string_view
和boost::basic_string_view
的轉換。此問題是在 1.85.0 中引入的。
-
-
leaf:
-
更優化的 verbose_diagnostic_info 實作。
-
錯誤修正。
-
已將 [[nodiscard]] 新增至 class result<>。
-
-
Locale:
-
在
conv::utf_to_utf
中新增對自訂配置器的支援 -
預設情況下不建置範例
-
-
數學 (Math):
-
修正無窮大時的貝索函數結果,請參閱 1143。
-
提升非中心 t 分配的數值穩定性,請參閱 scipy20693。
-
修正無窮大時
float_next
/float_prior
的行為。 -
防止非中心貝塔分佈中的虛假下溢,請參閱 scipy20693。
-
提升 Heuman Lambda 的精度。
-
改進偏態常態分佈的尋根演算法,請參閱 1120。
-
許多小修正和程式碼覆蓋率的提升。
-
-
MySQL:
-
已移除長期棄用的函式
query
、start_query
、execute_statement
和start_statement_execution
(及其非同步版本)。 -
實驗性 API 的重大變更
-
已移除
identifier
類別(用戶端 SQL 格式化)。請改用新的格式指定子功能。 -
為了適應新的格式說明符 API,自訂格式器的所需介面已變更。
-
any_connection::async_connect
現在要求其connect_params
參數必須保持有效直到操作完成。採用const connect_params*
的多載已被移除。 -
character_set::name
現在是const char*
類型,而不是string_view
,因為 MySQL 字元集名稱不能包含 NULL 字元。 -
any_connection
的內部緩衝區現在限制為 64MB。如果您需要讀取或寫入大於此大小的資料列,請增加any_connection_params::max_buffer_size
的值。connection
及其輔助類型定義則沒有此限制。 -
將
any_connection_params::initial_read_buffer_size
重新命名為initial_buffer_size
。 -
將
pool_params::initial_read_buffer_size
重新命名為initial_buffer_size
。
-
-
新的實驗性 API:**管道(pipelines)**。管道可以透過將多個請求合併到單個網路封包中來提高效率。管道可用於執行文字查詢、準備、執行和關閉語句、重設工作階段狀態以及設定連線的字元集。
-
客戶端 SQL 格式化現在直接支援範圍。可以使用新的
sequence
函式進一步自訂格式化。使用此功能可以大幅簡化批次插入和批次查找等用例。 -
客戶端 SQL 格式化現在支援格式說明符,用於修改值的格式化方式。
{:i}
將字串格式化為動態 SQL 識別符號,而{:r}
則輸出原始未逸出的字串。 -
靜態介面(
static_results
和static_execution_state
)現在使用pfr_by_name
和pfr_by_position
支援 Boost.Pfr 類型。新增了underlying_row_t
來支援此類類型。 -
date
和datetime
現在可以從 C++20 的std::chrono::local_time
建構,也可以轉換為該類型。 -
新增了
any_connection_params::max_buffer_size
,允許設定連線內部緩衝區的限制。 -
新增了
is_fatal_error
,允許使用者區分致命錯誤碼(需要關閉並重新開啟連線)和非致命錯誤碼。 -
新增了
formattable_ref
,這是一個類型擦除的引用類型,可以引用任何滿足Formattable
概念的類型。 -
修正了 MSVC 下的 ODR 違規,該違規在使用 Boost.MySQL 並且在不同翻譯單元中也使用
asio::coroutine
的程式碼時,可能導致發布版本崩潰。
-
-
Process (行程):
-
將舊的 boost.process 移至 v1 子資料夾和內聯命名空間。已棄用 process/*.hpp v1 標頭檔。
-
將 v2 轉換為編譯函式庫。
-
修正了在 Alpine Linux / musl 上的使用問題。
-
-
Stacktrace (堆疊追蹤):
-
**重要新功能:Windows 平台任意異常的堆疊追蹤**。`std::stacktrace::from_current_exception()` 現在可在 Windows 平台上運作。非常感謝 huangqinjin 的實作貢獻 (PR#159)。現在在 POSIX 和 Windows 上,`from_current_exception()` 函式會返回當前異常物件的堆疊追蹤,如同在拋出異常時擷取堆疊追蹤一樣。
-
修正了包含少用 Windows SDK 標頭檔的問題,此問題可能與其他使用 Windows SDK 的程式碼衝突。感謝 Marat Abrarov 修正了此問題 (PR#157)。
-
建置選項 `boost.stacktrace.from_exception` 現在可以在 macOS 上正常運作。感謝 Peter Dimov 的修正 (PR#166)。
-
修正了斷言表達式中的拼寫錯誤。感謝 Kilian Henneberger 的錯誤回報 (#164)。
-
修正了變數遮蔽警告。感謝 Nigel Stewart 的錯誤回報 (#141)。
-
為 AIX 添加了 `dladdr` 的最小支援。非常感謝 Clément Chigot 的實作貢獻 (PR#114)。
-
添加了 `Boost::stacktrace` CMake 別名,它指向平台上支援最佳的 Boost.Stacktrace 實作。感謝 Alex 的功能貢獻 (PR#167)。
-
CMake 的重大改進:多項修正、添加許多新測試、改進了持續整合。非常感謝 Peter Dimov 的所有改進。
-
修正了透過 `PATH` 查找程序時 addr2line 的運作問題。感謝 Schreischildkroete 的錯誤回報和 Jens Richter 的修正 (#72)。
-
-
測試:
-
在設定步驟中修正了 `-Wundef` 問題。
-
修正了 MSVC 上無法到達的返回編譯錯誤。
-
-
無序:
-
當標頭檔 `
` 可用時,添加了容器 `pmr` 別名。別名 `boost::unordered::pmr::[container]` 指的是使用 `std::pmr::polymorphic_allocator` 分配器類型的 `boost::unordered::[container]`。 -
使開放定址和並行容器能夠內部計算並提供受雜湊函數品質影響的統計指標。此功能由全域巨集 `BOOST_UNORDERED_ENABLE_STATS` 啟用。
-
現在必須透過具有內嵌常數 `value` 設為 `true` 的 `is_avalanching` 類型定義來標記雪崩雜湊函數(通常將 `is_avalanching` 定義為 `std::true_type`)。`using is_avalanching = void` 已被棄用,但為了向後相容性仍然允許使用。
-
為容器和迭代器添加了 Visual Studio Natvis 框架的自訂視覺化功能。這適用於所有使用原始指標的分配器的容器。在此版本中,如果容器和迭代器的分配器使用 fancy 指標,則不受支援。這可能會在後續版本中解決。
-
-
WinAPI:
-
新增了
BOOST_USE_WINAPI_VERSION
CMake 選項,允許使用者指定 Boost 要鎖定的 Windows 版本。
-
已更新工具
-
BoostBook:
-
DTD 已更新:
constructor
、copy-assignment
和destructor
元素現在允許在method-group
元素內使用。 -
Doxygen 生成的文件中許多錯誤修復和改進。
-
修復了 Doxygen 生成的列舉值初始化程式中重複等號的問題。
-
停用了函式參數的字母順序排序。可以透過將新的
boost.sort.params
XSL 參數設定為 1 來重新啟用排序。 -
新增了對自訂類別成員分組的支援。請參閱 Doxygen 標籤
@name
和@{
/@}
。 -
新增了對 Doxygen 參考類別、方法、列舉、變數等的支援(請參閱
@ref
標籤)。 -
新增了對
@remark
和@important
標籤的支援。 -
新增了對
@parblock
標籤的支援,可用於在需要單個段落作為參數的標籤下放置多個段落(例如@returns
)。 -
現在隱藏了參考實作細節的模板參數預設值,類似於函式參數預設值。
-
改進了未命名列舉的呈現方式。不再顯示合成的名稱,例如
@0
,而是省略名稱或使用[unnamed]
(如果需要該名稱來引入指向列舉文件的連結)。 -
將「另請參閱」(
@sa
)區塊更改為以行內顯示,類似於「傳回值」。 -
修復了多個例外規範(
@throws
)的呈現方式。 -
新增了對自由格式拋出行為描述的支援。如果
@throws
標籤後的例外類型為「~」,則輸出中會省略例外類型,並直接在「Throws」(拋出)區段中顯示後續的描述。 -
移除回傳類型和模板參數中多餘的空格。
-
-
-
建置:
-
包含 B2 版本 5.2.1 的發佈。
-
已測試的編譯器
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 (macOS)
-
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 和 Ion Gaztañaga 負責管理此版本。