2013-04-18 6 views
6

Asio è ancora sviluppato separatamente da Boost, o Boost.Asio è l'unica versione ancora in fase di aggiornamento?Asio senza Boost

Sul Asio website si parla di vantaggi per entrambe le versioni e Asio viene aggiornato più spesso di Boost. Tuttavia, l'ultima versione di dev sul sito è la 1.5.3, rilasciata a marzo del 2011, mentre l'ultima versione di Boost 1.53 di febbraio 2013 include Asio 1.8.3, con un gran numero di modifiche dal 1.5.3.

O il sito Asio è stato abbandonato senza preavviso a favore di aggiornamenti Boost-soltanto, o si è spostato in una certa posizione non ho trovato. Qualcuno sa in modo definitivo cosa è successo?

Il motivo che mi chiedo è che sto cercando di tagliare Boost dal mio progetto, e Boost.Asio è l'unica libreria Boost Attualmente sto usando. Asio di per sé è una libreria di sola intestazione, ma Boost.Asio utilizza diverse altre librerie Boost (System, Regex, Date_Time) che altrimenti non vengono utilizzate.

Sarei disposto a passare a un'altra libreria di socket leggera, ma non ne ho ancora trovato uno buono come Asio (in termini di basse dipendenze e utilizzando i metodi iocp/epoll della piattaforma nativa).

+0

C'è anche poco, anche se non ho usato io stesso ... – Nim

risposta

3

ho chiesto via e-mail in cui viene mantenuta la versione non-boost e Christopher Kohlhoff, l'autore, ha detto che lo mantiene su github

https://github.com/chriskohlhoff/asio

Guardando oggi non è così sembrare 1.8.3 è lassù, o almeno non è stato etichettato in modo potrebbe essere che ha smesso di sostenere che repo.

+0

Sembra 1.8.3 è lassù ora. Immagino che questo significhi che mantiene ancora quella versione. Eccezionale! – Nairou

6

Asio viene sviluppato separatamente, quindi boostified e uniti in Boost.Asio. Tuttavia, potresti non essere in grado di rimuovere Boost dal progetto in base a quali funzioni e compilatori vengono utilizzati. A partire da Asio 1.10.0, Asio tenta di utilizzare le librerie standard equivalenti di C++ 11 invece di Boost.

Asio è fondamentalmente Boost.Asio:

  • Senza lo spazio dei nomi Boost e convenzioni di denominazione macro.
  • Non dipendente da Boost.System e Boost.Thread as Asio fornisce la propria funzionalità limitata al posto di queste due librerie.

dipendenze Boost possa esiste per le versioni Asio prima 1.10.0. Queste dipendenze sono spesso introdotte all'interno dei template; pertanto, la dipendenza può verificarsi solo quando un'applicazione utilizza funzionalità specifiche. E 'facile trascurare il sottile dettaglio nella pagina Asio and Boost.Asio, dove si afferma:

Asio è file di intestazione-only e per la maggior parte usi non richiede il collegamento contro qualsiasi libreria Boost. Quando si utilizza C++ 11 con versioni recenti di gcc, clang o MSVC, Asio può essere utilizzato indipendentemente da Boost definendo ASIO_STANDALONE durante la compilazione.

In generale, le seguenti caratteristiche: introducono dipendenze

  • Temporizzatori dipendono da Boost.DateTime o Boost.Chrono. Per Asio 1.10.0 e oltre, verranno utilizzate le versioni di C++ 11 std::chrono.
  • read_until() le operazioni che utilizzano regex dipendono da Boost.Regex.
  • Stackful coroutines basati sulla libreria Boost.Coroutine.

Può valere la pena considerare l'uso:

  • BCP per estrarre il sottoinsieme di Boost biblioteche vostre esigenze di progetto.
  • libuv, una libreria C che fornisce un evento-ciclo asincrono e astrazione dalla notifica nativo I/O evento. La risposta This confronta le due librerie.
+1

+1 libuv, che punzoni biblioteca molto al di sopra del suo peso. –