Reglas de Compilación (Build)
El sistema de compilación de Android (Soong) es compatible con Rust a través de una serie de módulos:
Tipo de módulo | Descripción |
---|---|
rust_binary | Produce un binario de Rust. |
rust_library | Produce una biblioteca de Rust y proporciona las variantes rlib y dylib . |
rust_ffi | Produce una biblioteca de Rust C que pueden usar los módulos cc y proporciona variantes estáticas y compartidas. |
rust_proc_macro | Produce una biblioteca de Rust proc-macro . Son similares a complementos del compilador. |
rust_test | Produce un binario de prueba de Rust que utiliza el agente de prueba estándar de Rust. |
rust_fuzz | Produce un binario de fuzz de Rust que aprovecha libfuzzer . |
rust_protobuf | Genera código fuente y produce una biblioteca Rust que proporciona una interfaz para un protobuf en particular. |
rust_bindgen | Genera código fuente y produce una biblioteca de Rust que contiene enlaces de Rust a bibliotecas de C. |
A continuación, hablaremos de rust_binary
y rust_library
.
Otros elementos que puede mencionar el orador:
-
Cargo no está optimizado para los repositorios en varios lenguajes y también descarga paquetes de Internet.
-
Por razones de cumplimiento y rendimiento, Android debe tener crates en estructura de árbol. También debe existir interoperabilidad con el código C, C++ y Java. Soong cumple estos requisitos.
-
Soong tiene muchas similitudes con Bazel, que es la variante de código abierto de Blaze (se utiliza en google3).
-
Está previsto hacer la transición de Android, ChromeOS y Fuchsia a Bazel.
-
Aprender reglas de compilación similares a Bazel es útil para todos los desarrolladores del SO de Rust.
-
Dato curioso: los datos de Star Trek son un Android de tipo Soong.