Libuv는 비동기 I/O에 중점을 둔 다중 플랫폼 지원 라이브러리입니다. 주로 Node.js에서 사용하기 위해 개발되었지만 Luvit, Julia, Uvloop 등도 사용합니다.
Epoll, Kqueue, IOCP, 이벤트 포트로 지원되는 완전한 이벤트 루프.
비동기식 TCP 및 UDP 소켓
비동기 DNS 해상도
비동기 파일 및 파일 시스템 작업
파일 시스템 이벤트
ANSI 탈출 코드 제어 TTY
UNIX 도메인 소켓 또는 명명 된 파이프 (Windows)를 사용하는 소켓 공유가 포함 된 IPC
아동 과정
스레드 풀
신호 처리
고해상도 시계
스레딩 및 동기화 프리미티브
1.0.0 버전부터 시작하여 Libuv는 시맨틱 버전 설정 체계를 따릅니다. API 변경 및 거꾸로 호환성 규칙은 SEMVER로 표시된 규칙입니다. Libuv는 주요 릴리스에 걸쳐 안정적인 ABI를 유지할 것입니다.
ABI/API 변경 사항은 여기에서 추적 할 수 있습니다.
Libuv는 MIT 라이센스에 따라 라이센스가 부여됩니다. 라이센스 및 라이센스-엑스트라 파일을 확인하십시오.
문서는 CC에 따라 4.0 라이센스에 의해 라이센스가 부여됩니다. 라이센스 DOC 파일을 확인하십시오.
문서/ 하위 디렉토리에 위치합니다. Sphinx 프레임 워크를 사용하므로 여러 형식으로 문서를 작성할 수 있습니다.
다른 지원되는 건물 옵션 표시 :
$ make helpHTML로 문서 작성 :
$ make html문서를 HTML로 빌드하고 변경할 때 라이브 재 장전 (Sphinx-AutoBuild를 설치해야하며 UNIX에서만 지원됩니다) :
$ make livehtml사람 페이지로 문서 작성 :
$ make manepub로 문서 작성 :
$ make epub참고 : Windows 사용자는 평범한 'Make'대신 Make.bat을 사용해야합니다.
문서는 여기에서 온라인으로 탐색 할 수 있습니다.
테스트 및 벤치 마크는 API 사양 및 사용 예제 역할을합니다.
이러한 리소스는 Libuv 관리자가 처리하지 않으며 구식이 될 수 있습니다. 새로운 문제를 열기 전에 확인하십시오.
Libuv는 Github 저장소 또는 다운로드 사이트에서 다운로드 할 수 있습니다.
GIT 태그 또는 서명 파일을 확인하기 전에 관련 키를 가져 오는 것이 필요합니다. 키 ID는 관리자 파일에 나열되어 있지만 쉽게 사용할 수 있도록 git blob 객체로도 제공됩니다.
일반적인 방법으로 키 가져 오기 :
$ gpg --keyserver pool.sks-keyservers.net --recv-keys AE9BC059git blob 객체에서 키 가져 오기 :
$ git show pubkey-saghul | gpg --importGIT 태그는 개발자의 키와 함께 서명되며 다음과 같이 확인할 수 있습니다.
$ git verify-tag v1.6.1Libuv 1.7.0으로 시작하여 다운로드 사이트에 저장된 타르 볼이 서명되고 함께 제공되는 서명 파일이 각각과 함께 있습니다. 릴리스 Tarball과 서명 파일이 모두 다운로드되면 파일을 다음과 같이 확인할 수 있습니다.
$ gpg --verify libuv-1.7.0.tar.gz.signMACOS를 포함한 UNIX와 같은 플랫폼의 경우 Autotools 또는 Cmake의 두 가지 빌드 방법이 있습니다.
Windows의 경우 CMAKE는 유일한 지원되는 빌드 방법이며 다음과 같은 전제 조건을 가지고 있습니다.
PATH 에 포함될 수있는 도구가 포함되어 있습니다.Autotools로 구축하려면 :
$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make installcmake로 구축하려면 :
$ 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 buildCmake와 교차 컴파일하려면 (지원되지 않지만 일반적으로 작동) :
$ cmake ../..
-DCMAKE_SYSTEM_NAME=Windows
-DCMAKE_SYSTEM_VERSION=6.1
-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc$ brew install --HEAD libuvOS X 사용자에 대한 참고 :
"아치"플래그에서 구축하려는 아키텍처를 지정해야합니다. 공간으로 구분하여 둘 이상을 지정할 수 있습니다 (예 : "x86_64 i386").
$ git clone https://github.com/microsoft/vcpkg.git
$ ./bootstrap-vcpkg.bat # for powershell
$ ./bootstrap-vcpkg.sh # for bash
$ ./vcpkg install libuvLibuv 용 미리 작성된 이진을 설치하거나 Conan을 사용하여 소스에서 빌드 할 수 있습니다. 다음 명령을 사용하십시오.
conan install --requires= " libuv/[*] " --build=missingLibuv 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 실행 테스트 섹션을 참조하십시오. 벤치 마크 드라이버는 ./uv_run_benchmarks_a 이며 벤치 마크는 test/benchmark-list.h 에 나열되어 있습니다.
supported_platforms 파일을 확인하십시오.
-fno-strict-aliasing libuv를 사용하는 프로젝트에서 -fno-strict-aliasing 컴파일러 플래그를 켜는 것이 좋습니다. Libuv API에서 임시 "상속"을 사용하는 것은 엄격한 별명에 의존하는 컴파일러 최적화가있을 때 안전하지 않을 수 있습니다.
MSVC는 동등한 플래그를 가지고 있지 않지만 글을 쓰는 시점에도 필요하지 않은 것으로 보입니다 (2019 년 12 월.)
IBM XL C/C ++를 사용한 AIX 컴파일에는 버전 12.1 이상이 필요합니다.
FileSystem 이벤트에 대한 AIX 지원에는 비 디폴트 IBM bos.ahafs 패키지를 설치해야합니다. 이 패키지는 autoconf 가 감지하는 AIX 이벤트 인프라를 제공합니다. 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 명령을 사용하여 시스템 V 리소스를 수동으로 정리하십시오.
기여에 대한 지침을 참조하십시오.