2013-04-18 111 views
6

Asio仍然是獨立於Boost開發的,還是Boost.Asio唯一的版本還在更新?Asio沒有提升

Asio website上,他們談到兩種版本都有好處,而且Asio的升級次數比Boost更頻繁。然而,該網站上的最新開發版本是2011年3月發佈的1.5.3版本,而2013年2月發佈的最新Boost 1.53版本包含Asio 1.8.3版本,其中自1.5.3版本開始有大量更改。

Asio網站在沒有通知的情況下被放棄,僅支持Boost-only更新,或者它已經移動到我沒有找到的某個位置。有誰明確知道發生了什麼?

我問的原因是我試圖從我的項目中削減Boost,而Boost.Asio是我目前使用的唯一Boost庫。 Asio本身就是一個僅包含頭文件的庫,但Boost.Asio引入了其他幾個未使用的Boost庫(System,Regex,Date_Time)。

我願意切換到另一個輕量級套接字庫,但還沒有找到像Asio一樣好的(就低依賴性和使用本地平臺iocp/epoll方法而言)。

+0

還有一個poco,雖然我沒有用過它自己... – Nim

回答

3

我通過地方非升壓版本進行維護和克里斯托弗Kohlhoff,筆者說,他認爲這在github

https://github.com/chriskohlhoff/asio

今天看它它不電子郵件問似乎1.8.3在那裏,或者至少它沒有被標記,所以他可能會停止維護該回購。

+0

現在看起來像1.8.3。我想這意味着他仍然保持該版本。真棒! – Nairou

6

阿西奧是分開發展,然後加強併合併成Boost.Asio。但是,根據使用哪些功能和編譯器,您可能無法從項目中刪除Boost。從Asio 1.10.0起,Asio試圖使用等效的C++ 11標準庫而不是Boost。

短耳基本上Boost.Asio的:

  • 沒有boost名字空間和宏觀命名約定。
  • 不依賴於Boost.System和Boost.Thread,因爲Asio提供了自己的有限功能來代替這兩個庫。

1.10.0之前的Asio版本可能存在Boost依賴關係。這些依賴關係通常在模板中引入;因此,只有當應用程序使用特定的功能時纔會出現依賴性。這是很容易忽視Asio and Boost.Asio頁面,它指出的微妙細節:

短耳是頭文件,並且只能用於大多數使用不需要連接反對任何Boost庫。在最新版本的gcc,clang或MSVC中使用C++ 11時,通過在編譯時定義ASIO_STANDALONE,可以獨立於Boost使用Asio。

一般而言,以下功能引入的依賴關係:

  • 定時器取決於Boost.DateTime或Boost.Chrono。對於Asio 1.10.0及更高版本,C++ 11 build將會使用std::chrono將被使用。
  • read_until()使用正則表達式的操作依賴於Boost.Regex。
  • Stackful coroutines基於Boost.Coroutine庫。

這可能是值得考慮使用:

  • BCP提取加速的子集庫項目的需求。
  • libuv,一個C庫,它提供了一個異步事件循環和從本地I/O事件通知的抽象。 This答案比較兩個庫。
+1

+1 libuv,該圖書館的拳擊方式超過其重量。 –