L'écriture de parsers est un exercice intéressant, mais dangereux: on ne compte plus les erreurs d'implémentations, vulnérabilités et crashes en production causés par des parsers. En utilisant la méthode des parser combinators et la gestion mémoire de Rust, on évitera tous ces écueils.
Les développeurs ont longtemps hésités entre les générateurs de parsers, comme lex et yacc, et l'écriture à la main, de préférence en C. On sait maintenant que les générateurs sont souvent limités, et que les parsers manuels sont complexes et souvent vulnérables. En appliquant l'approche des parser combinators, plus flexibles que les générateurs, et plus précis que les parsers manuels, on obtient des parsers simples à développer et maintenir. En utilisant la gestion mémoire garantie par le compilateur Rust, on peut pousser la performance du décodage à ses limites, par exemple par du parsing "zero copy", d'où la bibliothèque de parsers "nom".
Cette conférence décrit les astuces fournies par le langage Rust, et comment on peut les appliquer pour obtenir du code sûr et performant avec peu d'effort. On abordera aussi les parties théoriques des langages et parsers, ainsi que les (mauvaises) pratiques des formats de fichier actuels. Enfin, on étudiera les outils conçus pour aider au développement et à la maintenance de parsers.
► Watch the video