本章为《Rust FFI 开发系列教程》的序言。
FFI (Foreign Function Interface) 是 Rust 中非常重要的一个部分。Rust 本身的一个定位——系统开发的能力——赋予它(FFI)在Rust整个生态中一个特殊的地位。
FFI 主要在两个大的领域起作用:
系统开发;
跨语言开发。
我们此处定义的系统开发,有较丰富的意义,包括但不限于:
对 OS 系统调用的封装;
对系统底层 C 库的封装;
广泛平台的嵌入式/IoT 开发;
OS 开发;
充分利用现代硬件平台的性能优势;
跨语言开发的意思是,可以使用 Rust 语言为其它(几乎任何)语言写调用库。主要分为:
利用 C ABI 进行跨语言调用;
利用 Wasm 进行跨语言调用;
FFI 的基本概念和基本原理
Rust 标准库中对 FFI 支持的基础设施准备
使用 libc crate 进行 FFI 增强支持
使用 nix crate 进行类 unix 系统开发
使用 rust-bindgen 进行自动 C 库封装,生成 *-sys crate
Rust 对不同硬件平台的支持
Rust 到各平台的交叉编译
使用 Rust FFI 进行嵌入式平台开发
使用 Rust FFI 进行 GPU 编程
使用 Rust FFI 进行高性能计算编程
使用 Rust FFI 为 C/C++ 写调用库(跨平台开发)
使用 cbindgen 为 C/C++ 自动生成调用库头文件
使用 Rust FFI 为 Python 写调用库
使用 Rust FFI 为 Ruby 写调用库
使用 Rust FFI 为 Nodejs 写调用库
使用 Rust FFI 为 Php 写调用库
使用 Rust FFI 为 Go 写调用库
使用 Rust FFI 为 Java 写调用库
使用 Rust + Wasm 为 C/C++ 写调用库
使用 Rust + Wasm 为 Python 写调用库
使用 Rust + Wasm 为 Ruby 写调用库
使用 Rust + Wasm 为 Nodejs 写调用库
使用 Rust + Wasm 为 Php 写调用库
使用 Rust + Wasm 为 Go 写调用库
使用 Rust + Wasm 为 Java 写调用库
一些比较知名的 FFI 封装 crate
后记-结语
大纲是预定的,不排除在未来写作过程中,随时调整。
如大纲所见,Rust 从设计之初就定位一门系统级编程语言,Rust FFI 在实现这一目标的过程中,起着特殊而重要的作用。利用 FFI,Rust 终能迅速切入巨大的存量遗产,同时也能牢牢把握新兴增量领域。或许再过几年时间,大家就能看出来 Rust 吉祥物的意义——一只螃蟹——橫着走。
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。