modelar toda la lógica de un build. Rust para la gestión de tareas, "the engine": • Lanzar procesos con concurrencia • Escribir/leer al caché • Observar el sistema de archivos para cambios
Slow" (Anthony Shaw): • Compilación ◦ Hay una etapa de interpretación ◦ Bytecode no está siempre optimizado • Recolector de basura • Limites a la concurrencia ◦ GIL (global interpreter lock)
el GIL, pero hay gastos • threading ◦ todavía tiene el GIL ◦ es útil cuando I/O-bound, no tanto cuando CPU-bound • asyncio http://masnun.rocks/2016/10/06/async-python-the-different-forms-of-concurrency/
las optimizaciones, todavía gastaba 80% del tiempo en la gestión de tareas • Queriamos usar asyncio, pero con más control y sin el GIL • Tenemos estructuras de datos enormes -> control de la memoria
vulnerabilidades severos de Android 2 • 74% de vulnerabilidades de Firefox Style Component 3 1. https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/ 2. https://security.googleblog.com/2021/04/rust-in-android-platform.html 3. https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/ Vulnerabilidades de memoria son comunes
| let s1 = String::from("hello"); | -- move occurs because `s1` has type `String`, which does not implement the `Copy` trait 3 | let s2 = s1; | -- value moved here 4 | 5 | println!("{}, world!", s1); | ^^ value borrowed here after move Rust - seguridad de memoria sin un recolector de basura El compilador checa la seguridad de memoria a través de su "borrow checker".
de concurrencia—incluyendo carreras de datos—a través de su "borrow checker". error[E0373]: closure may outlive the current function, but it borrows `v`, which is owned by the current function --> src/main.rs:6:32 | 6 | let handle = thread::spawn(|| { | ^^ may outlive borrowed value `v` 7 | println!("Aquí hay un vector: {:?}", v); | - `v` is borrowed here
Intenten optimizar, prueben PyPy/Numba, y tal vez antes la concurrencia de Python. 3. Las extensiones nativas en Rust ofrecen rendimiento seguro y accesible. Rust + Python están listos para la producción.