Desarrolladores de Async Rust están buscando optimizaciones para reducir el tamaño del código binario, un problema especialmente relevante en entornos con recursos limitados como microcontroladores. El problema surge porque el uso de Async Rust introduce una cantidad significativa de 'bloat' o código innecesario, incluso en sistemas con más memoria y potencia de cálculo. El autor del artículo, un desarrollador, ha propuesto un 'Project Goal' para mejorar la optimización de Async Rust en el compilador. La investigación revela que las funciones async generan una cantidad considerable de código MIR (360 líneas para una función simple), y que el compilador crea estados (Unresumed, Returned, Panicked, Suspend0, Suspend1) para gestionar la ejecución asíncrona. Una posible optimización sería eliminar el estado 'Returned' y retornar 'Pending' en lugar de generar una excepción, lo que podría reducir el tamaño del código binario en un 2-5%. También se propone eliminar el estado 'Panicked' para optimizar aún más, y simplificar la generación de código para funciones simples, eliminando estados innecesarios. Aunque LLVM (el compilador) realiza algunas optimizaciones, no siempre es suficiente para eliminar todo el código innecesario, especialmente en código asíncrono complejo.
