Reescribiendo el parser de Ruby
(railsatscale.com)- Shopify desarrolló un nuevo parser de Ruby llamado YARP
- En su estado actual, puede hacer el mismo parsing del código principal de Shopify/GitHub y de las 100 gems más populares de RubyGems
- Se aprobó su merge en CRuby
- El parser existente de CRuby puede clasificarse en aproximadamente 4 tipos de problemas
- Mantenibilidad: no tiene documentación y es complejo, por lo que es difícil de modificar
- Tolerancia a errores: tiene un pequeño margen de tolerancia, pero incluso con errores menores no se genera un árbol sintáctico
- Portabilidad: el parser está profundamente acoplado al interior de CRuby, por lo que no puede usarse en otras herramientas
- Rendimiento: es difícil incorporar técnicas avanzadas de optimización
- Desarrollo de YARP
- Escrito en C
- Un Recursive Descent Parser escrito a mano (es la tendencia actual en los principales lenguajes; gcc/golang también cambiaron desde Bison)
- Se intentó mantener el mismo árbol sintáctico que CRuby, pero se decidió diseñar su propio árbol
- Puede parsear 50 mil archivos Ruby de Shopify en solo 4.49 segundos (memoria pico de 10.94Mb)
- A futuro
- Planean integrar YARP en varios runtimes de Ruby
- Seguirán mejorando la velocidad, el uso de memoria y la precisión
- Matz y el equipo de CRuby acordaron incluirlo como librería en Ruby 3.3 (previsto para lanzarse este diciembre)
- YARP: Yet Another Ruby Parser
Aún no hay comentarios.