版本 1.85.0
版本 1.85.0
2024 年 4 月 15 日 17:38 GMT
平台 | 檔案 | SHA256 雜湊值 |
---|---|---|
Unix | boost_1_85_0.tar.bz2 | 7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617 |
boost_1_85_0.tar.gz | be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b | |
Windows | boost_1_85_0.7z | 16d16b9658753117c1434e5450c5eac194957f4b6d0b390b9d07900d37c115a4 |
boost_1_85_0.zip | e712fe7eb1b9ec37ac25102525412fb4d74e638996443944025791f48f29408a |
已知問題
這些是函式庫作者提供的修補程式,在發佈時發現已為時已晚,無法修復。
新增函式庫
已更新函式庫
-
Asio:
-
修正了
async_result
主要模板的概念檢查,以正確處理左值限定的完成簽章 (completion signature)。 -
修正了在使用
bind_allocator
、bind_executor
、bind_immediate_executor
和bind_cancellation_slot
完成權杖配接器互相調整時可能發生的編譯錯誤。 -
變更
experimental::ranged_parallel_group
操作,使其在調用完成處理器時移動completion_order
向量。 -
修正了關於
ip::basic_resolver_query
、io_context::strand
和coroutine
上已棄用的隱式複製建構函式的警告。 -
更新了用於初始化 Winsock 的版本規格。
-
修正了
co_spawn
,以正確地將取消導致的例外傳播到完成處理器。 -
增加了對
std::launder
的呼叫,以修復awaitable<>
內部儲存中的未定義行為。 -
在 Windows 檔案支援的實作中,增加了遺漏的
file_base::append
旗標處理。 -
更新了 socket 和描述元實作,增加了更多在呼叫
ioctl
失敗時會回退到fcntl
的情況。 -
修正了boost/asio/experimental/parallel_group.hpp標頭檔,使其自包含。
-
修正了在同一個轉譯單元中同時使用通道和
experimental::coro
時發生的編譯錯誤。 -
在文件中增加了遺漏的 CancellationSlot 類型需求。
-
修正了非同步操作啟動函數的推導返回類型的文件超連結。
-
其他次要文件更新。
-
-
Atomic(原子操作):
-
在 RISC-V 上新增了對
pause
指令的支援。(PR#65)
-
-
Beast(網路程式庫):
-
API 變更
-
狀態碼列表已更新,以符合 IANA 註冊表。
-
-
修正
-
buffers_cat.hpp
中無法到達的程式碼警告。 -
websocker_server_awaitable
範例中的連線錯誤處理。 -
在進階伺服器範例中併發呼叫
async_write
。 -
zlib 與 minizip 的名稱衝突。
-
在
SSL_set_tlsext_host_name()
之後應更新主機字串。
-
-
改進
-
針對
bind_wrapper
和bind_front_wrapper
特製化了asio::associator
。 -
新增錯誤類別訊息函式的非配置重載。
-
-
說明文件
-
指定何時呼叫
http::message::prepare_payload()
是可選的。 -
受
basic_stream::expires_after()
影響的操作。 -
teardown()
和async_teardown()
是自訂點。 -
在第一次使用後移動或複製
http::serializer
是未定義行為。 -
應在執行 WebSocket 握手之前設定
websocket::permessage_deflate
。 -
http 讀取操作中的
bytes_transferred
報告 HTTP 解析器消耗的位元組數。
-
-
致謝
-
Emile Cormier、JohannesWilde、yhzx233
-
-
-
Bimap(雙向映射):
-
修正了 side collections 的異質查詢 (PR#42)。
-
-
Bind(繫結):
-
不再支援 C++03;需要 C++11 編譯器。(這包含 GCC 4.7 或更高版本,以及 MSVC 12.0 (VS 2013) 或更高版本。)
-
-
Core(核心):
-
新增了一個新的
boost/core/functor.hpp
標頭,其中包含一個functor
類別模板,用於將原始函式包裝到函式物件類別中。 -
更改了
null_deleter
、fclose_deleter
和 checked deleter 的定義,使其不會將命名空間boost
引入依賴於參數的查詢。使用者可能需要明確限定被呼叫函式的命名空間或新增using
宣告。
-
-
Filesystem(檔案系統):
-
path::generic_path
和path::generic_string
方法現在會移除返回路徑中的重複目錄分隔符號。 -
v4 版:
path::generic_path
、path::generic_string
、path::make_preferred
和path::lexically_normal
不再將路徑根目錄名稱中的反斜線和正斜線互相轉換。例如,在 Windows 上,path("\\\\\\\\?\\\\c:\\\\foo").generic_string()
現在返回 "\\?\c:/foo",而不是 "//?/c:/foo"。同樣地,path("\\\\\\\\host/share/foo/..").lexically_normal()
現在返回 "\\host\share"。 -
v4 版:如果兩個路徑其中之一不存在,
equivalent
現在會指示錯誤。 -
新增了一個
unique_path
多載函式,它接受單個error_code& ec
參數。該多載函式使用預設路徑模型產生唯一路徑。 -
如果輸入路徑是相對路徑且不包含檔案系統中存在的任何元素,則
weakly_canonical
現在會產生絕對路徑。(#300) -
在 Linux 上,基於
sendfile
和copy_file_range
系統呼叫的copy_file
後端將嘗試為目標檔案預先分配儲存空間。這可以減少檔案系統碎片,並在可用空間不足時提供早期錯誤指示。並非所有檔案系統都支援此功能;如果不支援儲存空間預先分配,檔案複製仍會繼續進行。 -
在支援
fdopendir
、openat
以及 POSIX.1-2008 中定義的相關 API 的 POSIX 系統上,以及在 Windows 上,recursive_directory_iterator
現在使用檔案描述符/控制代碼而不是路徑來查詢檔案狀態並在迭代期間開啟巢狀目錄。這使得目錄迭代對檔案系統的並行修改更具彈性。 -
移除先前宣告為已棄用的 API。特別是
path
和recursive_directory_iterator
的成員函式,is_regular
、copy_directory
、symbolic_link_exists
、complete
、copy_option
、symlink_option
,以及boost/filesystem/convenience.hpp
和boost/filesystem/path_traits.hpp
標頭檔均已移除。文件中提到了移除元件的可能替代方案。 -
預設情況下,已停用從容器類型(例如
std::vector<char>
)建構、賦值和附加path
的支援。使用者仍然可以透過定義BOOST_FILESYSTEM_DEPRECATED
來啟用此功能。此功能仍然已被棄用,並將在未來的版本中完全移除。
-
-
函式 (Function):
-
不再支援 C++03;需要 C++11 編譯器。(這包含 GCC 4.7 或更高版本,以及 MSVC 12.0 (VS 2013) 或更高版本。)
-
-
迭代器 (Iterator):
-
對 C++03 的支援已被棄用,並將在未來的版本中移除。
-
-
JSON:
-
現在使用 Boost.Endian 來處理位元組序。
-
Boost.System 和 Boost.Container 元件的別名已被棄用,**並將在 1.87.0 版中完全移除**。
-
所描述類別的轉換支援私有成員。
-
visit
的右值參考重載。 -
新增對路徑類型轉換的支援。
-
解析到所描述的類別時,會正確考慮繼承的成員。
-
已停用自參考序列的轉換。
-
修正 visit 中的參考處理。
-
-
LEAF:
-
用於在线程之間傳輸錯誤物件和異常的新 API:
try_capture_all
。 -
result<T>
能夠傳輸透過try_capture_all
捕獲的異常。 -
result<T>
傳輸動態捕獲的錯誤物件,效率更高。 -
舊的
make_shared_context
/capture
API 已被棄用,將在下一個版本中移除。 -
移除對在異常中傳輸動態捕獲的錯誤物件的支援。
-
-
MSM:
-
**主要更新**。後端更新 (back11)。需要 C++ 11。文件現在使用它作為預設值。
-
**重要新功能**。新的前端 (PlantUML)。需要 C++ 20
-
各種錯誤修正(編譯器錯誤和警告、延遲事件的優先順序)
-
-
Multi-index Containers(多索引容器):
-
修正文件錯誤。
-
-
MySQL:
-
**重大變更**: Boost.MySQL 現在需要連結到新的 **Boost.Charconv** 編譯函式庫。這解決了地區設定相依性的問題,提高了效率,並支援新的客戶端 SQL 格式化功能。
-
新增對**連線池**的實驗性支援,允許重複使用工作階段,並提供內建的重新連線和錯誤處理。
-
新增對**類型擦除連線**(
any_connection
類別)的實驗性支援。any_connection
不是模板,具有更簡單的連線建立和重新連線語義。 -
新增了對用戶端 SQL 格式化函式(`
format_sql
` 和 `format_sql_to
`)的實驗性支援。這些函式允許在用戶端安全地組合查詢,實現批次插入、動態篩選或類似 PATCH 的更新等模式。 -
修復了影響 `
close_statement
` 和 `async_close_statement
` 的效能問題,該問題可能導致應用程式程式碼出現顯著延遲。 -
新增了使用 `
BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
` 進行建置的支援。 -
已棄用的執行介面(`
connection::query
`、`connection::start_query
`、`connection::execute_statement
`、`connection::start_statement_execution
` 及其非同步對應項)現在會觸發警告,因為它預計在 Boost 1.86 中移除。 -
修復了導致某些錯誤訊息被截斷的錯誤。
-
清理警告。使用 `
-Wall
` 和 `-Wextra
` 進行建置時,建置現在沒有警告。 -
所有 `
field_view
` 建構函式現在都穩定。 -
函式庫內部已使用無 I/O 方法重寫,以降低複雜性。
-
-
Odeint:
-
重大變更:函式庫現在明確要求 C++14,而不是透過包含 Boost.Math 隱式要求。
-
修復與 Thrust 1.10.0 的相容性。
-
移除 C++03 Boost 元件。
-
Array
-
Bind(繫結)
-
函式 (Function)
-
Static_assert
-
-
-
PFR:
-
移除未使用的實作細節。感謝 Denis Mikhailov 的 PR PR#154。
-
欄位反射技巧現在已在文件中說明。感謝所有參與 #150 討論的人!
-
System:
-
不再支援 C++03;需要 C++11 編譯器。(這包含 GCC 4.8 或更高版本,以及 MSVC 14.0 (VS 2015) 或更高版本。)
-
已移除已棄用的標頭檔 `
boost/system/cygwin_error.hpp
`。 -
不再支援原始且過時的(32 位元)MinGW。仍然支援 MinGW-w64(64 位元和 32 位元)。
-
`
operator&
` 現在適用於 `result<void>
`(透過採用空函式的方式)。 -
為 `
result
` 新增了 `operator|=
`。
-
-
Stacktrace:
-
重大新功能:從任意異常獲取堆疊追蹤資訊。在某些 POSIX 平台上,
std::stacktrace::from_current_exception()
現在可以返回當前異常物件的堆疊追蹤資訊,如同在拋出異常時擷取堆疊追蹤資訊一樣。非常感謝 Andrei Nekrashevich 在libsfe
中實現了這個想法的原型。 -
修復了在 Windows 上使用
boost_stacktrace_windbg
時的記憶體消耗問題。感謝 ycyclop 回報了問題 #111,感謝 Thiago A. Correa 提供更多資訊,感謝 Andrei Karpovskii 提供了可能的修復方案。 -
修復了在非隱藏可見性下建構函式庫的問題。感謝 Jan Bouwer 的回報以及提供修復方法的資訊。
-
-
STLInterfaces:
-
在 C++20 及之後的版本中,更改了
iterator_interface
對於輸入迭代器的行為,使其更貼近 C++20 的概念。 -
從
iterator_interface
中移除隱藏朋友,以修復關於概念以不同約束重新定義的錯誤。 -
新增了一個新的
v3
內聯命名空間,其中包含一個基於推導 this 而不是 CRTP 的新的 iterator_interface(C++23 及之後的版本)。 -
新增了一個 rvalue 限定的
closure::operator()
多載,以防止暫時物件的懸空。
-
-
Variant:
-
移除了更多 C++11 之前的巨集和解決方案。
-
已更新工具
-
建構:
-
包含 B2 版本 5.1.0 的發行版。
-
已測試的編譯器
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 維護。