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ライセンスの下でライセンスされています。ライセンスとライセンスエクストラファイルを確認してください。
ドキュメントは、4.0ライセンスでCCに基づいてライセンスされています。ライセンスDOCSファイルを確認してください。
Docs/ Subdirectoryにあります。 Sphinxフレームワークを使用して、複数の形式でドキュメントを作成できるようにします。
さまざまなサポートされている建物のオプションを表示します。
$ make helpHTMLとしてドキュメントを作成する:
$ make htmlHTMLとしてドキュメントを作成し、変更したときにライブリロードします(これには、Sphinx-Autobuildをインストールする必要があり、UNIXでのみサポートされています):
$ make livehtmlドキュメントをmanページとしてビルドする:
$ 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のようなプラットフォームの場合、2つのビルド方法があります。自動工具と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 parameterを使用します。
$ 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以降が必要です。
ファイルシステムイベントのAIXサポートには、非デフォルトIBM bos.ahafsパッケージをインストールする必要があります。このパッケージは、 autoconfによって検出されるAIXイベントインフラストラクチャを提供します。 IBMドキュメントでは、パッケージを詳細に説明します。
Z/OSコンピレーションでは、Zoslibをインストールする必要があります。 cmakeで構築するときは、flag -DZOSLIB_DIRを使用してZoslibへのパスを指定します。
$ (cd build && cmake .. -DBUILD_TESTING=ON -DZOSLIB_DIR=/path/to/zoslib)
$ cmake --build buildz/OSは、システムvセマフォとメッセージキューを作成します。イベントループが閉じられない限り、プロセスが終了した後、これらはシステム上に持続します。
ipcrmコマンドを使用して、システムVリソースを手動でクリアします。
貢献するためのガイドラインを参照してください。