librascal

Librascal – библиотека для асинхронной работы с сетевыми соединениями, позволяющая абстрагироваться от сетевого стэка и сосредоточиться на написании кросс-платформенных, масштабируемых приложений, использующих различные модели многопоточности.

Библиотека поддерживает транспортные протоколы TCP и UDP, базовые функции для работы с DNS и полностью поддерживает сетевые службы; самостоятельно буферизирует ввод-вывод, содержит функции для облегчения работы с текстовыми протоколами и несколько вспомогательных C++ классов. Многие параметры — такие, как таймауты, количество повторов неудачной операции, список DNS-серверовизменяются на лету.

На данный момент существуют две версии библиотеки: основная, использующая BSD сокеты и работающая на всех Unix системах, и специализированный порт для WinNT, использующий IOCP.

Использование библиотеки

Для использования библиотеки в приложение нужно включить заголовок rascal.h и слинковаться с динамической библиотекой librascal (статическая линковка не поддерживается и не планируется). Дополнительную информацию об использовании можно найти в документации.

Инсталляция

Внешние зависимости у библиотеки отсутствуют. Для инсталляции достаточно собрать её из исходников и выполнить make install. Существуют также прекомпилированные бинарники для Windows (dll) и Mac OS X (framework).

Скачать исходный код или бинарники.

Распространение

Библиотека является свободной и распространяется по лицензии BSD.

Планы на будущее

Основным направлением дальнейшего развития является портирование на спецефические платформы для использования более производительных технологий, вроде kqueue, epoll итд.