Libuv เป็นไลบรารีสนับสนุนหลายแพลตฟอร์มโดยมุ่งเน้นที่ I/O แบบอะซิงโครนัส มันได้รับการพัฒนาเป็นหลักเพื่อใช้โดย node.js แต่มันก็ใช้โดย Luvit, Julia, Uvloop และอื่น ๆ
Event Event Fullured Event ได้รับการสนับสนุนจาก Epoll, Kqueue, IOCP, พอร์ตเหตุการณ์
ซ็อกเก็ต TCP และ UDP แบบอะซิงโครนัส
ความละเอียด DNS แบบอะซิงโครนัส
การดำเนินการไฟล์และระบบไฟล์แบบอะซิงโครนัส
เหตุการณ์ระบบไฟล์
ANSI Escape Code ควบคุม TTY
IPC พร้อมการแชร์ซ็อกเก็ตโดยใช้ซ็อกเก็ตโดเมน Unix หรือชื่อท่อ (Windows)
กระบวนการเด็ก
สระว่ายน้ำ
การจัดการสัญญาณ
นาฬิกาความละเอียดสูง
การทำเกลียวและการซิงโครไนซ์ดั้งเดิม
เริ่มต้นด้วยเวอร์ชัน 1.0.0 libuv เป็นไปตามรูปแบบการกำหนดเวอร์ชันความหมาย กฎการเปลี่ยนแปลง API และกฎความเข้ากันได้ย้อนหลังเป็นกฎที่ระบุโดย SEMVER Libuv จะรักษา ABI ที่มั่นคงไว้ในรุ่นที่สำคัญ
การเปลี่ยนแปลง ABI/API สามารถติดตามได้ที่นี่
Libuv ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ตรวจสอบไฟล์ใบอนุญาตและใบอนุญาต-extra
เอกสารได้รับใบอนุญาตภายใต้ใบอนุญาต CC โดย 4.0 ตรวจสอบไฟล์ License-Docs
ตั้งอยู่ในเอกสาร/ ไดเรกทอรีย่อย มันใช้เฟรมเวิร์กสฟิงซ์ซึ่งทำให้สามารถสร้างเอกสารในหลายรูปแบบ
แสดงตัวเลือกอาคารที่รองรับที่แตกต่างกัน:
$ make helpสร้างเอกสารเป็น HTML:
$ make htmlสร้างเอกสารเป็น HTML และโหลดสดเมื่อมีการเปลี่ยนแปลง (สิ่งนี้ต้องการการติดตั้ง Sphinx-Autobuild และรองรับ UNIX เท่านั้น):
$ make livehtmlสร้างเอกสารเป็นหน้ามนุษย์:
$ 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การนำเข้าคีย์จากวัตถุ Git Blob:
$ git show pubkey-saghul | gpg --importแท็ก Git ได้รับการลงนามกับคีย์ของนักพัฒนาพวกเขาสามารถตรวจสอบได้ดังนี้:
$ git verify-tag v1.6.1เริ่มต้นด้วย libuv 1.7.0 tarballs ที่เก็บไว้ในไซต์ดาวน์โหลดได้รับการลงนามและไฟล์ลายเซ็นประกอบนั่งข้างแต่ละรายการ เมื่อดาวน์โหลดทั้งไฟล์ Tarball และไฟล์ลายเซ็นไฟล์สามารถตรวจสอบได้ดังนี้:
$ 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:
ตรวจสอบให้แน่ใจว่าคุณระบุสถาปัตยกรรมที่คุณต้องการสร้างในธง "Archs" คุณสามารถระบุได้มากกว่าหนึ่งโดยการคั่นด้วยพื้นที่ (เช่น "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 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 ดูส่วนเกี่ยวกับการทดสอบการรัน ไดรเวอร์เบนช์มาร์กคือ ./uv_run_benchmarks_a uv_run_benchmarks_a และเกณฑ์มาตรฐานแสดงอยู่ใน test/benchmark-list.h
ตรวจสอบไฟล์ support_platforms
-fno-strict-aliasing ขอแนะนำให้เปิดธงคอมไพเลอร์ -fno-strict-aliasing ในโครงการที่ใช้ libuv การใช้ "มรดก" เฉพาะกิจใน Libuv API อาจไม่ปลอดภัยในการปรากฏตัวของการเพิ่มประสิทธิภาพคอมไพเลอร์ที่ขึ้นอยู่กับนามแฝงที่เข้มงวด
MSVC ไม่มีธงที่เทียบเท่า แต่ก็ไม่ต้องการมันในเวลาที่เขียน (ธันวาคม 2019)
การรวบรวม AIX โดยใช้ IBM XL C/C ++ ต้องการเวอร์ชัน 12.1 หรือมากกว่า
การสนับสนุน AIX สำหรับเหตุการณ์ระบบไฟล์ต้องใช้แพ็คเกจ IBM bos.ahafs ที่ไม่ใช่ Default ที่จะติดตั้ง แพ็คเกจนี้มีโครงสร้างพื้นฐานของ 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 เพื่อล้างทรัพยากรระบบ V ด้วยตนเอง
ดูแนวทางสำหรับการบริจาค