Iroh 的 Foreign Function Interface (FFI) 绑定
此仓库定义了由 Rust 编写的 iroh (GitHub: iroh) 的 Python 和 Swift 绑定。
这是一个“二级”仓库,这意味着这是一个我们关心的仓库,但我们不会像“一级”仓库那样进行同样层级的要求。所有工作都通过拉取请求完成,并且必须通过持续集成,但同行评审流程会更宽松,我们对问题的响应速度也不会像一级仓库那样快。
如果您遇到了阻碍,或者需要将问题提出来,请联系 iroh discord。
我们 没有 承诺按计划发布 FFI 的发行版,或者与 iroh 的最新版本同步发布,但我们尽力而为。最新版本的 iroh
(或 GitHub 上发布的最新版本的 iroh-ffi
)和发布的 Python 或 Swift FFI 语言的匹配版本之间可能存在差距。
如果目前存在差距,并且您需要发布的 Python 或 Swift 包,请提交问题或通过我们的 discord 联系我们。
运行 cargo build --release
将生成动态库和静态库。
针对旧版本的 macOS 进行构建时,请使用以下命令: MACOSX_DEPLOYMENT_TARGET=10.7 && cargo build --target x86_64-apple-darwin --release
。
- 运行
make_swift.sh
。 - 在项目的
通用
设置中将IrohLib
添加为框架、库和嵌入内容
下的本地包依赖项。 - 运行
Build
- 确认它现在在
框架、库和嵌入内容
下列出,如果不是,点击+
再次,并将其从列表中添加。 - 将
SystemConfiguration
添加为框架。 - 现在您可以用标准的导入语句(如
import IrohLib
)在 Swift 中导入库。
- 为 Python 开发和打包安装
maturin
。 - 使用
pip
安装uniffi-bindgen
。 maturin develop
将构建您的包- maturin 期望您使用
virtualenv
来管理虚拟环境
调用 maturin build
将在 target/wheels
中构建 wheel。这可能在您的特定平台上才能工作。要为 Linux 构建可移植 wheel,请使用
docker run --rm -v $(pwd):/mnt -w /mnt quay.io/pypa/manylinux2014_x86_64 /mnt/build_wheel.sh
- 确保已安装
iroh
,运行pip install iroh
- 用
python3 main.py --help
运行
请查看我们的DEVELOPERS.md文件,其中包含如何从iroh Rust API转换为iroh FFI API的指南,以及如何为golang和python设置测试的说明。
本项目使用以下之一进行许可:
- Apache许可证版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
您自行选择。
除非您明确声明,否则根据Apache-2.0许可证定义的任何您有意提交以包含在此项目中的贡献,将根据上述条件双重许可,不附加任何额外条款或条件。