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óduloDescripción
rust_binaryProduce un binario de Rust.
rust_libraryProduce una biblioteca de Rust y proporciona las variantes rlib y dylib.
rust_ffiProduce una biblioteca de Rust C que pueden usar los módulos cc y proporciona variantes estáticas y compartidas.
rust_proc_macroProduce una biblioteca de Rust proc-macro. Son similares a complementos del compilador.
rust_testProduce un binario de prueba de Rust que utiliza el agente de prueba estándar de Rust.
rust_fuzzProduce un binario de fuzz de Rust que aprovecha libfuzzer.
rust_protobufGenera código fuente y produce una biblioteca Rust que proporciona una interfaz para un protobuf en particular.
rust_bindgenGenera 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.