000125560 001__ 125560
000125560 005__ 20230420124056.0
000125560 037__ $$aTAZ-TFG-2022-2369
000125560 041__ $$aspa
000125560 1001_ $$aOrtiz Manero, Mario
000125560 24200 $$aDynamic loading of plugins in Rust in the absence of a stable Application Binary Interface
000125560 24500 $$aCargado dinámico de plugins en Rust en ausencia de estabilidad en la Interfaz Binaria de Aplicación
000125560 260__ $$aZaragoza$$bUniversidad de Zaragoza$$c2022
000125560 500__ $$aResumen disponible también en inglés. Con la colaboración de Tremor (https://www.tremor.rs/) y financiado por Wayfair (https://www.wayfair.com/).
000125560 506__ $$aby-nc-sa$$bCreative Commons$$c3.0$$uhttp://creativecommons.org/licenses/by-nc-sa/3.0/
000125560 520__ $$aLa toma de decisiones de muchas empresas modernas como Wayfair se basa en la recolección y análisis de datos de sus sistemas. Para llevarlo a cabo de forma eficiente en una escala masiva, deben usarse herramientas de alto rendimiento como Tremor, escrito con Rust, programación asíncrona con hilos y SIMD.<br />A medida que Tremor evoluciona, sus tiempos de compilación crecen y, consecuentemente, se deteriora la experiencia de desarrollo. Esto se puede aliviar implementando un sistema de plugins que divide su único binario en componentes más pequeños compilables independientemente.<br />Existen múltiples tecnologías disponibles para su desarrollo: lenguajes interpretados, WebAssembly, eBPF, comunicación inter-proceso o cargado dinámico. Sin embargo, muchas de ellas deben descartarse por no cumplir los estándares de eficiencia de Tremor. Entre las alternativas restantes, se escoge cargado dinámico por ser la más usable y popular.<br />El cargado dinámico es imposible con tipos y funciones declarados con Rust puro, ya que su Interfaz Binaria de Aplicación (ABI) no es estable. Es necesario convertir los tipos al ABI de C, que sí es estable, y viceversa. Para facilitar el proceso, se pueden aprovechar librerías existentes y herramientas del lenguaje como macros procedurales.<br />Dado que el cargado dinámico en Rust es un ecosistema muy nuevo, se debe contribuir en código abierto a gran cantidad de dependencias de Tremor para implementar la funcionalidad necesaria para un sistema de plugins. La complejidad del proyecto incrementa significativamente respecto al plan original, por lo que, aunque funcional, la implementación no alcanza alguno de los objetivos iniciales, principalmente relacionados con el rendimiento. Sin embargo, sirve como una buena base para futuras versiones de Tremor que sí que lo incluyan en producción y continuará evolucionando con el programa.<br /><br />
000125560 521__ $$aGraduado en Ingeniería Informática
000125560 540__ $$aDerechos regulados por licencia Creative Commons
000125560 700__ $$aWahl, Matthias$$edir.
000125560 7102_ $$aUniversidad de Zaragoza$$bInformática e Ingeniería de Sistemas$$cLenguajes y Sistemas Informáticos
000125560 7202_ $$aFabra Caro, Francisco Javier$$eponente
000125560 8560_ $$f778332@unizar.es
000125560 8564_ $$s2506979$$uhttps://zaguan.unizar.es/record/125560/files/TAZ-TFG-2022-2369.pdf$$yMemoria (spa)
000125560 909CO $$ooai:zaguan.unizar.es:125560$$pdriver$$ptrabajos-fin-grado
000125560 950__ $$a
000125560 951__ $$adeposita:2023-04-20
000125560 980__ $$aTAZ$$bTFG$$cEINA
000125560 999__ $$a20220622185621.CREATION_DATE