Libuv-это многоплатформенная библиотека поддержки с акцентом на асинхронный ввод-вывод. Он был в основном разработан для использования Node.js, но он также используется Luvit, Julia, UVLoop и другими.
Полнофункциональная петля событий, поддерживаемая Epoll, Kqueue, IOCP, порты событий.
Асинхронные розетки TCP и UDP
Асинхронное разрешение DNS
Асинхронные операции файлов и файловой системы
События файловой системы
Код ANSI Escape контролируется TTY TTY
МПК с обменом розетками, используя розетки Unix Domain или названные трубы (Windows)
Детские процессы
БИЛЕР НИДЕЙ
Обработка сигнала
Часы высокого разрешения
Примитивы резьбы и синхронизации
Начиная с версии 1.0.0 LIBUV следует за схемой семантической версии. Правила API -изменения и обратной совместимости - это то, что указано SEMVER. Libuv будет держать стабильный ABI в основных выпусках.
Изменения ABI/API можно отследить здесь.
Libuv лицензирован по лицензии MIT. Проверьте лицензионные и лицензионные файлы.
Документация лицензирована по лицензии CC на 4,0. Проверьте файл лицензий.
Расположен в документах/ подкаталоге. Он использует структуру Sphinx, что позволяет создавать документацию в нескольких форматах.
Показать различные варианты здания поддерживаемых:
$ make helpСтроительство документации как HTML:
$ make htmlПостроить документацию как HTML и Live Перезагрузите ее при изменении (это требует установки Sphinx-Autobuild и поддерживается только на UNIX):
$ make livehtmlСтроить документацию в качестве страниц Man:
$ make manСоздать документацию как epub:
$ make epubПРИМЕЧАНИЕ. Пользователи Windows должны использовать make.bat вместо простого «make».
Документация может быть просмотрена в Интернете здесь.
Тесты и тесты также служат примерами спецификации API и использования.
Эти ресурсы не обрабатываются со стороны LIBUV и могут быть устаревшими. Пожалуйста, проверьте это перед открытием новых вопросов.
LIBUV можно загрузить либо с репозитория GitHub, либо с сайта загрузки.
Прежде чем проверить теги GIT или подписные файлы, необходимо импорт соответствующих ключей. Идентификаторы ключей перечислены в файле Содействия, но также доступны в виде объектов GIT Blob для более легкого использования.
Импорт ключа обычным способом:
$ gpg --keyserver pool.sks-keyservers.net --recv-keys AE9BC059Импорт ключа из объекта Blob Blob:
$ git show pubkey-saghul | gpg --importТеги git подписаны с ключом разработчика, их можно проверить следующим образом:
$ git verify-tag v1.6.1Начиная с Libuv 1.7.0, подписаны Tarballs, хранящиеся на сайте загрузок, и сопровождающий подпись файл, расположенный рядом с каждым. После того, как выпуск Tarball и Firecure File загружаются, файл можно проверить следующим образом:
$ gpg --verify libuv-1.7.0.tar.gz.signДля Unix-подобных платформ, включая MacOS, есть два метода сборки: AutoTools или Cmake.
Для Windows Cmake является единственным поддерживаемым методом сборки и имеет следующие предпосылки:
PATH .Построить с помощью AutoTools:
$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make installПостроить с Cmake:
$ mkdir -p build
$ (cd build && cmake .. -DBUILD_TESTING=ON) # generate project with tests
$ cmake --build build # add `-j <n>` with cmake >= 3.12
# Run tests:
$ (cd build && ctest -C Debug --output-on-failure)
# Or manually run tests:
$ build/uv_run_tests # shared library build
$ build/uv_run_tests_a # static library buildДля перекрестнойкомпиляции с Cmake (не поддерживается, но обычно работает):
$ cmake ../..
-DCMAKE_SYSTEM_NAME=Windows
-DCMAKE_SYSTEM_VERSION=6.1
-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc$ brew install --HEAD libuvПримечание для пользователей OS X:
Убедитесь, что вы указали архитектуру, которую хотите построить в флаге «Арки». Вы можете указать более одного, разграничивая пространство (например, «x86_64 i386»).
$ git clone https://github.com/microsoft/vcpkg.git
$ ./bootstrap-vcpkg.bat # for powershell
$ ./bootstrap-vcpkg.sh # for bash
$ ./vcpkg install libuvВы можете установить предварительно построенные двоичные файлы для LIBUV или построить его из источника с помощью CONAN. Используйте следующую команду:
conan install --requires= " libuv/[*] " --build=missingРецепт Libuv Conan поддерживается актуальным со стороны CONAN -сопровождающие и участники сообщества. Если версия устарела, пожалуйста, создайте проблему или запрос на вытягивание в репозитории ConancenterIndex.
Некоторые тесты чувствительны к времени. Расслабляющие тайм -ауты тестирования могут быть необходимы на медленных или перегруженных машинах:
$ env UV_TEST_TIMEOUT_MULTIPLIER=2 build/uv_run_tests # 10s instead of 5s Список всех тестов находится в test/test-list.h .
Этот вызов приведет к тому, что драйвер испытаний разветвляется и выполняет TEST_NAME в детском процессе:
$ build/uv_run_tests_a TEST_NAMEЭтот вызов приведет к тому, что драйвер испытаний выполнит тест в том же процессе:
$ build/uv_run_tests_a TEST_NAME TEST_NAME При запуске теста из процесса тестового драйвера ( build/uv_run_tests_a TEST_NAME TEST_NAME ), такие инструменты, как GDB и Valgrind, обычно работают.
При запуске теста у ребенка процесса тестового драйвера ( build/uv_run_tests_a TEST_NAME ) используйте эти инструменты в форме.
Используйте настройку «Следующее бортовое режим»:
$ gdb --args build/uv_run_tests_a TEST_NAME
(gdb) set follow-fork-mode child
...
Используйте --trace-children=yes параметр:
$ valgrind --trace-children=yes -v --tool=memcheck --leak-check=full --track-origins=yes --leak-resolution=high --show-reachable=yes --log-file=memcheck-%p.log build/uv_run_tests_a TEST_NAME См. Раздел о запуске тестов. test/benchmark-list.h драйвер ./uv_run_benchmarks_a
Проверьте файл поддерживаемого_платформы.
-fno-strict-aliasing Рекомендуется включить флаг компилятора -fno-strict-aliasing в проектах, которые используют Libuv. Использование специального «наследования» в API LIBUV может быть не безопасным в присутствии оптимизации компилятора, которые зависят от строгого псевдонима.
MSVC не имеет эквивалентного флага, но он также не нуждается в нем во время написания (декабрь 2019 г.)
Компиляция AIX с использованием IBM XL C/C ++ требует версии 12.1 или более.
Поддержка AIX для событий файловой системы требует установки пакета IBM bos.ahafs , не являющихся деко. Этот пакет предоставляет инфраструктуру событий AIX, которая обнаруживается autoconf . Документация IBM описывает пакет более подробно.
Компиляция Z/OS требует установки ZoSlib. При строительстве с Cmake используйте флаг -DZOSLIB_DIR , чтобы указать путь к Zoslib:
$ (cd build && cmake .. -DBUILD_TESTING=ON -DZOSLIB_DIR=/path/to/zoslib)
$ cmake --build buildZ/OS создает System V Semaphores и очереди сообщений. Они сохраняются в системе после того, как процесс завершится, если цикл событий не закрыт.
Используйте команду ipcrm , чтобы вручную очистить ресурсы System V.
Смотрите руководящие принципы для участия.