Les machines à états finis comme structures de données : indexation de milliards d'URL

2025-08-14

Cet article explore l'utilisation des machines à états finis (FSM) comme structures de données pour représenter des ensembles et des mappages ordonnés, en montrant l'efficacité du crate fst de Rust pour construire des index. Il approfondit la construction des FSM, couvrant la construction de Trie et de FSA, et démontre l'indexation de plus de 1,6 milliard d'URL de l'archive Common Crawl de juillet 2015. Des techniques telles que le mappage mémoire, l'intersection d'automates avec des expressions régulières, la recherche floue avec la distance de Levenshtein et les opérations d'ensemble en streaming sont également discutées. L'auteur construit et compare les performances de FST par rapport à d'autres schémas de compression (gzip, xz) sur plusieurs ensembles de données de tailles et de caractéristiques variées.

Lire plus
Développement Indexation

Panic et unwrap() en Rust : quand et comment les utiliser ?

2025-05-21

Cet article examine en détail l'utilisation de `panic` et `unwrap()` dans le langage de programmation Rust. L'auteur soutient que `panic` ne doit pas être utilisé pour la gestion générale des erreurs, mais comme un signal d'erreur dans le programme. `unwrap()` est acceptable dans les tests, les exemples de code et les prototypes, mais doit être utilisé avec prudence en production car il peut entraîner des plantages du programme. L'auteur explique en détail les invariants d'exécution et pourquoi il n'est parfois ni possible ni souhaitable de déplacer tous les invariants vers des invariants de compilation. Enfin, l'auteur recommande d'utiliser `expect()` plutôt que `unwrap()` lorsque cela est possible et discute de l'opportunité d'utiliser un linter contre `unwrap()`.

Lire plus
Développement