版本 1.87.0
版本 1.87.0
2024 年 12 月 12 日 00:52 GMT
平台 | 檔案 | SHA256 雜湊值 |
---|---|---|
unix | boost_1_87_0.tar.bz2 | af57be25cb4c4f4b413ed692fe378affb4352ea50fbe294a11ef548f4d527d89 |
boost_1_87_0.tar.gz | f55c340aa49763b1925ccf02b2e83f35fdcf634c9d5164a2acb87540173c741d | |
windows | boost_1_87_0.7z | db6b7d77a2286ebe79d4aa7252c08b051d271fd8b013b6b18bc7a966552c1139 |
boost_1_87_0.zip | f367a218d27b23b568956bacf56d08d2c1d9647211337136be8cac5cb2ff0828 |
新函式庫
-
Parser: 由 Zach Laine 開發的建構剖析器的框架。
更新的函式庫
-
Asio:
-
新增了支援將位元組範圍和位元組範圍序列作為緩衝區序列使用。這表示它們可以直接傳遞至 I/O 操作,例如
async_read
。 -
新增了對泛型處置的支援,泛型處置是指可用於測試非同步操作是否在沒有錯誤的情況下完成的類型。這包括
error_code
和exception_ptr
,但可以透過特化disposition_traits
類別樣板來擴展到使用者類型。標準類型std::error_code
和std::exception_ptr
被識別為處置。 -
新增了對
boost::asio::use_future
完成令牌、基於boost::asio::awaitable<>
的協同程式、boost::asio::spawn()
和boost::asio::experimental::cancellation_condition
的處置支援。 -
新增了
execution_context::service_maker
抽象基底類別。service_maker
是一個物件,它會傳遞到執行內容的建構函式,並允許在內容建構時新增服務。 -
新增了
boost::asio::config
,它提供對與執行內容相關聯的組態參數的存取。該類別適用於 asio 內部,或適用於建立在 asio 之上的函式庫或使用者提供的抽象,通常會用於微調行為,例如啟用或停用某些最佳化。具體的組態來源,例如boost::asio::config_from_env
、boost::asio::config_from_concurrency_hint
和boost::asio::config_from_string
,可能會傳遞到io_context
或thread_pool
建構函式。 -
新增了 Asio 的
io_context
和thread_pool
實作所識別的初始組態參數集。 -
移除了一些先前已棄用的功能。
-
已棄用
basic_io_object
和deadline_timer
。 -
在關聯的繫結器中新增了 rvalue 限定的
operator()
多載。 -
新增了對模組化建置結構的支援。
-
修正了傳回僅移動類型之函式的
spawn()
。 -
修正了
co_composed
,使其不需要概念支援。 -
修正了 epoll 反應器,使其在分叉後不會嘗試重新註冊一般檔案描述符。
-
修正了
ssl::detail::engine
移動指派中的記憶體洩漏。 -
修正了定義
BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING
時的編譯錯誤。 -
修正了使用 Clang 19 時的編譯錯誤。
-
變更了
thread_pool::join()
,以確保它會停止使用thread_pool::attach()
後續新增到集區的執行緒。 -
修正了傳遞到
io_uring_prep_write_fixed
和io_uring_prep_read_fixed
的偏移量,當它們用於串流導向操作時。 -
請參閱修訂歷史以取得更多詳細資訊。
-
-
Beast:
-
API 變更
-
為
basic_fields::insert()
新增了error_code
多載。 -
新增了用於查詢 permessage-deflate 狀態的
websocket::stream::get_status
多載。
-
-
修正
-
修正了在
http::basic_stream
內對net::dispatch
呼叫中的移動後使用,這會導致在逾時時發生bad_executor
例外狀況。 -
移除啟動函式中的變更操作。
-
修正了
teardown_tcp_op
中的取消處理。 -
在呼叫
on_finish_impl
之前,在basic_parser
中設定state_
。 -
從
clamp
函式中移除靜態指定詞。 -
解決了測試中的
-Wattributes
警告。 -
解決了測試中無法連線的程式碼警告。
-
-
改善
-
為
beast::http
命名空間中的類型新增了轉寄宣告標頭 -
啟用
http::parser
以使用具有error_code
多載的basic_fields::insert()
-
在
http::basic_parser
中將header_limit_
應用於尾部標頭 -
改進了
http::basic_parser
以提早傳回http::error::header_limit
-
新增了對模組化 boost 建置結構的支援
-
-
誌謝
-
Jackarain、Saleh Hatefinya、René Ferdinand Rivera Morell
-
-
-
Charconv:
-
修正了使用
__ibm128
作為 long double 格式的 PPC64LE 架構的支援 -
修正了 Windows ARM64 平台上的內建函式用法
-
修正了使用
std::float128_t
或__float128
時,以指定精確度格式化固定的問題
-
-
Cobalt:
-
移除 get_executor 傳回 const ref 的要求
-
新增了 experimental/composition。
-
-
Compat:
-
新增了
to_array.hpp
(由 Ruben Perez Hidalgo 貢獻)。
-
-
Container:
-
為
static_vector
和small_vector
新增了stored_size
選項。
-
-
Filesystem:
-
如同在 1.84.0 中宣布的,不再支援 Windows 10 之前的版本。
-
在 Windows 上,
canonical
現在以GetFinalPathNameByHandleW
WinAPI 函式為基礎。副作用是,磁碟機代號會轉換為大寫,這使得產生的路徑更具互通性。(#325) -
v4:如果輸入路徑有尾端目錄分隔符號,
canonical
不再在產生的路徑中產生尾端目錄分隔符號。 -
如果使用可轉換為
path
的使用者定義類型和一或多個Source
類型的引數呼叫path
建構函式或成員函式,則預設會選擇轉換為path
。這可能會解決某些情況下的引數轉換不明確問題,但也可能會導致較不理想的轉換路徑。如果需要不同的轉換路徑,建議使用者使用明確的類型轉換。(#326) -
新增了針對 FreeBSD 9 及更舊版本上將
dirfd
作為巨集的因應措施。(#328)
-
-
Flyweight:
-
新增了
concurrent_factory
,這是基於 Boost.Unordered 中並行容器的工廠,可在多執行緒情境中提供卓越效能。
-
-
Geometry:
-
改善
-
在部分程式碼中使用 using 而非 typedef
-
在部分程式碼中使用別名現代化中繼函式
-
新增了對模組化建置結構的支援
-
完整的 CMake 涵蓋範圍(新增了 github actions cmake 測試)
-
改進文件工作流程
-
更新 Qt 結尾 WxWidgets 範例
-
新增列舉以準備 17 和 23
-
-
重大變更
-
移除已棄用的調整大小程式碼
-
-
-
Interprocess:
-
將 Boost 相依性的數量從 11 個(總計)減少到 7 個。
-
已棄用
<boost/interprocess/containers/*.hpp>
標頭。它們是 2011 年 Boost.Container 的原始來源,但不再維護。作為長期過渡,Boost.Interprocess 為了相容性維護了這些標頭。它們將在未來的 Boost 版本中移除。 -
新增了一些針對 Cygwin 的因應措施。回歸測試現在可以在 Cygwin64 上執行。
-
ABI 變更:
segment_manager
現在使用新的實作,支援對齊過度的型別並修正了一些現有的錯誤。您可以在包含 Boost.Interprocess 標頭檔之前,將BOOST_INTERPROCESS_SEGMENT_MANAGER_ABI
定義為1
,以取得 Boost 1.87 之前的 ABI。 -
已修正的錯誤
-
-
JSON:
-
直接序列化。
-
為 Boost.JSON 型別新增 GDB 美化列印器。
-
轉換為結構時忽略未知的鍵。
-
value_to
的例外處理行為已簡化。 -
已移除已棄用的初始化列表行為。
-
已移除已棄用的型別別名。
-
在 ARM64 上的 MinGW 使用正確的 64 位元完整乘法。
-
修正 parse_into 處理錯誤大小的元組。
-
檢查輸入大小是否大於允許的序列大小。
-
修正
value_ref
在 GCC 14 上產生區段錯誤。
-
-
LexicalCast:
-
已移除對 Boost.Integer 的依賴,從而縮短了編譯時間。
-
-
Log:
-
已將 Boost.Thread 的同步原語替換為 C++ 標準程式庫中的對等物。這可能會提高多執行緒效能,但也對使用者造成影響
-
不再支援 Boost.Thread 的執行緒中斷。Boost.Log 不再對
thread_interrupted
例外情況進行特殊處理,該例外情況由 Boost.Thread 用於實作執行緒中斷。此例外情況將像任何其他例外情況一樣處理。特別是,使用者指定的例外處理常式現在可能會使用thread_interrupted
待處理例外情況來叫用。 -
對於計時等待操作,逾時現在使用 std::chrono 時間單位。這表示
bounded_ordering_queue
和unbounded_ordering_queue
類別支援的ordering_window
命名參數現在預期std::chrono::duration
值,而不是 Boost.DateTime 中的boost::posix_time::time_duration
。 -
如果執行緒同步原語指示發生錯誤,則會擲回
std::system_error
例外情況,而不是 Boost.Thread 例外情況類型。
-
-
已將 C++ 標準程式庫鎖定類型新增至
strictest_lock
。
-
-
Mp11:
-
新增
mp_lambda
(由 Joaquin M Lopez Munoz 貢獻)
-
-
Multiprecision:
-
使
float128
可直接複製 -
即使在非 GNU 模式下,也將
__float128
作為浮點類型
-
-
MySQL:
-
實驗性 API 的重大變更:
-
已重新設計
connection_pool
中的執行緒安全功能,以克服使用者體驗發現的一些設計缺陷。已將布林選項thread_safe
新增至pool_params
(預設設定為false
)。設定後,某些集區函數會變更行為,使其可以安全地並行使用。這是透過在內部建立一個執行緒,在需要時將其分派,以及重新連接取消訊號來完成的。當pool_params::thread_safe
為false
時,會套用一般 Asio 執行器語意,而沒有任何額外負擔。 -
已移除
pool_executor_params
,並以pool_params::connection_executor
和pool_params::thread_safe
取代。 -
已完全移除
connection_pool::async_get_connection
中的內建逾時功能。此函數現在支援每個操作的取消,因此可以使用asio::cancel_after
來達成相同的功能。 -
現在,如同其他 Asio I/O 物件一樣,銷毀
connection_pool
會取消未完成的非同步操作。這可防止資源洩漏:未完成的async_run
操作會延長集區的生命週期,直到操作完成,這可能會導致集區物件永遠不會被銷毀。 -
當
async_get_connection
操作在連線可用之前取消時,該操作現在會持續失敗,並出現client_errc::pool_not_running
、client_errc::no_connection_available
或client_errc::pool_cancelled
,具體取決於集區狀態 (先前,它會因client_errc::timeout
或集區執行的內部async_connect
操作所遇到的最後一個錯誤碼而失敗)。此資訊現在已包含在輸出診斷物件中。 -
已移除
client_errc::timeout
和client_errc::cancelled
。 -
在未執行的集區上呼叫
async_get_connection
不再立即失敗,而是會等待呼叫async_run
。 -
sequence
現在會返回擁有類型。這使得在延遲的非同步操作中可以安全地與with_params
一起使用。format_sequence_view
已重新命名為format_sequence
。 -
sequence
已移至個別標頭檔boost/mysql/sequence.hpp
。
-
-
any_connection
、用戶端 SQL 格式化 (包括format_sql
和with_params
) 以及connection_pool
已提升為穩定 API。 -
現在建議新程式碼使用
any_connection
,而不是connection
及其別名tcp_connection
、tcp_ssl_connection
和unix_connection
。 -
新增
with_params
,這是一個新的ExecutionRequest
,其中封裝了查詢範本字串和用於展開查詢的參數。執行時,它會使用用戶端 SQL 格式化來展開查詢,並將其傳送至伺服器以執行。這是執行帶有參數的簡單查詢的新建議方式。 -
新增
with_diagnostics
,這是一個配接器完成 Token,可轉換非同步函數擲回的例外情況,以包含diagnostics
物件,與同步擲回函數的運作方式相符。 -
with_diagnostics(asio::deferred)
現在是any_connection
和connection_pool
中所有操作的預設完成 Token。這會導致像co_await conn.async_connect(params)
這樣的運算式行為與conn.connect(params)
完全相同。請注意,connection
及其型別別名尚未更新以符合此行為。 -
connection_pool
中的非同步函數現在支援每個操作的取消。 -
所有非同步操作現在都支援
asio::cancel_after
、asio::cancel_at
和類似的完成 Token,這些 Token 需要將繫結的執行器傳遞至asio::async_initiate
的起始設定。 -
connection
和any_connection
現在會透過 Token 的立即執行器分派立即完成。 -
修正了嘗試使用先前未連線的
any_connection
時導致崩潰的問題。 -
從
field
中可能擲回例外情況的建構函式中移除不正確的noexcept
指定詞。 -
修正了可能導致寫入緩衝區大小超出設定的緩衝區大小限制的問題。
-
大幅更新了文件和範例,使其更相關並反映新的建議最佳作法。
-
-
PFR:
-
對於具有大型大小和少量欄位的結構,顯著縮短了編譯時間。非常感謝 Zachary Wassall 的 PR#120。
-
修正了
pragma
指示詞。 -
C++20 模組的初始支援。請參閱文件以取得更多資訊。
-
C++17 中聚合欄位計數的預設限制已從 100 提高到 200。
-
修正了 GCC 不知道 -Wundefined-var-template 的警告。
-
編譯時間的多項小改進。
-
Process:
-
(v2) 實作了 Windows 上 async_wait 的取消。
-
(v2) 新增 FORCE_DISABLE_CLOSE_RANGE
-
(v2) ext:多個 ext 修正程式,適用於 BSD 和 Solaris。
-
(v2) 無法使用的
ext
函數現在會編譯並產生operation_not_supported
錯誤 (包括 IOS) -
(v2) 多個連結修正程式
-
(v2) 從連結的程式庫中移除了檔案系統 - 現在僅影響標頭檔的是使用哪個檔案系統程式庫
-
(v1) 為 1.88 版本新增了棄用通知。
-
-
SmartPtr:
-
不再支援 C++03,需要 C++11 編譯器。這包括 GCC 4.8 或更高版本,以及 MSVC 14.0 或更高版本。
-
由巨集
BOOST_SP_ENABLE_DEBUG_HOOKS
、BOOST_SP_USE_STD_ALLOCATOR
、BOOST_SP_USE_QUICK_ALLOCATOR
、BOOST_AC_USE_SPINLOCK
、BOOST_AC_USE_PTHREADS
、BOOST_SP_USE_SPINLOCK
和BOOST_SP_USE_PTHREADS
啟用的功能已棄用,並將在未來的版本中移除支援。
-
-
堆疊追蹤:
-
修正了在 Windows 作業系統下使用 clang 時,與
ole32.lib
和Dbgeng.lib
的自動連結。 -
修正了文件中遺失的命名空間。感謝 Mats Taraldsvik 的 PR#181。
-
Unordered:
-
重大更新。
-
新增了並發、基於節點的容器
boost::concurrent_node_map
和boost::concurrent_node_set
。 -
為並發容器新增了
insert_and_visit(x, f1, f2)
和類似的操作,允許在插入後立即訪問元素(相比之下,insert_or_visit(x, f)
僅在插入沒有發生時才訪問元素)。 -
使訪問在某些
boost::concurrent_flat_set
操作中受到獨佔鎖定的保護,以允許安全地修改元素 (PR#265)。 -
在 Visual Studio Natvis 中,支援任何使用花俏指標的分配器容器。這適用於任何花俏指標類型,只要為花俏指標類型編寫了正確的 Natvis 自訂點「Intrinsic」函式即可。
-
為所有容器和迭代器新增了 GDB 美化列印器。對於使用花俏指標的分配器容器,只有在為花俏指標類型本身編寫了正確的美化列印器時,這些列印器才能運作。
-
修正了開放定址容器的
std::initializer_list
指派問題 (PR#277)。 -
允許將不可複製的可呼叫物件傳遞給
std::initializer_list
的insert_{and|or}_[c]visit
並發容器多載,方法是在內部將可呼叫物件的std::reference_wrapper
傳遞給迭代器對多載。
-
-
UUID:
-
恢復了建構
constexpr uuid
的能力,該能力在 1.86 版中被無意中遺失了。
-
-
Wave:
-
建置改進,包括模組化建置支援,感謝 René Rivera
測試的編譯器
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 和 Ion Gaztañaga 管理此版本。