Libuv adalah pustaka dukungan multi-platform dengan fokus pada I/O asinkron. Itu terutama dikembangkan untuk digunakan oleh Node.js, tetapi juga digunakan oleh Luvit, Julia, Uvloop, dan lainnya.
Loop acara berfitur lengkap yang didukung oleh Epoll, Kqueue, IOCP, port acara.
Soket TCP dan UDP asinkron
Resolusi DNS asinkron
Operasi Sistem File dan File Asynchronous
Acara Sistem File
Kode Escape ANSI Dikendalikan Tty
IPC dengan berbagi soket, menggunakan soket domain unix atau pipa bernama (windows)
Proses anak
Kumpulan benang
Penanganan sinyal
Jam resolusi tinggi
Threading dan sinkronisasi primitif
Dimulai dengan Libuv versi 1.0.0 mengikuti skema versi semantik. Perubahan API dan aturan kompatibilitas mundur adalah yang ditunjukkan oleh SEMVER. Libuv akan menjaga Abi yang stabil di seluruh rilis besar.
Perubahan ABI/API dapat dilacak di sini.
Libuv dilisensikan di bawah lisensi MIT. Periksa file lisensi dan lisensi-Extra.
Dokumentasi dilisensikan di bawah lisensi CC dengan 4.0. Periksa file lisensi-DOCS.
Terletak di Docs/ Subdirektori. Ini menggunakan kerangka kerja Sphinx, yang memungkinkan untuk membangun dokumentasi dalam berbagai format.
Tampilkan berbagai opsi bangunan yang didukung:
$ make helpBangun dokumentasi sebagai html:
$ make htmlBangun dokumentasi sebagai html dan live muat ulang saat berubah (ini membutuhkan sphinx-autobuild untuk diinstal dan hanya didukung pada UNIX):
$ make livehtmlBangun dokumentasi sebagai halaman manusia:
$ make manBangun dokumentasi sebagai epub:
$ make epubCatatan: Pengguna Windows perlu menggunakan make.bat, bukan 'make' biasa.
Dokumentasi dapat ditelusuri secara online di sini.
Tes dan tolok ukur juga berfungsi sebagai spesifikasi API dan contoh penggunaan.
Sumber daya ini tidak ditangani oleh pemelihara libuv dan mungkin sudah ketinggalan zaman. Harap verifikasi sebelum membuka masalah baru.
Libuv dapat diunduh baik dari repositori GitHub atau dari situs unduhan.
Sebelum memverifikasi tag GIT atau file tanda tangan, mengimpor kunci yang relevan diperlukan. ID kunci tercantum dalam file pengelola, tetapi juga tersedia sebagai objek git git untuk lebih mudah digunakan.
Mengimpor kunci dengan cara yang biasa:
$ gpg --keyserver pool.sks-keyservers.net --recv-keys AE9BC059Mengimpor kunci dari objek git git:
$ git show pubkey-saghul | gpg --importTag git ditandatangani dengan kunci pengembang, mereka dapat diverifikasi sebagai berikut:
$ git verify-tag v1.6.1Dimulai dengan Libuv 1.7.0, tarballs yang disimpan di situs unduhan ditandatangani dan file tanda tangan yang menyertainya duduk di samping masing -masing. Setelah rilis tarball dan file tanda tangan diunduh, file dapat diverifikasi sebagai berikut:
$ gpg --verify libuv-1.7.0.tar.gz.signUntuk platform seperti Unix, termasuk macOS, ada dua metode build: autotools atau cmake.
Untuk Windows, CMake adalah satu -satunya metode pembuatan yang didukung dan memiliki prasyarat berikut:
PATH global.Untuk membangun dengan autotools:
$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make installUntuk membangun dengan 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 buildKompilasi silang dengan cmake (tidak didukung tetapi umumnya berhasil):
$ cmake ../..
-DCMAKE_SYSTEM_NAME=Windows
-DCMAKE_SYSTEM_VERSION=6.1
-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc$ brew install --HEAD libuvCatatan untuk pengguna OS X:
Pastikan Anda menentukan arsitektur yang ingin Anda bangun di bendera "lengkungan". Anda dapat menentukan lebih dari satu dengan membatasi dengan ruang (misalnya "x86_64 i386").
$ git clone https://github.com/microsoft/vcpkg.git
$ ./bootstrap-vcpkg.bat # for powershell
$ ./bootstrap-vcpkg.sh # for bash
$ ./vcpkg install libuvAnda dapat memasang binari pra-built untuk libuv atau membangunnya dari sumber menggunakan Conan. Gunakan perintah berikut:
conan install --requires= " libuv/[*] " --build=missingResep Libuv Conan selalu up to date oleh Conan Loaders dan kontributor komunitas. Jika versi sudah ketinggalan zaman, silakan buat permintaan atau tarik permintaan di Repositori ConancenterIndex.
Beberapa tes sensitif terhadap waktu. Batas waktu tes santai mungkin diperlukan pada mesin yang lambat atau kelebihan beban:
$ env UV_TEST_TIMEOUT_MULTIPLIER=2 build/uv_run_tests # 10s instead of 5s Daftar semua tes adalah dalam test/test-list.h .
Doa ini akan menyebabkan driver uji untuk garpu dan menjalankan TEST_NAME dalam proses anak:
$ build/uv_run_tests_a TEST_NAMEDoa ini akan menyebabkan driver uji untuk menjalankan tes dalam proses yang sama:
$ build/uv_run_tests_a TEST_NAME TEST_NAME Saat menjalankan tes dari dalam proses driver tes ( build/uv_run_tests_a TEST_NAME TEST_NAME ), alat seperti gdb dan valgrind bekerja secara normal.
Saat menjalankan tes dari anak dari proses pengemudi tes ( build/uv_run_tests_a TEST_NAME ), gunakan alat-alat ini dengan cara yang sadar-garpu.
Gunakan pengaturan mode follow-fork:
$ gdb --args build/uv_run_tests_a TEST_NAME
(gdb) set follow-fork-mode child
...
Gunakan parameter --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 Lihat bagian tes menjalankan. Driver benchmark adalah ./uv_run_benchmarks_a dan tolok ukur terdaftar dalam test/benchmark-list.h .
Periksa file yang didukung_platforms.
-fno-strict-aliasing Dianjurkan untuk menyalakan bendera kompiler -fno-strict-aliasing dalam proyek-proyek yang menggunakan libuv. Penggunaan "warisan" ad hoc dalam Libuv API mungkin tidak aman di hadapan optimisasi kompiler yang bergantung pada aliasing yang ketat.
MSVC tidak memiliki bendera yang setara tetapi juga tampaknya tidak membutuhkannya pada saat penulisan (Desember 2019.)
Kompilasi AIX Menggunakan IBM XL C/C ++ membutuhkan versi 12.1 atau lebih besar.
Dukungan AIX untuk acara sistem file membutuhkan paket IBM bos.ahafs non-default untuk diinstal. Paket ini menyediakan infrastruktur acara AIX yang terdeteksi oleh autoconf . Dokumentasi IBM menjelaskan paket secara lebih rinci.
Kompilasi z/OS mengharuskan zoslib untuk diinstal. Saat membangun dengan cmake, gunakan flag -DZOSLIB_DIR untuk menentukan jalur ke zoslib:
$ (cd build && cmake .. -DBUILD_TESTING=ON -DZOSLIB_DIR=/path/to/zoslib)
$ cmake --build buildZ/OS Membuat Sistem V Semaphores dan Antrian Pesan. Ini bertahan pada sistem setelah proses berakhir kecuali loop peristiwa ditutup.
Gunakan perintah ipcrm untuk membersihkan sumber daya Sistem V secara manual.
Lihat pedoman untuk berkontribusi.