Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

Compilar Firefox con código en Rust

En mayo de 2015, el lenguaje de programación Rust alcanzó su objetivo de estabilidad 1.0 y se comenzaron diversos experimentos que consistieron en escribir partes de Gecko en Rust. Esta página contiene una guía de orientación aproximada para las personas que trabajan en esta área.

Consulte el informe n.º 1135640 (oxidation) para ver el seguimiento integral de la integración de componentes en el lenguaje Rust.

Activación del código en Rust

Con el trabajo realizado en el informe n.º 1161339 se implementó compatibilidad básica para compilar código en Rust. Esta compatibilidad está activada para las compilaciones oficiales de la mayoría de las plataformas, con la excepción de las compilaciones que realice localmente. Si en su «path» tiene «rustc», puede añadir:

ac_add_options --enable-rust

… a su archivo mozconfig y la compilación probablemente funcionará. Normalmente apuntamos a versiones estables de Rust pero, en ocasiones, para admitir algunas plataformas nuevas se necesitan versiones especiales de las herramientas de compilación. Si aún no tiene Rust, utilice la herramienta «rustup» para instalarlo.

Poner a prueba el código en Rust

En el árbol hay una sencilla prueba unitaria de vinculación. Es posible utilizarla para comprobar que Rust esté activado y funcione correctamente con su configuración de compilaciones.

./mach gtest rust.*

Revise que la prueba rust.CallFromCpp se supere, junto con cualquier otra que haya.

Adición de código en Rust

Para agregar código nuevo en Rust se requiere añadir el archivo .rs de nivel superior para agruparlo en un cajón (crate) de SOURCES en moz.build.

Debido a límites de Cargo y al sistema de compilaciones de Firefox, por el momento solo admitimos cajones sencillos, sin dependencias. No empleamos Cargo, sino que creamos un archivo rlib a partir de todos los archivos rust enumerados en SOURCES. El compilador de Rust buscará los módulos internos según los nombres de archivo de código fuente, pero las referencias de extern crate no se resolverán.

El sistema de compilaciones generará un cajón especial para una «biblioteca unificada de Rust», compilada como una biblioteca estática (librul.a) que a su vez se enlaza en XUL, de modo que todos sus símbolos públicos estén disponibles para el código en C++.

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: fitojb
 Última actualización por: fitojb,