开源
libuv:提供了高级网络抽象层的跨平台异步I/O库
来源:元经纪     阅读:1036
网站管理员
发布于 2023-06-20 06:47
查看主页

概述

libuv 是一个专注于异步 I/O 的多平台支持库。它主要是为Node.js使用而开发的,但它也被Luvit、Julia、 uvloop和其他人使用。

特色亮点

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

版本控制

从 1.0.0 版开始,libuv 遵循语义版本控制 方案。API 更改和向后兼容规则由 SemVer 指示。libuv 将在主要版本中保持稳定的 ABI。

可以在此处跟踪 ABI/API 更改。

许可

libuv 在 MIT 许可证下获得许可。检查LICENSE和 LICENSE-extra文件。

该文档根据 CC BY 4.0 许可获得许可。检查 LICENSE-docs 文件

文档

官方文档

位于 docs/ 子目录中。它使用Sphinx 框架,这使得构建多种格式的文档成为可能。

显示不同的支持构建选项:

$ make help

将文档构建为 HTML:

$ make html

将文档构建为 HTML 并在更改时实时重新加载它(这需要安装 sphinx-autobuild 并且仅在 Unix 上受支持):

$ make livehtml

将文档构建为手册页:

$ make man

将文档构建为 ePub:

$ make epub

注意:Windows 用户需要使用 make.bat 而不是普通的“make”。

可以在此处在线浏览文档。

测试和基准测试 也作为 API 规范和使用示例。

其他资源

  • LXJS 2012 谈话 — 关于 libuv 的高级介绍性谈话。
  • libuv-dox — 记录 libuv 的类型和方法,主要是通过阅读 uv.h。
  • learnuv — 学习 uv 是为了乐趣和利润,这是一个 libuv 的自我指导研讨会。

这些资源不由 libuv 维护者处理,可能已过时。请在打开新问题之前验证它。

下载

libuv 可以从 GitHub 存储库 或下载站点下载。

在验证 git 标签或签名文件之前,需要导入相关密钥。密钥 ID 列在 MAINTAINERS 文件中,但也可用作 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 开始,下载站点中存储的 tarball 都经过签名,每个文件旁边都有一个随附的签名文件。下载发布 tarball 和签名文件后,可以按如下方式验证文件:

$ gpg --verify libuv-1.7.0.tar.gz.sign

构建说明

对于类 UNIX 平台,包括 macOS,有两种构建方法:autotools 或CMake

对于 Windows,CMake是唯一受支持的构建方法,并且具有以下先决条件:

  • 之一:
  • 一些测试所需的基本 Unix 工具, Git for Windows包括 Git Bash 和可以包含在全局PATH

使用自动工具构建:

$ 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”)。

使用 vcpkg 安装

$ git clone https://github.com/microsoft/vcpkg.git
$ ./bootstrap-vcpkg.bat # for powershell
$ ./bootstrap-vcpkg.sh # for bash
$ ./vcpkg install libuv

运行测试

一些测试对时间敏感。在缓慢或超载的机器上可能需要放宽测试超时:

$ 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,以 fork-aware 方式使用这些工具。

分叉感知 gdb

使用follow-fork-mode设置:

$ gdb --args build/uv_run_tests_a TEST_NAME

(gdb) set follow-fork-mode child
...
分叉感知 valgrind

使用--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

建议-fno-strict-aliasing在使用 libuv 的项目中打开编译器标志。在存在依赖于严格别名的编译器优化的情况下,在 libuv API 中使用临时“继承”可能不安全。

MSVC 没有等效标志,但在撰写本文时(2019 年 12 月)似乎也不需要它。

AIX 笔记

使用 IBM XL C/C++ 的 AIX 编译需要版本 12.1 或更高版本。

bos.ahafs AIX 对文件系统事件的支持需要安装非默认的 IBM包。该软件包提供了由autoconfIBM 文档 更详细地描述了该包。

z/OS 注释

z/OS 编译需要安装ZOSLIB 。使用CMake构建时,使用标志指定ZOSLIB-DZOSLIB_DIR的路径:

$ (cd build && cmake .. -DBUILD_TESTING=ON -DZOSLIB_DIR=/path/to/zoslib)
$ cmake --build build

z/OS 创建 System V 信号量和消息队列。除非事件循环关闭,否则这些在进程终止后会持续存在于系统中。

使用ipcrm命令手动清理 System V 资源。

补丁

请参阅贡献指南

[/hidecontent]

 
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
分析师:新款iphone17可能会采用更小的动态岛
统一签发“网号”“网证” !国家网络身份认证公共服务管理办法公开征求意见
太阳再次爆发X级耀斑打破2017年纪录,有何影响?专家分析
金融“威”力特色金融产品 | 中信银行跨境电商e贷
全副武装上岗 对设备“望闻问切”

首页

分类

定制方案

消息

我的