Reescrevendo o parser de Ruby
(railsatscale.com)- A Shopify desenvolveu um novo parser de Ruby chamado YARP
- No estágio atual, ele já consegue fazer o parsing do código principal da Shopify/GitHub e dos 100 gems mais populares do RubyGems da mesma forma
- A aprovação para merge no CRuby foi concedida
- Os problemas do parser existente do CRuby podem ser classificados, em linhas gerais, em quatro categorias
- Manutenibilidade: não há documentação, e ele é complexo, o que dificulta mudanças
- Tolerância a erros: existe uma pequena margem de tolerância, mas mesmo erros triviais impedem a geração da árvore sintática
- Portabilidade: o parser é profundamente acoplado ao interior do CRuby, então não pode ser usado em outras ferramentas
- Desempenho: é difícil introduzir técnicas avançadas de otimização
- Desenvolvimento do YARP
- Escrito em C
- Um Recursive Descent Parser escrito manualmente (é a tendência atual nas principais linguagens; gcc/golang também migraram do Bison)
- Tentaram manter a mesma árvore sintática do CRuby, mas decidiram projetar uma árvore própria
- Consegue fazer o parsing de 50 mil arquivos Ruby da Shopify em apenas 4,49 segundos (memória de pico de 10,94 MB)
- Daqui para frente
- Está previsto integrar o YARP a vários runtimes Ruby
- Pretendem continuar melhorando velocidade, uso de memória e precisão
- Matz e a equipe do CRuby concordaram em incluí-lo como biblioteca no Ruby 3.3 (com lançamento previsto para este dezembro)
- YARP: Yet Another Ruby Parser
Ainda não há comentários.