2013-04-18 3 views
6

Is Asio по-прежнему разрабатывается отдельно от Boost, или Boost.Asio - единственная версия, которая до сих пор обновляется?Asio без Boost

На Asio website они говорят о преимуществах обеих версий и что Asio обновляется чаще, чем Boost. Тем не менее, последняя версия dev на сайте - 1.5.3, выпущенная в марте 2011 года, тогда как последняя версия Boost 1.53 с февраля 2013 года включает Asio 1.8.3 с большим количеством изменений с 1.5.3.

Либо сайт Asio был оставлен без уведомления в пользу обновлений только для Boost, либо он переместился в какое-то место, которое я не нашел. Кто-нибудь знает, что произошло?

Причина, по которой я спрашиваю, это то, что я пытаюсь вырезать 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

Asio разработан отдельно, затем активирован и слит в Boost.Asio. Однако вы не сможете удалить Boost из своего проекта, основываясь на том, какие функции и компилятор используются. Начиная с Asio 1.10.0, Asio пытается использовать эквивалентные стандартные библиотеки C++ 11 вместо Boost.

Asio в основном Boost.Asio:

  • Без имен форсировки и макросов именования.
  • Не зависит от Boost.System и Boost.Thread as Asio предоставляет свои ограниченные функциональные возможности вместо этих двух библиотек.

Возможно, для версий Asio существуют версии Boost до 1.10.0. Эти зависимости часто вводятся в шаблонах; таким образом, зависимость может возникать только тогда, когда приложение использует определенные функции. Это легко упустить из виду тонкие детали на Asio and Boost.Asio странице, где говорится:

Asio является заголовок-файла только и большинство использует не требует увязки с какой-либо библиотеки Boost. При использовании C++ 11 с последними версиями gcc, clang или MSVC, Asio можно использовать независимо от Boost, определяя ASIO_STANDALONE при компиляции.

В общем, следующие функции: введение зависимостей

  • Таймеры зависят от Boost.DateTime или Boost.Chrono. Для Asio 1.10.0 и последующих версий, C++ 11 будет использовать std::chrono.
  • read_until() операции, которые используют регулярное выражение, зависят от Boost.Regex.
  • Stackful coroutines которые составлены на основе библиотеки Boost.Coroutine.

Это может быть стоит рассмотреть с помощью:

  • BCP извлечь подмножество библиотеки Boost, ваши потребности проекта.
  • libuv, библиотека C, которая обеспечивает асинхронный цикл событий и абстрагирование от уведомления о событиях на основе ввода-вывода. This ответ сравнивает две библиотеки.
+1

+1 libuv, эта библиотека пробивает путь выше своего веса. –